I have read several of the excellent articles here by SantaMufasa on Redo Logs. Having said that, I am still left with a problem. Here's the rough outline of what goes on:
We need to temporarily store several megabytes (2-50) of data in a table for the single purpose of passing the data from the database to external software. (it cannot handle PL/SQL tables/arrays). We have been trying to minimize the impact of this on the redo logs without much success. Here's the setup, and it is all performed as a single transaction:
External Program (on webserver):
Begin Transaction
Calls PL/SQL Package to load result set into temp table
Select result set and write to file on webserver
End Transaction (ROLLBACK)
I now understand why the Redo Logs may see this data (usually only when the Log Buffer can't hold all the changes I think). However, when we write/rollback 100Mb of data, we end up cycling through 1.6Gb of redo logs (16 x 100Mb)! We performed this in a stand-alone environment to ensure no other transactions where occurring.
My final questions:
1. Is there any way to prevent/minimize this transaction from hitting the redo logs? We don't need to see this in recovery. (I think the answer here is "no").
2. Why would loading 100Mb of data generate 1.6Gb of redo logs?
Thanks in advance for any help/information,
Rich
____________________________
Rich Tefft
PL/SQL Programmer
We need to temporarily store several megabytes (2-50) of data in a table for the single purpose of passing the data from the database to external software. (it cannot handle PL/SQL tables/arrays). We have been trying to minimize the impact of this on the redo logs without much success. Here's the setup, and it is all performed as a single transaction:
External Program (on webserver):
Begin Transaction
Calls PL/SQL Package to load result set into temp table
Select result set and write to file on webserver
End Transaction (ROLLBACK)
I now understand why the Redo Logs may see this data (usually only when the Log Buffer can't hold all the changes I think). However, when we write/rollback 100Mb of data, we end up cycling through 1.6Gb of redo logs (16 x 100Mb)! We performed this in a stand-alone environment to ensure no other transactions where occurring.
My final questions:
1. Is there any way to prevent/minimize this transaction from hitting the redo logs? We don't need to see this in recovery. (I think the answer here is "no").
2. Why would loading 100Mb of data generate 1.6Gb of redo logs?
Thanks in advance for any help/information,
Rich
____________________________
Rich Tefft
PL/SQL Programmer