10gがもたらす福音(8)〜フラッシュバックの新機能(1)。
フラッシュバック機能について。
- フラッシュバック問い合わせ
- フラッシュバックバージョン問い合わせ(新機能)
- フラッシュバックトランザクション問い合わせ(新機能)
- フラッシュバックテーブル(新機能)
- フラッシュバックドロップ(新機能)
- フラッシュバックデータベース(新機能)
フラッシュバックバージョン問い合わせ
指定した2つのSCNまたは、時刻の間に行われたデータの
変更履歴を確認することができる。
SCNを使用した問い合わせ
select *
from hoge
versions between scn 最小値 and 最大値;
時刻を使用した問い合わせ
select *
from hoge
versions between timestamp 最小値 and 最大値;
最小値…MINVALUE
最大値…MAXVALUE
おのおの定数を用いることができる。
その最小値、最大値間に発生したバージョン(変更履歴)を
確認することができる。
問い合わせで使用可能な擬似列
VERSIONS_STARTSCN
バージョン範囲内の下限のSCN
VERSIONS_ENDSCN
バージョン範囲内の上限のSCN
VERSIONS_STARTTIME
バージョン範囲内の下限の時刻
VERSIONS_ENDTIME
バージョン範囲内の上限の時刻
VERSIONS_XID
その行履歴を生成したときのトランザクションID
ここで採取したIDを後述のフラッシュバックトランザクション
問い合わせで使用することができる。
VERSIONS_OPERATION
その行履歴を生成したときの操作
I/INSERT U/UPDATE D/DELETE
フラッシュバックトランザクション問い合わせ
FLASHBACK_TRANSACTION_QUERYビューに対して、トランザクションID
を引き当てることで、その変更を元に戻すSQL文を確認することが
できる。
FLASHBACK_TRANSACTION_QUERYビューのカラム
OPERATION
変更を行ったときの操作(UPDATE/DELETE/INSERT)
UNDO_SQL
変更を取り消すためのSQL
LOGON_USER
変更を実施したOracleユーザ
TABLE_NAME
変更が行われたテーブル
XID
トランザクションID
UNDO_CHANGE#
トランザクション内の処理順序番号
START_SCN
変更を開始した時のSCN
COMMIT_SCN
変更を確定した時のSCN