恢復到特定點(時間點、scn、日誌序列號),rman不完全恢復

張衝andy發表於2017-04-25

將資料庫、表空間、資料檔案等恢復至恢復備份集儲存時間中的任何一個時間點/SCN/日誌序列(一般是日誌挖掘找到誤操作點),但須謹慎,操作前一定需要做好備份,具備條件的情況下最好先恢復到異機,避免業務停機時間。

前提:已經有資料庫備份 (作者已經提前準備了備份,這裡不進行備份,為了節約空間)
--準備實驗環境
SQL> select * from andy.andy;
select * from andy.andy
*
ERROR at line 1:
ORA-00942: table or view does not exist
--不完全恢復時間點
SQL> select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') from dual;
TO_CHAR(SYSDATE,'YY
-------------------
2015-03-25 07:55:12

SQL> create table andy.andy(id int);

Table created.
SQL> insert into andy.andy values(1);

1 row created.
SQL> insert into andy.andy values(100);

1 row created.
SQL> commit;

Commit complete.
SQL> select * from andy.andy;
ID
----------
1
100

1 基於時間點
方法一: 在RMAN中執行
RMAN> 
run{
startup mount force;
set until time "to_date('2015-03-25 07:55:12','yyyy-mm-dd hh24:mi:ss')";
restore database;
recover database;
alter database open resetlogs;
}

Finished recover at 25-MAR-15
database opened
--恢復時間點之後的表不見了,說明的確是不完全恢復。
SQL> select * from andy.andy;
select * from andy.andy
*
ERROR at line 1:
ORA-00942: table or view does not exist


——————————————————————————
方法二:在SQLplus中執行

SQL>startup mount force;
SQL>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
SQL>restore database until time "to_date('2015-03-25 07:55:12','YYYY-MM-DD HH24:MI:SS')";
SQL>recover database until time "to_date('2015-03-25 07:55:12','YYYY-MM-DD HH24:MI:SS')";
SQL>alter database open resetlogs;

2 基於 SCN:
SQL>startup mount force;
SQL>restore database until scn XXXX;
SQL>recover database until scn XXXX;
SQL>alter database open resetlogs;

3 基於日誌序列
SQL>startup mount force;
SQL>restore database until SEQUENCE 100 thread 1; //100是日誌序列
SQL>recover database until SEQUENCE 100 thread 1;
SQL>alter database open resetlogs;


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31383567/viewspace-2137942/,如需轉載,請註明出處,否則將追究法律責任。

相關文章