Massive Deployment Script w/ 1.5 million DELETE Statements
jwortham
Posts: 2
I’m using the Oracle Data Compare 2 tool to migrate configuration data from a DEV system to a PROD system and everything seems to be working beautifully right up until the deployment process. The script created from the output is ~453MB and as such I’m unable to open it in SQL Plus or Oracle SQL Developer; thus I’m resigned to deploy it using Red Gate’s built in deployment function. When doing this, the deployment progress bar gets to 63% in ~20 minutes and after that it appears to be taking an hour per percentage point after.
I've doing a bit of digging I've noticed that of the 2.3 million lines in the resulting deployment script, ~1.55 million of them are DELETE statements. However, I'm unclear why there would be so many DELETE statements. I don't have any of the "Target Only" columns unchecked when detailing what's going to be merged so everything should either be UPDATE or INSERT statements.
Because Oracle does such extensive logging on delete it makes sense that once the deployment process reached that spot that it would grind to a near screeching hault. Unfortunately, there is no way to disable logging on deletes in Oracle.
I'm really hoping for some assistance as I'd prefer not to have to wait 27+ hours for the deployment to process (I'm going to have to do it 2 or 3 times too, while we test the merge).
Some additional details that might help:
I've doing a bit of digging I've noticed that of the 2.3 million lines in the resulting deployment script, ~1.55 million of them are DELETE statements. However, I'm unclear why there would be so many DELETE statements. I don't have any of the "Target Only" columns unchecked when detailing what's going to be merged so everything should either be UPDATE or INSERT statements.
Because Oracle does such extensive logging on delete it makes sense that once the deployment process reached that spot that it would grind to a near screeching hault. Unfortunately, there is no way to disable logging on deletes in Oracle.
I'm really hoping for some assistance as I'd prefer not to have to wait 27+ hours for the deployment to process (I'm going to have to do it 2 or 3 times too, while we test the merge).
Some additional details that might help:
-
Oracle Version: 11g
Table Differences: 309
Tables Selected for Deployment: 239
Rows Selected for Deployment: 1,806,407 of 2,380,892
Deployment Script Size: 422MB
Total Number of Insert and Update Lines: 758,970
Total Number of Delete Lines: 1,554,123
Comments
For anybody else interested, when the target only check-box is checked it means that we include these "differences" in the deployment script. Including differences where the data only appears in the target means we drop those rows.
Just to avoid confusion it is explained in detail here:
http://www.red-gate.com/supportcenter/content/Data_Compare_for_Oracle/help/2.1/dco_SettingUpTheSynchronization
There are also a couple of ways of breaking large deployment scripts into smaller ones. You can either select which tables to compare, or use a where clause on an individual table.
Michael Christofides
Product Manager - Oracle tools