Re: How to use LBU_PRESERVE
Posted in 1996
Jerry Tan wrote: > How do I use the configuration parameter LBU_PRESERVE to prevent the > logical log full? Can it be used in 7.10.UC1? Jerry, let's take that one question at a time. But backwards. LBU_PRESERVE was introduced in 7.10.UD1. NOw as to how it works: Suppose you have configured 10 logical logs. (I *wish* Informix had called them transaction logs) and set LBU_PRESERVE=0. A few rougue transactions start up and fill up log files number 1-8. Whoops! One has just passed the LTX_HWM mark and we start rolling it back, writing rollback records to the log as we roll merrily back. Meantime, the other tracations have also run afoul of the LTX_HWM and we start rolling them back as well. Because the transactions were so big, rolling them back takes lotsa log space. Eventually, the log fills up and the system freezes. Yer STUCK! Worse yet, if the OS should crash at this time, the OnLine system will never be able to recover because fast recovery executes a checkpoint, which requires log space. Now, suppose you had set LBU_PRESERVE=1; the system freezes when 9 of the 10 logs are full. However, checkpoints can still happen because the system will still use the last log for internal admin purposes. Including, BTW, a rollback (so it ain't perfect yet). Therefore, if the OS should crash, we CAN run fast recovery, because the last log is still available for the fast-recovery checkpoint record. Another BTW: I have been preaching for years that people should set LTX_HWM <= 40 and LTX_HWME <= 45. This way, if you are faithfully backing up your logs (continuous backup), even if 10 rogue transactions have cropped up in your system, the logs will never fill as a result of long transactions. -- Jake Salomon