Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie finde ich heraus, wann eine bestimmte Tabelle in Oracle erstellt wurde?

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

wird Ihnen mitteilen, wann eine Tabelle erstellt wurde (wenn Sie keinen Zugriff auf DBA_OBJECTS haben, können Sie stattdessen ALL_OBJECTS verwenden, vorausgesetzt, Sie haben SELECT-Berechtigungen für die Tabelle).

Die allgemeine Antwort auf das Abrufen von Zeitstempeln aus einer Zeile lautet jedoch, dass Sie diese Daten nur abrufen können, wenn Sie Spalten hinzugefügt haben, um diese Informationen zu verfolgen (vorausgesetzt natürlich, dass Ihre Anwendung die Spalten ebenfalls füllt). Es gibt jedoch verschiedene Sonderfälle. Wenn die DML vor relativ kurzer Zeit aufgetreten ist (höchstwahrscheinlich in den letzten paar Stunden), sollten Sie in der Lage sein, die Zeitstempel aus einer Flashback-Abfrage abzurufen. Wenn die DML in den letzten Tagen aufgetreten ist (oder wie lange Sie Ihre archivierten Protokolle aufbewahren), könnten Sie LogMiner verwenden, um die Zeitstempel zu extrahieren, aber das wird ein sehr teurer Vorgang, insbesondere wenn Sie Zeitstempel für viele Zeilen erhalten. Wenn Sie die Tabelle mit aktiviertem ROWDEPENDENCIES (nicht der Standardeinstellung) erstellen, können Sie

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

um das letzte Änderungsdatum und die SCN (Systemänderungsnummer) für die Zeile zu erhalten. Standardmäßig ist der SCN jedoch ohne ROWDEPENDENCES nur auf Blockebene. Der SCN_TO_TIMESTAMP -Funktion wird auch nicht in der Lage sein, SCNs für immer Zeitstempeln zuzuordnen.