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

Come scoprire quando è stata creata una tabella particolare in Oracle?

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

ti dirà quando è stata creata una tabella (se non hai accesso a DBA_OBJECTS, potresti usare ALL_OBJECTS invece supponendo che tu abbia i privilegi SELECT sulla tabella).

La risposta generale all'ottenimento di timestamp da una riga, tuttavia, è che puoi ottenere quei dati solo se hai aggiunto colonne per tenere traccia di tali informazioni (supponendo, ovviamente, che anche la tua applicazione popola le colonne). Ci sono però vari casi speciali. Se il DML si è verificato relativamente di recente (molto probabilmente nelle ultime due ore), dovresti essere in grado di ottenere i timestamp da una query di flashback. Se il DML si è verificato negli ultimi giorni (o per quanto tempo conservi i registri archiviati), puoi utilizzare LogMiner per estrarre i timestamp, ma sarà un'operazione molto costosa, soprattutto se ottieni timestamp per molte righe. Se crei la tabella con ROWDEPENDENCIES abilitato (non predefinito), puoi utilizzare

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

per ottenere la data dell'ultima modifica e l'SCN (numero di modifica del sistema) per la riga. Per impostazione predefinita, tuttavia, senza ROWDEPENDENCIES, l'SCN è solo a livello di blocco. Il SCN_TO_TIMESTAMP inoltre, la funzione non sarà in grado di mappare le SCN ai timestamp per sempre.