新建了一張表t_table1, 在某個時間點插入兩條數據,後續又誤插入一條數據,現在需要恢復到誤插入數據之前的狀態。
打開SQL Plus
用普通用戶登錄:
新建一張表t_table1:
create table t_table1 (t_id number, t_name varchar2(30));
插入兩條數據並提交:
insert into t_table1 values (111,'hui');
insert into t_table1 values (222,'wq');
commit;
在2016年4月2日00:13分左右誤插入一條數據:
insert into t_table1 values (333,'errordata');
commit;
接下來恢復到誤差數據之前的情況,
查詢一下誤差入之前的數據情況,由於數據是2016年4月2日00:13分左右插入的,所以查看一下00:10分的表狀態:
select * from t_table1 as of timestamp to_timestamp('2016-04-02 00:10','yyyy-mm-dd hh24:mi');
開啟行遷移:
alter table t_table1 enable row movement;
閃回:
flashback table t_table1 to timestamp to_timestamp('2016-04-02 00:10','yyyy-mm-dd hh24:mi');
檢查一下,數據已經恢復
新建一張表,誤刪除(drop)了這張表,現在需要恢復這張表。
接場景1,drop這個表t_table1,
閃回:
flashback table t_table1 to before drop;
驗證:
啟用RMAN備份以後,同時數據庫文件(.DBF)丟失,通過RMAN恢復數據文件。
說明:
RMAN備份/恢復之前必須要開啟數據庫歸檔功能
在SQL Plus下:
啟動歸檔前先要停止數據庫:
用管理員登錄:
conn / as sysdba;
停止數據庫:
shutdown immediate;
數據庫以mount方式啟動:
startup mount;
啟動數據庫歸檔:
alter database archivelog;
改變歸檔日志路徑,windows系統使用盤符:
alter system set log_archive_dest_1="location=C:\Users\Public\Documents\arch";
打開數據庫,查看歸檔是否已經打開:
alter database open;
archive log list;
在Windows控制台輸入以下命令啟動RMAN:
rman target/
啟用RMAN備份:
backup database;
此時,模擬一下誤刪數據庫文件:
先關閉數據庫:
刪除:C:\app\orcl\oradata\orcl目錄下的.DBF文件
重啟RMAN:
RMAN target sys/
利用RMAN恢復數據庫文件:
數據文件恢復成功:
驗證:
啟動數據庫:
startup;
打開SQL Plus,用普通用戶連接,驗證一下刪除的數據是否恢復: