【发布时间】:2017-10-18 13:35:29
【问题描述】:
select ora_rowscn from table_name;
ORA_ROWSCN 返回对行的最近更改的保守上限系统更改数 (SCN)。这个伪列对于确定行最后一次更新的大致时间很有用。
如何从这里获取时间戳?另外,是否有任何查询可以让我获得特定架构中所有最后修改的表?
【问题讨论】:
标签: oracle timestamp last-modified sql-timestamp
select ora_rowscn from table_name;
ORA_ROWSCN 返回对行的最近更改的保守上限系统更改数 (SCN)。这个伪列对于确定行最后一次更新的大致时间很有用。
如何从这里获取时间戳?另外,是否有任何查询可以让我获得特定架构中所有最后修改的表?
【问题讨论】:
标签: oracle timestamp last-modified sql-timestamp
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
【讨论】:
对于您的要求,您无需参与 SCN。为什么不只是:
begin dbms_stats.flush_database_monitoring_info; end;
select * from dba_tab_modifications
where timestamp >= sysdate - 7
order by timestamp desc;
除非您(愚蠢地?)仅使用BASIC 统计级别(默认为TYPICAL,该级别更高)运行,否则这在任何 11g 或更高版本的数据库中都可以正常工作。
【讨论】: