2011-07-04 7 views
7

Wczoraj mój przyjaciel -BI Specjalista - wyjaśnił mi problem z wyrocznią:
Istnieje baza danych Oracle, która zawiera ogromną ilość danych, ale nie tworzy kolumny dla każdej tabeli, która zapisała Utworzoną datę i godzinę dla każdego wiersza.
Więc w tym przypadku Jak może uzyskać Utworzoną datę/godzinę (znacznik czasu) dla każdego wiersza?Co to jest utworzony wiersz Data w wierszu tabeli w Oracle?

+1

masz na myśli w istniejącej bazy danych z ogromnymi ilościami istniejące dane? czy jest włączony jakiś rodzaj kontroli? – Randy

+0

Nie sądzę, –

Odpowiedz

17

Każdy wiersz ma swój własny numer zmiany systemu (SCN). Wskazuje to dokładnie chwilę w bazie danych.

pierwsze dowiedzieć się SCN i oparte na nim używać SCN_TO_TIMESTAMP aby uzyskać czas-pieczęć:

SELECT 
    SCN_TO_TIMESTAMP(ora_rowscn) 
FROM 
    MyTable 
+3

Warto również zauważyć, że 'SCN_TO_TIMESTAMP()' może nie być dostępne dla starszych danych (jednak "ORA_ROWSCN" jest zawsze dostępne). –

+0

@Alvaro: Tak, rzeczywiście. – CristiC

+3

Należy również zauważyć, że domyślnie 'ora_rowscn' jest zapisywany na poziomie bloku (NOROWDEPENDENCI jest domyślną opcją CREATE TABLE). Zobacz na przykład http://asktom.oracle.com/pls/apex/f?p=100:11:0::NO::P11_QUESTION_ID:517105100346104196 –