rollback
コミットされたトランザクションへの方法はありますかoracle 11g
in db を作成しdelete from table
てコミットしましたが、コミットした変更を行いたいと思いrollback
ます。それを行う方法はありますか?
すでにコミットされているものをロールバックすることはできません。この特定の状況でできることは、最も迅速なオプションの 1 つとして、行を削除したテーブルに対してフラッシュバック クエリを発行し、それらを挿入し直すことです。簡単な例を次に示します。
注: この操作の成功は、パラメータの値 (デフォルトは 900 秒) によって異なります。このundo_retention
時間は、UNDO 情報が UNDO テーブルスペースに保持される時間 (自動的に短縮できます) です。
/* our test table */
create table test_tb(
col number
);
/* populate test table with some sample data */
insert into test_tb(col)
select level
from dual
connect by level <= 2;
select * from test_tb;
COL
----------
1
2
/* delete everything from the test table */
delete from test_tb;
select * from test_tb;
no rows selected
削除された行を挿入します。
/* flashback query to see contents of the test table
as of specific point in time in the past */
select * /* specify past time */
from test_tb as of timestamp timestamp '2013-11-08 10:54:00'
COL
----------
1
2
/* insert deleted rows */
insert into test_tb
select * /* specify past time */
from test_tb as of timestamp timestamp '2013-11-08 10:54:00'
minus
select *
from test_tb
select *
from test_tb;
COL
----------
1
2