Frage

In Oracle gibt es einen Weg, um herauszufinden, wenn eine bestimmte Tabelle erstellt wurde?

In ähnlicher Weise ist es eine Möglichkeit, um herauszufinden, wenn eine bestimmte Zeile eingefügt wurde / zuletzt aktualisiert?

War es hilfreich?

Lösung

SELECT created
  FROM dba_objects
 WHERE object_name = <<your table name>>
   AND owner = <<owner of the table>>
   AND object_type = 'TABLE'

wird Ihnen sagen, wenn eine Tabelle erstellt wurde (wenn Sie Zugriff auf DBA_OBJECTS nicht haben, können Sie ALL_OBJECTS verwenden, anstatt vorausgesetzt, Sie SELECT-Privilegien auf dem Tisch).

Die allgemeine Antwort auf den Zeitstempel von einer Reihe bekommt, ist aber, dass Sie nur die Daten erhalten können, wenn Sie Spalten hinzugefügt haben, diese Informationen zu verfolgen (vorausgesetzt natürlich, dass Ihre Anwendung die Spalten als auch auffüllt). Es gibt verschiedene Spezialfälle jedoch. Wenn die DML vor relativ kurze Zeit passiert ist (wahrscheinlich in den letzten paar Stunden), sollten Sie in der Lage sein, den Zeitstempel von einem Rückblick Abfrage zu erhalten. Wenn die DML in den letzten Tagen passiert ist (oder wie lange halten Sie Ihre archivierten Protokolle), könnten Sie LogMiner verwenden, um die Zeitstempel zu extrahieren, aber das wird eine sehr teure Operation sein besonders wenn Sie Zeitstempel für viele Zeilen sind immer. Wenn Sie die Tabelle bauen mit ROWDEPENDENCIES aktiviert (nicht Standard), können Sie

SELECT scn_to_timestamp( ora_rowscn ) last_modified_date,
       ora_rowscn last_modified_scn,
       <<other columns>>
  FROM <<your table>>

Datum der letzten Änderung und SCN (System Change Number) für die Reihe zu bekommen. In der Standardeinstellung aber ohne ROWDEPENDENCIES ist der SCN nur auf Blockebene. Die SCN_TO_TIMESTAMP Funktion ist nicht in der Lage sein zu kartieren auch SCN des auf Zeitstempel für immer.

Andere Tipps

Sie können die Daten Wörterbuch / Katalogansichten abfragen, um herauszufinden, wenn ein Objekt sowie der Zeitpunkt der letzten DDL erstellt wurde Einbeziehung des Objekts (Beispiel: alter table)

select * 
  from all_objects 
 where owner = '<name of schema owner>'
   and object_name = '<name of table>'

In der Spalte „Angelegt“ zeigt an, wann das Objekt erstellt wurde. Die Spalte „LAST_DDL_TIME“ zeigt an, wann die letzte DDL gegen das Objekt durchgeführt wurde.

Was, wenn eine bestimmte Zeile eingefügt wurde / aktualisiert wird, können Sie Audit Spalten wie eine „insert_timestamp“ Spalte verwenden oder einen Trigger verwenden und eine Audit-Tabelle füllen

SELECT CREATED FROM USER_OBJECTS WHERE OBJECT_NAME='<<YOUR TABLE NAME>>'

Sie kopieren und den folgenden Code einzufügen. Es werden alle Tabellen mit Name angezeigt und Erstellungs-Datum

SELECT object_name,created FROM user_objects
WHERE object_name LIKE  '%table_name%'
AND object_type = 'TABLE'; 

. Hinweis: Ersetzen Sie '% table_name% mit dem Tabellennamen Sie suchen

Diese Abfrage:

SELECT sysdate VON schemaname.tabellenname;

Dies sollte den Zeitstempel anzuzeigen, dass Sie benötigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top