Cum să aflați când a fost creat un anumit tabel în Oracle? (Programare, Oracle, Oracle11G, Metadate De Baze De Date)

Moeb a intrebat.

În Oracle, există o modalitate de a afla când a fost creat un anumit tabel?

În mod similar, există o modalitate de a afla când un anumit rând a fost inserat / actualizat ultima dată?

5 răspunsuri
Justin Cave
SELECT created
  FROM dba_objects
 WHERE object_name = <<your table name>>
   AND owner = <<owner of the table>>
   AND object_type = 'TABLE'

vă va spune când a fost creat un tabel (dacă nu aveți acces la DBA_OBJECTS, ați putea folosi ALL_OBJECTS în schimb, presupunând că aveți privilegii SELECT pe tabel).

Totuși, răspunsul general la obținerea de timestamps dintr-un rând este că puteți obține aceste date numai dacă ați adăugat coloane pentru a urmări aceste informații (presupunând, desigur, că aplicația dvs. alimentează și coloanele). Cu toate acestea, există diverse cazuri speciale. Dacă DML a avut loc relativ recent (cel mai probabil în ultimele două ore), ar trebui să puteți obține datele de timp dintr-o interogare flashback. Dacă DML a avut loc în ultimele câteva zile (sau cât timp păstrați jurnalele arhivate), ați putea folosi LogMiner pentru a extrage marcajele temporale, dar aceasta va fi o operațiune foarte costisitoare, în special dacă obțineți marcajele temporale pentru multe rânduri. Dacă construiți tabelul cu ROWDEPENDENCIES activat (nu în mod implicit), puteți utiliza

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

pentru a obține data ultimei modificări și SCN (numărul de modificare a sistemului) pentru rândul respectiv. În mod implicit, însă, fără ROWDEPENDENCIES, SCN este doar la nivel de bloc. Adresa SCN_TO_TIMESTAMP nu va putea, de asemenea, să pună în corespondență SCN-urile cu timestamp-urile la nesfârșit.

bhangm

Puteți interoga vizualizările din dicționarul de date/catalog pentru a afla când a fost creat un obiect, precum și momentul ultimului DDL care implică obiectul (exemplu: alter table)

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

Coloana „CREATED” vă spune când a fost creat obiectul.Coloana „LAST_DDL_TIME” vă spune când a fost efectuat ultimul DDL asupra obiectului.

În ceea ce privește momentul în care un anumit rând a fost inserat/actualizat, puteți utiliza coloane de audit, cum ar fi o coloană „insert_timestamp” sau puteți utiliza un trigger și completa un tabel de audit.

shary.sharath

Copiați și lipiți următorul cod. Acesta va afișa toate tabelele cu Numele și data creării

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

Notă: Înlocuiți ‘%table_name%’ cu numele tabelului pe care îl căutați.

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

Comentarii

  • Și cu ce diferă acest răspuns de cel acceptat de 4 ani? –  > Por a_calul_cu_nume_de_cabalâc.
  • Aici folosesc un tabel diferit, nimic altceva. Diferența dintre dba_object și user_object –  > Por Saurabh Gadariya.
  • Vă rugăm să vă editați răspunsul pentru a adăuga o explicație a modului în care funcționează codul dvs. și cum rezolvă problema lui OP. Multe postere SO sunt începători și nu vor înțelege codul pe care l-ați postat. –  > Por i alarmed alien.
Deepjyoti Dev

Încercați această interogare:

SELECT sysdate FROM nume_de_schemă.nume_de_tabel;

Acest lucru ar trebui să afișeze data și ora de care ați putea avea nevoie.