rman備份恢復-rman恢復資料檔案測試

pwz1688發表於2009-04-03

最近開始學習rman備份恢復了,主要看的是三思的資料,要謝謝他了,呵~~根據測試的結果,整體了下測試的筆記,發上來,供日後複習了!這一章節主要講的是恢復資料檔案測試

[@more@]

第四章 rman恢復測試


一、windows冷備後刪除資料檔案,rman恢復
在關閉資料庫的前提下,直接在window複製所有的控制檔案、資料檔案及引數檔案,即D:oracleproduct10.2.0oradataorcl將orcl整個資料夾copy一份,接著做一下的操作。
--建立表空間
SQL> create tablespace "TEST01"
2 logging
3 datafile 'D:oracleproduct10.2.0oradataorcltest01.ora' size 100M;

表空間已建立。
--建立使用者及使用者授權
SQL> create user test identified by test default tablespace TEST01;

使用者已建立。

SQL> grant connect to test;

授權成功。

SQL> grant resource to test;

授權成功。
--切換到新建的使用者連線
SQL> conn test/test
已連線。
--建立測試表及插入二條資料
SQL> create table tmp(a varchar(3));

表已建立。

SQL> insert into tmp values('1');

已建立 1 行。

SQL> insert into tmp values('2');

已建立 1 行。

SQL> commit;

提交完成。

SQL> select *from tmp;

A
---
1
2
--連線sysdba使用者,關閉資料庫,刪除剛新建的資料檔案
SQL> conn / as sysdba;
已連線。
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> host del D:oracleproduct10.2.0oradataorcltest01.ora;
--啟動資料庫
SQL> startup;
ORACLE 例程已經啟動。

Total System Global Area 289406976 bytes
Fixed Size 1248576 bytes
Variable Size 117441216 bytes
Database Buffers 163577856 bytes
Redo Buffers 7139328 bytes
資料庫裝載完畢。
ORA-01157: 無法標識/鎖定資料檔案 5 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 5: 'D:ORACLEPRODUCT10.2.0ORADATAORCLTEST01.ORA'
--退出sqlplus命令
SQL> quit;
從 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 斷開
--進入rman命令提示符
C:Documents and Settingspengwzh>rman target /

恢復管理器: Release 10.2.0.1.0 - Production on 星期五 4月 3 14:16:08 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

已連線到目標資料庫: ORCL (DBID=1210922825, 未開啟)

RMAN> startup mount;

資料庫已經啟動
--修復刪除的資料檔案D:oracleproduct10.2.0oradataorcltest01.ora,檔案ID為5
RMAN> restore datafile 5;

啟動 restore 於 03-4月 -09
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK

建立資料檔案 fno = 5 名稱 = D:ORACLEPRODUCT10.2.0ORADATAORCLTEST01.ORA
沒有完成恢復; 所有檔案均為只讀或離線檔案或者已經恢復
完成 restore 於 03-4月 -09
--恢復資料檔案5,即D:oracleproduct10.2.0oradataorcltest01.ora.
RMAN> recover datafile 5;

啟動 recover 於 03-4月 -09
使用通道 ORA_DISK_1

正在開始介質的恢復
介質恢復完成, 用時: 00:00:01

完成 recover 於 03-4月 -09
--開啟資料庫
RMAN> alter database open;

資料庫已開啟
--退出rman
RMAN> exit;


恢復管理器完成。
--連線test使用者
C:Documents and Settingspengwzh>sqlplus test/test

SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 4月 3 14:20:23 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.


連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
--查詢刪除資料檔案之前新建的表資料,如下:
SQL> select * from tmp;

A
---
1
2

恢復成功


二、rman備份、恢復綜合測試

以下的備份和恢復都是rman實現,在刪除已有的window冷備後開始用rman備份,備份後破壞資料檔案,再利用備份的庫還原資料檔案。測試如下:

--進入rman,關閉資料庫,啟動載入狀態
C:Documents and Settingspengwzh>rman target /

恢復管理器: Release 10.2.0.1.0 - Production on 星期五 4月 3 14:23:48 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

