sql >> Databasteknik >  >> RDS >> Oracle

Hur tar man reda på när en viss tabell skapades i Oracle?

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

kommer att berätta när en tabell skapades (om du inte har tillgång till DBA_OBJECTS kan du använda ALL_OBJECTS istället förutsatt att du har SELECT-behörigheter på bordet).

Det allmänna svaret på att få tidsstämplar från en rad är dock att du bara kan få den informationen om du har lagt till kolumner för att spåra den informationen (förutsatt att din applikation också fyller kolumnerna). Det finns dock olika specialfall. Om DML inträffade relativt nyligen (mest troligt under de senaste timmarna), bör du kunna få tidsstämplarna från en flashback-fråga. Om DML hände under de senaste dagarna (eller hur länge du behåller dina arkiverade loggar), kan du använda LogMiner för att extrahera tidsstämplarna, men det kommer att bli en mycket dyr operation, särskilt om du får tidsstämplar för många rader. Om du bygger tabellen med ROWDEPENDENCIES aktiverat (inte standard), kan du använda

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

för att få det senaste ändringsdatumet och SCN (systemändringsnummer) för raden. Som standard, utan ROWDBEROENDE, är SCN endast på blocknivå. SCN_TO_TIMESTAMP Funktionen kommer inte heller att kunna mappa SCN:er till tidsstämplar för alltid.



  1. Pivotera på flera kolumner med Tablefunc

  2. Hur man ansluter till SQL-serverdatabas från en Windows 10 UWP-app

  3. Undvik nummerkonflikter med Microsoft SQL-sekvenser

  4. Hur man ställer in boolvärde i SQL