oracle更新資料,提交(commit)後,如何"回滾"
阿新 • • 發佈:2018-12-27
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('表名');
建立一個和另一個表結構相同的空表
如果不加where條件,建立的新表和舊錶欄位和資料都一樣啦,相當於複製過來了。