We have the data warehouse db, so no foreign key constraint between parent and child.
there probably should be...
http://asktom.oracle.com/Misc/stuck-in-rut.html (and not just for materalized views, for optimization in general, you need constraints in your warehouse to make things go faster...)
and since you are slow by slow processing, it is almost as if you are a transactional system anyway, you need these constraints for data integrity.
rather than slowly processing things slow by slow as you are - trying to do it all yourself, why not use external tables and BULK SQL
http://www.youtube.com/watch?v=2jWq-VUeOGs Just use SET BASED SQL to to merge all of the data in one statement, or if appropriate, use a create table as select (assuming some partitioning in play here) to create the new set of data and exchange partitions to put it into action.
a for update clause locks a row. a lock table command would lock a table. but if you keep up this slow by slow processing, this will make it even more painfully slow than it is.