SQL 虎の巻
[ORACLE]COMMIT済みトランザクションの否定
OracleはVer10以降であれば
確定したトランザクションの打消しが出来ます。
フラッシュバック問合せという特殊なSQL文を発行すると
対象のテーブルに行われた変更情報をUNDOテーブルスペースから引っ張り出します。
引っ張り出した情報の1つにUNDO_SQLという情報があり、
このSQLを発行するとテーブルの値が元に戻ります。
既存のテーブルリストエディタでは
ある時点と現在との比較を行えましたが
過程まではわかりませんでした。
具体的には
データがAAAからBBBになってCCCになったとしたら
AAAからCCCに変わりましたという結果しかでませんでした。
また、トランザクションが始まる前に対象とするテーブルを決め
データを取得しておく必要がありました。
今後はフラッシュバックを利用することで
データの変更過程まで取得できます。
しかも、エビデンスの取得漏れがあっても
対象を追加してまた問い合わせればよいので再テストいりません。
あとは、あれ?データがおかしい!
いつのまに変わったんだ?
誰だ?変えたのは?ってのまで追跡できます。
こんな良い事づくめのフラッシュバック。
過信してはいけません。
デフォルトでオラクルをインストールすると
最大フラッシュバック可能時間は15分前まで。
短いような長いような?
UNDO保証なし
(フラッシュバック可能時間内のデータでも
別のトランザクションのデータで消される可能性あり。 )
という落とし穴があります。
ここを解消すればオラクルのトランザクションは自由自在だ!
すごいぞフラッシュバック
|