Есть ли способ rollback
совершенной транзакции в oracle 11g
Я сделал delete from table
в БД и зафиксировал его, теперь я хочу rollback
зафиксированное изменение. Есть ли способ сделать это?
Есть ли способ rollback
совершенной транзакции в oracle 11g
Я сделал delete from table
в БД и зафиксировал его, теперь я хочу rollback
зафиксированное изменение. Есть ли способ сделать это?
Вы не можете отменить то, что уже было выполнено. То, что вы можете сделать в этой конкретной ситуации, как один из самых быстрых вариантов, заключается в том, чтобы выдать запрос flashback в таблицу, из которой вы удалили строки и вставить их обратно. Вот простой пример:
Примечание. Успех этой операции зависит от значения (по умолчанию 900 секунд) параметра undo_retention
- периода времени (может быть автоматически уменьшен), в течение которого информация отмены сохраняется в табличном пространстве отмены.
/* 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