logical log recovery problem
Posted in 2003
Topics: Stored Procedures & SPL, Error Codes & Troubleshooting, Logging & Checkpoints
Hi All,
I'm getting the following error when trying to start up a database:
09:57:10 Results: Log record (OLDRSAM:HINSERT) in log 988, offset
0x3ab0098 was not rolled back
09:57:10 Action: Use 'onlog' to view the transaction and repair
manually.
09:57:10 stack trace for pid 22828202 written to /tmp/af.4162835
I'm not sure exactly how to repair the transaction manually with onlog,
it seems to only display information.
The db is a large development db, I'm not too worried about losing the
transactional data in the logs but don't want to have to reinitialize
the entire instance.
Does anyone have a better solution than oninit -iy?
Cheers,
Tosh.
Hi,
as the message log says, "onlog" utility is to _view_ the log
records. The repair has to be done _manually_ , i.e. with
manual SQL statements. The idea behind this is that you use
"onlog" to find out which transaction had the problem. Then
you can find out, what the transaction was supposed to do
(or what was supposed to be rolled back). From there you
would then figure out what needs to be done to restore
data consistency in your database ...
Admittedly, this can be a tedious procedure.
Now, for your intention (to just miss that transaction or its
roolback), you've given a bit too little information ...
Supposing that upon start up you get this error message,
but the server otherwise started and is up and running,
you would have to force a checkpoint ("onmode -c").
This should avoid that the server has to look at these
faulty log records again (e.g. during next startup).
Assuming that the server does not start but immediately
falls down again right after printing the message, I can
only recommend to contact IBM Informix Customer
Technical Support. Check out :
http://www.ibm.com/software/data/informix/support/contact.html
What they (reluctantly) can do is to cut off the transaction.
After this, upon the next startup it will be rolled forward,
but not rolled back. So you surley will have some logical
inconsistencies afterwards in your database(s).
Unfortunately there are certain circumstances where you also
can have physical inconsistencies after this procedure.
While you can live with the logical inconsistencies (as you
already indicated), the physical ones will result in serious
errors (e.g. while accessing data, etc.) later on.
And this is why Support does it reluctantly ...
Problem is, that you will find out only afterwards, when it's been
done. And these physical inconsistencies are not easy to repair ...
Based on your information provided I think these are
the options you can choose from.
Regards,
Martin
--
Martin Fuerderer
IBM Informix Development Munich
Data Management Solutions
"Tosh Baird" <Tosh.Baird@peace.com>
Sent by: forum.subscriber@iiug.org
07.08.2003 04:52
To: ids@iiug.org
cc:
Subject: logical log recovery problem [1648]
Hi All,
I'm getting the following error when trying to start up a database:
09:57:10 Results: Log record (OLDRSAM:HINSERT) in log 988, offset
0x3ab0098 was not rolled back
09:57:10 Action: Use 'onlog' to view the transaction and repair
manually.
09:57:10 stack trace for pid 22828202 written to /tmp/af.4162835
I'm not sure exactly how to repair the transaction manually with onlog,
it seems to only display information.
The db is a large development db, I'm not too worried about losing the
transactional data in the logs but don't want to have to reinitialize
the entire instance.
Does anyone have a better solution than oninit -iy?
Cheers,
Tosh.