Oracle schema migration to new database with zero downtime
This is by no means the only way or necessarily the best way.  You should consider streams and GoldenGate as well, but if at least one application is designed to use packages and access the data only through those packages, consider the following:


Create a new database and setup views of the original database's tables for one schema using a database link.  
Copy the package code for the application using that schema to the new database.  
Switch that application to use the new database.  It should work exactly the same, except that it will be slower due to the link.
For each table or group of related tables, add package code that for each database call that maintains data in both the local and remote tables.  There are many ways you could do this.  One way would be to have a switch table with a row for each application table.  You could make a replication routine for the table and when the tables are in sync it could update the switch table to let the code know that it doesn't need to maintain both tables.  


Yes, this is complex, and yes it would take a lot of time and testing, but given a requirement of zero down time, it should be expected.