Oldest redo log sequence required by MINE
Description
The list obsolete redo
 command lists the oldest redo log sequence that is required by the MINE process on a restart. Because of long running transactions and or locks this can sometimes be quite a few hours back:
Solution
dbvrep> list obsolete redo
Thread 1 last obsolete sequence#: 661245 (19 hours and 4 minutes ago)
To determine which transactions are causing the oldest sequence to be required, the following SQL can be run:
select s.SID, s.SERIAL#, s.USERNAME, s.PROGRAM, t.START_TIME
from v$transaction t, v$session s
where s.SADDR=t.SES_ADDR
order by t.START_TIME desc
Example output of the query:
SID SERIAL# USERNAME PROGRAM START_TIME
---------- ---------- --------------- -------- --------------------
840 45607 IE003858 08/16/13 14:52:47
331 56253 IE003858 08/16/13 14:42:00
599 32280 IE003858 08/16/13 13:28:08
89 58824 IE003858 08/16/13 13:22:45
219 48753 IE003858 08/16/13 13:22:34
Next step:
Investigate why these transactions are still running. It could be that each session is blocking each other and holding the transactions open.
Question:
How does replicate get the "list obsolete redo" information?Â
Answer:
Mine keeps track of open transactions + rows not assembled on log switch + LOBs not assembled on log switch. This gives us SCN/plog. Mine than uses SQL to convert it to redo sequences - and it can even decide that the query is too slow and that it should not do it on every log switch.Â
Arjen Visser August 18, 2013 10:11