2010-12-14 22 views

Odpowiedz

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

powie, kiedy tabela została utworzona (jeśli nie masz dostępu do DBA_OBJECTS, możesz użyć ALL_OBJECTS zamiast zakładać, że masz uprawnienia SELECT w tabeli).

Ogólna odpowiedź na otrzymywanie znaczników czasu z wiersza polega jednak na tym, że można uzyskać te dane tylko wtedy, gdy dodano kolumny do śledzenia tych informacji (zakładając oczywiście, że aplikacja również wypełnia kolumny). Istnieją jednak różne specjalne przypadki. Jeśli DML wydarzyło się stosunkowo niedawno (najprawdopodobniej w ciągu ostatnich kilku godzin), powinieneś być w stanie uzyskać znaczniki czasu z zapytania flashback. Jeśli DML wydarzyło się w ciągu ostatnich kilku dni (lub jak długo przechowujesz zarchiwizowane logi), możesz użyć LogMiner, aby wyodrębnić znaczniki czasu, ale to będzie bardzo kosztowna operacja, szczególnie jeśli otrzymujesz znaczniki czasu dla wielu wierszy. Jeśli budować tabelę z ROWDEPENDENCIES włączone (nie domyślne), można użyć

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

dostać ostatnią datę modyfikacji i SCN (numer zmiana systemu) dla rzędu. Domyślnie, bez ROWDEPENDENCIES, SCN jest tylko na poziomie bloku. Funkcja SCN_TO_TIMESTAMP również nie będzie w stanie mapować SCN na znaczniki czasu na zawsze.

7

Można zapytać poglądy słownik danych/Katalog aby dowiedzieć się, kiedy obiekt został stworzony, a także w czasie ostatniej DDL udziałem obiekt (przykład: alter table)

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

Kolumna „stworzył” mówi, kiedy obiekt został utworzony. Kolumna "LAST_DDL_TIME" informuje, kiedy ostatni obiekt DDL został wykonany względem obiektu.

Co do kiedy dany wiersz został wstawiony/zaktualizowane, można użyć kolumny audytu jak „insert_timestamp” kolumny lub użyć spust i wypełnić tabelę audytu

4
SELECT CREATED FROM USER_OBJECTS WHERE OBJECT_NAME='<<YOUR TABLE NAME>>' 
+1

Jak to się różni od 4-letniej, zaakceptowanej odpowiedzi? –

+0

Tutaj używam innej tabeli nic innego. [Różnica między dba_object a user_object] (https://community.oracle.com/thread/929286?tstart=0) –

+0

Edytuj swoją odpowiedź, aby dodać wyjaśnienie, jak działa Twój kod i jak rozwiązuje problem PO. Wiele plakatów SO jest początkujących i nie zrozumie kodu, który napisałeś. –

2

Skopiuj i wklej następujący kod. wyświetli wszystkie tabele z Imię i daty utworzenia

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

Uwaga: Wymień „% table_name%” z nazwą tabeli szukasz.

-2

Spróbuj zapytanie:

SELECT sysdate FROM schema_name.table_name;

Powinno to wyświetlić znacznik czasu, który może być potrzebny.