作者:Grey 原文地址:http://www.cnblogs.com/greyzeng/p/5346833.html 環境: Windows 10 專業版 Oracle Database 12c Release 1 Flashback示例 場景1: 新建了一張表t_table1, 在某個時間點插入 ...
作者:Grey
原文地址:http://www.cnblogs.com/greyzeng/p/5346833.html
環境:
- Windows 10 專業版
- Oracle Database 12c Release 1
Flashback示例
場景1:
新建了一張表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');
檢查一下,數據已經恢復
場景2:
新建一張表,誤刪除(drop)了這張表,現在需要恢復這張表。 |
接場景1,drop這個表t_table1,
閃回:
flashback table t_table1 to before drop;
驗證:
RMAN示例
場景:
啟用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,用普通用戶連接,驗證一下刪除的數據是否恢復: