select distinct ora_rowscn from PLAN_TABLE;
But unless you're a database, that SCN doesn't mean much. You can put things in some sort of order, but not much more.
Much better is
select sys.scn_to_timestamp(ora_rowscn) from PLAN_TABLE;
unless it gives you
ORA-08181: specified number is not a valid system change number
which is database-speak for "I can't remember exactly".
That's when you might be able to fall back on this, plugging the SCN in place of the **** :
select * from
(select first_time, first_change# curr_change,
lag(first_change#) over (order by first_change#) prev_change,
lead(first_change#) over (order by first_change#) next_change
FROM v$log_history)
where **** between curr_change and next_change
It won't be exact, and it doesn't stretch back forever. But it is better than nothing.
PS. This isn't a perfect way to find when a row was really inserted/updated. It is probably at the block level, and there's 'stuff' that can happen which doesn't actually change the row but might still reset the SCN. If you're looking for perfection, you at the wrong blog :)
No comments:
Post a Comment