First, your developers should not be developing in a database that is going to be refreshed this way. At some point before you refresh the database the developers need to create scripts that will return the objects that they are working on to the state that they want them to be in. This has got to be one of the deliverables of the development effort. Our databases have all application-centric objects owned by one of 5 "schema owners". If it's not owned by a schema owner then it's part of the Oracle "stuff" or it's end-user objects (and thus dispensable). When we want to refresh a database we drop the schema owners (with cascade) and import them, by user, from a production-like export. We actually use training, which is structurally identical to production but with 1/100th of the data. We then run the developers' scripts to return the objects to their desired states and off we go. The entire process takes less than 8 hours. If anything gets missed then the developers know that they need to update their scripts. -- //www.freelists.org/webpage/oracle-l