連線到目標資料庫: ORCL (DBID=1210922825)

RMAN> shutdown immediate;

使用目標資料庫控制檔案替代恢復目錄
資料庫已關閉
資料庫已解除安裝
Oracle 例項已關閉

RMAN> startup mount;

已連線到目標資料庫 (未啟動)
Oracle 例項已啟動
資料庫已裝載

系統全域性區域總計 289406976 位元組

Fixed Size 1248576 位元組
Variable Size 121635520 位元組
Database Buffers 159383552 位元組
Redo Buffers 7139328 位元組

執行上章節的批處理F:oracleScriptbackupdatabase_backup_orcl.bat,進行資料庫全備,備份日誌輸出如下:

恢復管理器: Release 10.2.0.1.0 - Production on 星期五 4月 3 14:25:27 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

已連線到目標資料庫: ORCL (DBID=1210922825, 未開啟)

RMAN> RUN {
2> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
3> CONFIGURE CONTROLFILE AUTOBACKUP ON;
4> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:/backup/%F';
5> ALLOCATE CHANNEL CH1 DEVICE TYPE DISK FORMAT 'd:/backup/%U';
6> BACKUP database SKIP INACCESSIBLE FILESPERSET 10
7> PLUS ARCHIVELOG FILESPERSET 20
8> DELETE ALL INPUT;
9> RELEASE CHANNEL CH1;
10> }
11> ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
12> CROSSCHECK BACKUPSET;
13> DELETE NOPROMPT OBSOLETE;
14>
使用目標資料庫控制檔案替代恢復目錄
舊的 RMAN 配置引數:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
新的 RMAN 配置引數:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
已成功儲存新的 RMAN 配置引數

舊的 RMAN 配置引數:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
新的 RMAN 配置引數:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
已成功儲存新的 RMAN 配置引數

舊的 RMAN 配置引數:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:/backup/%F';
新的 RMAN 配置引數:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:/backup/%F';
已成功儲存新的 RMAN 配置引數

分配的通道: CH1
通道 CH1: sid=153 devtype=DISK


啟動 backup 於 03-4月 -09
說明與恢復目錄中的任何存檔日誌均不匹配
由於跳過所有檔案而取消了備份
完成 backup 於 03-4月 -09

啟動 backup 於 03-4月 -09
通道 CH1: 啟動全部資料檔案備份集
通道 CH1: 正在指定備份集中的資料檔案
輸入資料檔案 fno=00001 name=D:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF
輸入資料檔案 fno=00003 name=D:ORACLEPRODUCT10.2.0ORADATAORCLSYSAUX01.DBF
輸入資料檔案 fno=00005 name=D:ORACLEPRODUCT10.2.0ORADATAORCLTEST01.ORA
輸入資料檔案 fno=00002 name=D:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS01.DBF
輸入資料檔案 fno=00004 name=D:ORACLEPRODUCT10.2.0ORADATAORCLUSERS01.DBF
通道 CH1: 正在啟動段 1 於 03-4月 -09
通道 CH1: 已完成段 1 於 03-4月 -09
段控制程式碼=D:BACKUP3KBI3RK_1_1 標記=TAG20090403T142556 註釋=NONE
通道 CH1: 備份集已完成, 經過時間:00:00:46
完成 backup 於 03-4月 -09

啟動 backup 於 03-4月 -09
說明與恢復目錄中的任何存檔日誌均不匹配
由於跳過所有檔案而取消了備份
完成 backup 於 03-4月 -09

啟動 Control File and SPFILE Autobackup 於 03-4月 -09
段 handle=D:BACKUPC-1210922825-20090403-01 comment=NONE
完成 Control File and SPFILE Autobackup 於 03-4月 -09

釋放的通道: CH1

分配的通道: ORA_MAINT_DISK_1
通道 ORA_MAINT_DISK_1: sid=153 devtype=DISK

交叉校驗備份段: 找到為 'AVAILABLE'
備份段 handle=D:BACKUP3KBI3RK_1_1 recid=3 stamp=683216757
交叉校驗備份段: 找到為 'AVAILABLE'
備份段 handle=D:BACKUPC-1210922825-20090403-01 recid=4 stamp=683216804
已交叉檢驗的 2 物件


