1. 程式人生 > >oracle更新資料,提交(commit)後,如何"回滾"

oracle更新資料,提交(commit)後,如何"回滾"

execute執行後 可以回滾

commit提交後 閃回恢復原來的資料



其實Oracle提交資料是分兩步操作的,第一步execute執行,第二步commit提交。對應的PL\SQL也是要先點execute執行,執行後再點commit提交。
但是 commit提交後 可以用閃回查詢恢復原來的資料 因為oracle會將近期的資料儲存到快照中 如:

SELECT * FROM tab AS OF TIMESTAMP TO_TIMESTAMP('20130506 20:00:00','YYYYMMDD HH24:MI:SS');
這裡'20130506 20:00:00'就是你想恢復資料到哪個時間狀態 tab是資料庫的表名 這樣查詢到的資料就是執行更新操作之前的資料 


create table tab_bak as SELECT * FROM tab AS OF TIMESTAMP TO_TIMESTAMP('20130506 20:00:00','YYYYMMDD HH24:MI:SS');
這樣就把這個時間段的資料放到了 tab_bak表中了。


再把表重新命名 即可:alter table tab_bak rename to tab;

查詢表的所屬使用者

 select owner from dba_tables where table_name=upper('表名');

建立一個和另一個表結構相同的空表


 create table  newtable as select * from oldtable where 1=0;


如果不加where條件,建立的新表和舊錶欄位和資料都一樣啦,相當於複製過來了。