循序漸進oracle第7章:備份與恢復之RMAN的簡單備份與恢復

mengzhaoliang發表於2008-06-04

/* 2008/06/04
*環境:Windows XP +Oracle10.2.0.1
*循序漸進oracle——資料庫管理、最佳化與備份恢復
*第7章:備份與恢復之RMAN的簡單備份與恢復
*/
7.7.3 RMAN的備份與恢復(丟失所有的controlfile,datafile,redofile)

1、啟動控制檔案自動備份
>rman target/
>show all;
>RMAN> configure controlfile autobackup on;

舊的 RMAN 配置引數:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
新的 RMAN 配置引數:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
已成功儲存新的 RMAN 配置引數
RMAN> backup database tag=full20080604 plus archivelog;

2、模擬介質損壞
RMAN> shutdown immediate
刪除$oracle_HOME\oradata\sid\下所有的檔案,即刪除controlfile,datafile,redofile

3、啟動報錯進行恢復
C:\>sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 6月 4 08:07:45 2008

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

已連線到空閒例程。

SQL> startup
ORACLE 例程已經啟動。

Total System Global Area  272629760 bytes
Fixed Size                  1248476 bytes
Variable Size             100664100 bytes
Database Buffers          163577856 bytes
Redo Buffers                7139328 bytes
ORA-00205: ?????????, ??????, ???????


C:\>rman target/

恢復管理器: Release 10.2.0.1.0 - Production on 星期三 6月 4 08:08:21 2008

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

連線到目標資料庫: risenet (未裝載)


先還原控制檔案:
RMAN> restore controlfile to 'g:\control01.ctl' from autobackup;

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

恢復區域目標: G:\oracle\product\10.2.0/flash_recovery_area
用於搜尋的資料庫名 (或資料庫的唯一名稱): RISENET
通道 ORA_DISK_1: 在恢復區域中找到自動備份
通道 ORA_DISK_1: 已找到的自動備份: G:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\
RISENET\AUTOBACKUP\2008_06_04\O1_MF_N_656496109_44CPVGG6_.BKP
通道 ORA_DISK_1: 從自動備份復原控制檔案已完成
完成 restore 於 04-6月 -08


然後把改檔案複製三份到$oracle_HOME\oradata\sid\下,分別為

control01.ctl,control02.ctl,control03.ctl

把資料庫到mount狀態下
RMAN> sql 'alter database mount';

sql 語句: alter database mount
釋放的通道: ORA_DISK_1


然後還原所有的資料
RMAN> restore database;

啟動 restore 於 04-6月 -08
啟動 implicit crosscheck backup 於 04-6月 -08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
已交叉檢驗的 12 物件
完成 implicit crosscheck backup 於 04-6月 -08

啟動 implicit crosscheck copy 於 04-6月 -08
使用通道 ORA_DISK_1
完成 implicit crosscheck copy 於 04-6月 -08

搜尋恢復區域中的所有檔案
正在編制檔案目錄...
目錄編制完畢

已列入目錄的檔案的列表
=======================
檔名: G:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\RISENET\AUTOBACKUP\2008_06_
04\O1_MF_N_656496109_44CPVGG6_.BKP

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
正將資料檔案00001恢復到G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\SYSTEM01.DBF
正將資料檔案00002恢復到G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\UNDOTBS01.DBF
正將資料檔案00003恢復到G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\SYSAUX01.DBF
正將資料檔案00004恢復到G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\USERS01.DBF
正將資料檔案00005恢復到G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\RISE.DBF
正將資料檔案00006恢復到G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\MZL.DBF
通道 ORA_DISK_1: 正在讀取備份段 G:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\RIS
ENET\BACKUPSET\2008_06_04\O1_MF_NNNDF_FULL20080604_44CPRQHO_.BKP
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = G:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\RISENET\BACKUPSET\2008_06_
04\O1_MF_NNNDF_FULL20080604_44CPRQHO_.BKP 標記 = FULL20080604
通道 ORA_DISK_1: 恢復完成, 用時: 00:01:05
完成 restore 於 04-6月 -08

 

資料檔案已經還原,進行恢復
RMAN> recover database;

啟動 recover 於 04-6月 -08
使用通道 ORA_DISK_1

正在開始介質的恢復

存檔日誌執行緒 1 序列 6 已作為檔案 G:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\RI
SENET\ARCHIVELOG\2008_06_04\O1_MF_1_6_44CPV4P0_.ARC 存在於磁碟上
存檔日誌檔名 =G:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\RISENET\ARCHIVELOG\
2008_06_04\O1_MF_1_6_44CPV4P0_.ARC 執行緒 =1 序列 =6
無法找到存檔日誌
存檔日誌執行緒 =1 序列=7

 

上面只恢復到歸檔日誌6,日誌7是聯機重做日誌,已經丟失。所以聯機重做日誌檔案檔案沒有了,丟失了聯

機重做日誌的資料。
SQL> archive log list;
資料庫日誌模式            存檔模式
自動存檔             啟用
存檔終點            USE_DB_RECOVERY_FILE_DEST
最早的聯機日誌序列     5
下一個存檔日誌序列   7
當前日誌序列           7


到目前為止,恢復了controlfile,datafile,還差redo檔案
RMAN> sql 'alter database open resetlogs';

sql 語句: alter database open resetlogs


用“alter database open resetlogs”語句則重新生成redofile,日誌序列重新復位。
SQL> select instance_name,status from v$instance;

INSTANCE_NAME    STATUS
---------------- ------------------------
risenet          OPEN

SQL> archive log list;
資料庫日誌模式            存檔模式
自動存檔             啟用
存檔終點            USE_DB_RECOVERY_FILE_DEST
最早的聯機日誌序列     0
下一個存檔日誌序列   1
當前日誌序列           1

 

用"alter database open resetlogs"最好重新進行備份.
這樣簡單恢復了一次不完全恢復。

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

相關文章