Oracle SCNを使用してデータベース内の変更された行を追跡できますか?目標は、特定の表で変更されたすべての行について、x分ごとにデータベースに照会することです。アイデアは変更された行のOracle SCN Keep Trackの使用
SELECT current_scn FROM V$DATABASE;
を使用して現在のSCNを覚えているし、次にx分後に私はちょうどそれ以来変更されているすべての行を取得するには
SELECT * from mytable where ORA_ROWSCN > current_scn_x_minutes_ago;
ようなクエリを実行します(したがって、持っていますより高いSCN)。私はSCNがブロックごとに管理されているので、クエリが多すぎる結果を返すことに気付いていますが、これは問題ではありません。私が持っている主な質問は、SCNが厳密に増加しているかどうかです。つまり、次に生成されるSCNが常に現在のSCN(V $ DATABASEからクエリされたもの)より高いかどうか、またはSCN_TO_TIMESTAMP関数を使用して、正しい。
お返事ありがとうございます。 (ROWDEPENDENCIESを使用して)きめ細かいORA_ROWSCNを使用せず、この設定でテーブルを再作成することはできません。 "トランザクションT1がブロックB1に属する行R1を変更し、トランザクションT2がブロックB2に属する行R2を変更し、T2がT1の後に発生すると、 が発生するかどうかは、ブロックレベルでも適用されるかどうかですT1のコミット後のR1のORA_ROWSCNは、T2のコミット後にR2のORA_ROWSCNよりも低いことが保証されています(ファイングレインORA_ROWSCNを使用しないと仮定します)。 –