![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
|
Hi, in a automatic process we import data from a file to a temporary table. From there, the data (around 550,000 rows per import) are inserted into the 'production' table using using some joins with the statement 'insert into ... select ...'. But the insert process terminates with the message "transaction protocol is full". Unfortunately, we can not split the data amount by id, date, client or something like that. We use udb 8.1 on a win2k system. All tables have been created with the option "not logged initially". The database uses 10 primary and 10 secondary protocol files with 5000 blocks of 4K. Is there any possibility which dont include to increase the block amount or number of files? May be a "dirty insert"? Thanks Toralf |
#2
| |||
| |||
|
|
The not logged behaviour needs to be activated per transaction. Issue ALTER TABLE ... ACTIVATE NOT LOGGED INITIALLY, then logging will disabled until a commit is issued. After that updates against that table will be fully logged again. Caution: if the not logged update fails, your table will become unavailable (rollback requires logging in DB2) If you don't want to use NOT LOGGED, take a look at the row_number() function, you should be able to use it to split up your insert in smaller chunks. Regards, Miro |
![]() |
| Thread Tools | |
| Display Modes | |
| |