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

ORA_ROWSCN gibt die konservative Obergrenze der Systemänderungsnummer (SCN) der letzten Änderung der Zeile zurück. Diese Pseudospalte ist nützlich, um ungefähr festzustellen, wann eine Zeile zuletzt aktualisiert wurde.Wie erhalte ich eine Liste aller zuletzt geänderten Tabellen in einer Oracle-Datenbank?

Wie bekomme ich den Zeitstempel von hier? Gibt es auch eine Abfrage, mit der ich alle zuletzt geänderten Tabellen in einem bestimmten Schema abrufen kann?

Antwort

1

SCN_TO_TIMESTAMP nimmt als Argument eine Zahl, die zu einer Systemänderungsnummer (System Change Number, SCN) ausgewertet wird, und gibt den ungefähren Zeitstempel zurück, der diesem SCN zugeordnet ist.

Wenn Sie 10g oder höher haben, können Sie die Flashback-Funktion von Oracle verwenden, um diese Informationen zu erhalten. Sie müssten Flashback aktivieren;

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

Hinweis: Sie benötigen Privilegien, um FLASHBACK_TRANSACTION_QUERY auszuführen – Moudiz

0

Es sollte nicht notwendig sein, sich mit SCNs für das zu beschäftigen, was Sie fragen. Warum nicht einfach:

begin dbms_stats.flush_database_monitoring_info; end; 

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

Es sei denn, Sie sind (? Dummerweise) nur mit BASIC Statistikebene ausgeführt wird (Standard ist TYPICAL, die höher ist), soll dies gut funktioniert in jeder 11g-Datenbank oder höher.

Verwandte Themen