如何获取Oracle数据库中所有最后修改表的列表?
问题描述:
select ora_rowscn from table_name;
ORA_ROWSCN
返回对该行的最近更改的保守上限系统更改数(SCN)。这个伪列对于确定上一次更新行的时间很有用。如何获取Oracle数据库中所有最后修改表的列表?
如何从这里获取时间戳?此外,是否有任何查询我可以在特定的架构中获取所有最后修改的表?
答
SCN_TO_TIMESTAMP
将作为参数的数字计算为系统更改号(SCN),并返回与该SCN关联的近似时间戳。
SELECT SCN_TO_TIMESTAMP(ORA_ROWSCN)
FROM employees
WHERE employee_id = 188;
如果您有10g或更高版本,您可以使用Oracle的闪回功能获取此信息。你需要启用闪回;
select table_name ,max(commit_timestamp)
from FLASHBACK_TRANSACTION_QUERY
where table_owner = 'YOUR_SCHEMA'
and operation in ('INSERT','UPDATE','DELETE','MERGE')
group by table_name
答
应该没有必要参与SCNs的问题。为什么不干脆:
begin dbms_stats.flush_database_monitoring_info; end;
select * from dba_tab_modifications
where timestamp >= sysdate - 7
order by timestamp desc;
除非你(?愚蠢),只有BASIC
统计级别运行(默认为TYPICAL
,这是更高),这应该在任何11g数据库或更高版本的做工精细。
请注意您需要priveleges才能运行FLASHBACK_TRANSACTION_QUERY – Moudiz