[HOME]   その他の虎の巻   [Java 一般]   [Java Webアプリケーション]   [Ajax]   [Eclipse/SWT/JFACE/RCP]   [UnitTest]  

SQL 虎の巻

[ORACLE]COMMIT済みトランザクションの否定
OracleはVer10以降であれば 
確定したトランザクションの打消しが出来ます。 

フラッシュバック問合せという特殊なSQL文を発行すると
対象のテーブルに行われた変更情報をUNDOテーブルスペースから引っ張り出します。 
引っ張り出した情報の1つにUNDO_SQLという情報があり、
このSQLを発行するとテーブルの値が元に戻ります。 

既存のテーブルリストエディタでは 
ある時点と現在との比較を行えましたが 
過程まではわかりませんでした。 

具体的には 
データがAAAからBBBになってCCCになったとしたら 
AAAからCCCに変わりましたという結果しかでませんでした。 
また、トランザクションが始まる前に対象とするテーブルを決め
データを取得しておく必要がありました。 

今後はフラッシュバックを利用することで 
データの変更過程まで取得できます。 
しかも、エビデンスの取得漏れがあっても 
対象を追加してまた問い合わせればよいので再テストいりません。 
あとは、あれ?データがおかしい! 
いつのまに変わったんだ? 
誰だ?変えたのは?ってのまで追跡できます。 



こんな良い事づくめのフラッシュバック。 
過信してはいけません。 
デフォルトでオラクルをインストールすると 
最大フラッシュバック可能時間は15分前まで。 
短いような長いような? 

UNDO保証なし
(フラッシュバック可能時間内のデータでも
 別のトランザクションのデータで消される可能性あり。 )

という落とし穴があります。 

ここを解消すればオラクルのトランザクションは自由自在だ! 
すごいぞフラッシュバック