We have a system with 20 logical logs (4096 Kb size each one). we have a problem with a SQL statment (alter table) because these logical logs seems to be full and the database do a roll back. Is it possible that this kind of sql instruction, fill all the logical logs?
Yes, you are right. Even though you have 20 logical logs only 10 will be used because you are getting into what Informix calls a "long transaction" and the IDS engine will use the remaining 10 for the rollback so it can keep track of all database activity.
I'll assume that the table you're altering is pretty large so you need to have more logical logs available.
options you have:
-A set the following database(s) to ansi logging
-B set the following database(s) to buffered logging
-N set the following database(s) to no logging
-U set the following database(s) to unbuffered logging
A little explanation:
-A : DML and DDL works only with ANSI SQL standards, theoretically if you develop your application over this standard, you can migrate to ANY database easily
-B : Works with IDS standards, transaction(*) is actived , flush of any modified data to disk is buffered (**)
-N : Works with IDS standards, transaction(*) is NOT actived , flush of any modified data to disk are executed immediately
-U : Works with IDS standards, transaction(*) is actived, the flush of any modified data to disk are executed immediately when the transaction is commited, don't matter if the buffer is full or not..
(**) look for LOGBUFF and PHYSBUFF on your $ONCONFIG file ; see the command "onstat -l"