2011-07-04 9 views
7

昨日の私の友人-BIスペシャリスト - オラクルの問題について説明しました:
膨大な量のデータを含むOracleデータベースがありますが、各行のCreated datetimeを格納する各テーブルの列は作成しません。
この場合どのようにして、各行にCreated datetime(タイムスタンプ)を取得できますか?Oracleで作成されたテーブルの日時はどのくらいですか?

+1

を既存のデータの膨大な量の既存のデータベースに意味ですか?どんな種類の監査も可能ですか? – Randy

+0

私はそうは思わない –

答えて

17

すべての行には、独自のシステム変更番号(SCN)があります。これは、データベースの正確な瞬間を特定することです。

まずタイムスタンプを取得するためにSCN_TO_TIMESTAMPを使用するSCNを見つけると、それに基づく:

SELECT 
    SCN_TO_TIMESTAMP(ora_rowscn) 
FROM 
    MyTable 
+3

古いデータでは 'SCN_TO_TIMESTAMP()'が利用できないかもしれません(ただし、 'ORA_ROWSCN'は常に利用可能です)。 –

+0

@Alvaro:確かにそうです。 – CristiC

+3

デフォルトでは、 'ora_rowscn'はブロックレベルで記録されます(NOROWDEPENDENCIESはデフォルトのCREATE TABLEオプションです)。たとえば、http://asktom.oracle.com/pls/apex/f?p=100:11:0::NO::P11_QUESTION_ID:517105100346104196 –

関連する問題