2017-10-18 3 views
2
select ora_rowscn from table_name; 

ORA_ROWSCNは、行に対する最新の変更の控えめな上限システム変更番号(SCN)を返します。この擬似列は、行が最後に更新されたときの概算に役立ちます。Oracleデータベース内の最後に変更されたすべてのテーブルのリストを取得するにはどうすればよいですか?

ここからタイムスタンプを取得するにはどうすればよいですか?また、特定のスキーマで最後に変更されたテーブルをすべて取得できるクエリがありますか?

答えて

1

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 
+0

FLASHBACK_TRANSACTION_QUERYを実行するには特典が必要です – Moudiz

0

あなたが求めていることについてSCNに関わる必要はありません。なぜだけでなく:

begin dbms_stats.flush_database_monitoring_info; end; 

select * from dba_tab_modifications 
where timestamp >= sysdate - 7 
order by timestamp desc; 

するとあなたは(?愚か)(デフォルトは高いTYPICAL、である)のみBASIC統計レベルで実行されていない限り、これはどの11gデータベース以降で正常に動作する必要があります。

関連する問題