RMAN 保留策略將應用於該命令
將 RMAN 保留策略設定為 7 天的恢復視窗
未找到已廢棄的備份

恢復管理器完成。
--開啟資料庫,退出rman
RMAN> alter database open;

資料庫已開啟

RMAN>exit;

--用test使用者進入sqlplus
C:Documents and Settingspengwzh>sqlplus test/test

SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 4月 3 14:29:52 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.


連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
--建立表及插入資料
SQL> create table tmp(a varchar(2));

表已建立。

SQL> insert into tmp values('1');

已建立 1 行。

SQL> insert into tmp values('2');

已建立 1 行。

SQL> commit;

提交完成。

SQL> select * from tmp;

A
--
1
2
--連線sysdba使用者,關閉資料庫,刪除資料檔案5
SQL> conn / as sysdba;
已連線。
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> host del D:oracleproduct10.2.0oradataorcltest01.ora;
--啟動資料庫,啟動失敗,退出sqlplus操作如下:
SQL> startup;
ORACLE 例程已經啟動。

Total System Global Area 289406976 bytes
Fixed Size 1248576 bytes
Variable Size 125829824 bytes
Database Buffers 155189248 bytes
Redo Buffers 7139328 bytes
資料庫裝載完畢。
ORA-01157: 無法標識/鎖定資料檔案 5 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 5: 'D:ORACLEPRODUCT10.2.0ORADATAORCLTEST01.ORA'


SQL> exit;

--進入rman命令提示符,利用rman備份的資料庫來恢復刪除的資料檔案5
C:Documents and Settingspengwzh>rman target /

恢復管理器: Release 10.2.0.1.0 - Production on 星期五 4月 3 14:34:52 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

已連線到目標資料庫: ORCL (DBID=1210922825, 未開啟)

RMAN> shutdown immediate;

使用目標資料庫控制檔案替代恢復目錄
資料庫已解除安裝
Oracle 例項已關閉

RMAN> startup mount;

已連線到目標資料庫 (未啟動)
Oracle 例項已啟動
資料庫已裝載

系統全域性區域總計 289406976 位元組

Fixed Size 1248576 位元組
Variable Size 125829824 位元組
Database Buffers 155189248 位元組
Redo Buffers 7139328 位元組

RMAN> restore datafile 5;

啟動 restore 於 03-4月 -09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK

通道 ORA_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
正將資料檔案00005恢復到D:ORACLEPRODUCT10.2.0ORADATAORCLTEST01.ORA
通道 ORA_DISK_1: 正在讀取備份段 D:BACKUP3KBI3RK_1_1
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = D:BACKUP3KBI3RK_1_1 標記 = TAG20090403T142556
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:08
完成 restore 於 03-4月 -09

RMAN> recover datafile 5;

啟動 recover 於 03-4月 -09
使用通道 ORA_DISK_1

正在開始介質的恢復
介質恢復完成, 用時: 00:00:03

完成 recover 於 03-4月 -09

RMAN>
--恢復成功,開啟資料庫,退出rman
RMAN> alter database open;

資料庫已開啟

RMAN> exit;

恢復管理器完成。
--用test使用者連線sqlplus,剛備份之後新建的表及資料是否存在
C:Documents and Settingspengwzh>sqlplus test/test

SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 4月 3 15:01:47 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.


連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options


SQL> select * from tmp;

A
--
1
2

SQL>
Tmp表存在,資料也沒丟失,雖然資料檔案被刪了,但還原後可以恢復到被刪資料檔案時的資料庫狀態。

附:測試環境如下
檢視資料庫歸檔模式
SQL> conn / as sysdba;
已連線。
SQL> archive log list;
資料庫日誌模式 非存檔模式
自動存檔 禁用
存檔終點 USE_DB_RECOVERY_FILE_DEST
最早的聯機日誌序列 1
當前日誌序列 3
SQL>
檢視資料庫版本
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

SQL>

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

相關文章