First of all , let me clear my point of view.
I am working on Seamless upgrade of a project. The Project Uses hibernate and oracle.
My Task is to upgrade the db from version1 to version 2 while project is running.
In Our projects we have a packages containing trigger which will insert a row in Update_table on updating or deletion of any row of specific tables ..suppose t1, t2 , t3.
In version 2 we have some new columns in update_table, and in T1 and t2 too.
and some updates in T1,and t3.
In Upgrade of Db , I am adding column in update_table then i am adding columns in T1.t2,
then I am upgrading of all procedures and triggers by create or replace procedure.
But while updating procedures, i got blocked. it keeps on waiting for several hours.
but when i stop my project after some time , migration process start again and successfully upgrade the procedures.
for further info , My project is also changing values in 1 and t2 frequently.
but when i start my migration process , all update request goes in idle state and after some time it gives connection time out.
I am totally confused in it ..
and one more thing it runs successfully with very less request on projects for updating of table values of t1 and t2
Run the process again and when you believe that the sessions are locked either look into OEM at the locks screens or run utllockt.sql. It should be in $ORACLE_HOME/rdbms/admin.
You might need to run $ORACLE_HOME/rdbms/admin/catblock.sql first to create the views that utllockt uses.
This is not a good idea. It is advisable that you take some down time to perform the upgrade.
Originally Posted by pankajdhingra
When you update your tables to include new columns, the alter table command will acquire an exclusive DDL lock on the object. This will invalidate all of the parsed PL/SQL SQL cursors in the shared pool.
When you create new packages they will acquire a share DDL lock.
Click Here to Expand Forum to Full Width