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.
Jak to się różni od 4-letniej, zaakceptowanej odpowiedzi? –
Tutaj używam innej tabeli nic innego. [Różnica między dba_object a user_object] (https://community.oracle.com/thread/929286?tstart=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ś. –