sql >> Database teknologi >  >> RDS >> Oracle

Hvordan finder man ud af, hvornår en bestemt tabel blev oprettet i Oracle?

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

vil fortælle dig, hvornår en tabel blev oprettet (hvis du ikke har adgang til DBA_OBJECTS, kan du bruge ALL_OBJECTS i stedet, forudsat at du har SELECT-rettigheder på bordet).

Det generelle svar på at få tidsstempler fra en række er dog, at du kun kan få disse data, hvis du har tilføjet kolonner for at spore disse oplysninger (under forudsætning af selvfølgelig, at din applikation også udfylder kolonnerne). Der er dog forskellige særlige tilfælde. Hvis DML er sket relativt for nylig (sandsynligvis inden for de sidste par timer), bør du være i stand til at få tidsstempler fra en flashback-forespørgsel. Hvis DML er sket inden for de sidste par dage (eller hvor længe du beholder dine arkiverede logfiler), kan du bruge LogMiner til at udtrække tidsstemplerne, men det bliver en meget dyr operation, især hvis du får tidsstempler for mange rækker. Hvis du bygger tabellen med ROWDEPENDENCIES aktiveret (ikke standard), kan du bruge

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

for at få den sidste ændringsdato og SCN (systemændringsnummer) for rækken. Som standard er SCN'et dog kun på blokniveau uden ROWDEPENDANCES. SCN_TO_TIMESTAMP Funktionen vil heller ikke være i stand til at kortlægge SCN'er til tidsstempler for evigt.



  1. N+1 redundans og serverkonsolidering

  2. Hvordan returnerer man en RefCursor fra Oracle-funktion?

  3. Den mest effektive måde at gemme IP-adresse i MySQL

  4. hvordan man laver en tabel i oracle