環境:
備份數據庫
操作系統:oracle linux 6.3
IP地址:192.168.137.11
數據庫:Oracle 11.2.0.3.0
ORACLE_SID:normal
Global_name:normal
恢復數據庫
操作系統:oracle linux 6.3
IP地址:192.168.137.12
數據庫:Oracle 11.2.0.3.0
ORACLE_SID:normal
注意:上面恢復數據庫只安裝了數據庫軟件,沒有創建數據庫
-------------------------------------------------
--在備份前把rman中自動備份spfile和controlfile去了
-------------------------------------------------
--壓縮版本
rman target / nocatalog log /tmp/rman.log <<EOF
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
sql 'alter system archive log current';
backup as compressed backupset database format '/u01/app/oracle/backup/full_%d_%T_%s_%p';
sql 'alter system archive log current';
backup as compressed backupset archivelog all format '/u01/app/oracle/backup/arch_%d_%T_%s_%p' delete input;
backup current controlfile format '/u01/app/oracle/backup/ctl_%d_%T_%s_%p';
backup spfile format '/u01/app/oracle/backup/spfile_%d_%T_%s_%p';
release channel c1;
release channel c2;
}
EOF
--沒壓縮版本
rman target / nocatalog log /tmp/rman.log <<EOF
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
sql 'alter system archive log current';
backup database format '/u01/app/oracle/backup/full_%d_%T_%s_%p';
sql 'alter system archive log current';
backup archivelog all format '/u01/app/oracle/backup/arch_%d_%T_%s_%p' delete input;
backup current controlfile format '/u01/app/oracle/backup/ctl_%d_%T_%s_%p';
backup spfile format '/u01/app/oracle/backup/spfile_%d_%T_%s_%p';
release channel c1;
release channel c2;
}
EOF
--前提:在恢復機器上只安裝好數據庫軟件
mkdir -p /u01/app/oracle/flash_recovery_area
mkdir -p /u01/app/oracle/backup
mkdir -p /u01/app/oracle/admin/normal/adump
mkdir -p /u01/app/oracle/oradata/normal
--創建密碼文件(在$ORACLE_HOME/dbs目錄下)
orapwd file=orapwnormal password=oracle entries=5
--在備份機上的備份文件如下
[oracle@normal backup]$ ll
total 861200
-rw-r----- 1 oracle oinstall 26749952 Aug 28 09:07 arch_NORMAL_20140828_10_1
-rw-r----- 1 oracle oinstall 96722432 Aug 28 09:07 arch_NORMAL_20140828_9_1
-rw-r----- 1 oracle oinstall 9830400 Aug 28 09:07 ctl_NORMAL_20140828_11_1
-rw-r----- 1 oracle oinstall 246669312 Aug 28 09:06 full_NORMAL_20140828_5_1
-rw-r----- 1 oracle oinstall 491855872 Aug 28 09:07 full_NORMAL_20140828_6_1
-rw-r----- 1 oracle oinstall 9830400 Aug 28 09:07 full_NORMAL_20140828_7_1 --rman自動備份的control file
-rw-r----- 1 oracle oinstall 98304 Aug 28 09:07 full_NORMAL_20140828_8_1 --rman自動備份的spfile
-rw-r----- 1 oracle oinstall 98304 Aug 28 09:07 spfile_NORMAL_20140828_12_1
--將備份的文件傳輸到 恢復庫
scp -r full_NORMAL_20140828_5_1 192.168.137.12:/u01/app/oracle/backup/
scp -r full_NORMAL_20140828_6_1 192.168.137.12:/u01/app/oracle/backup/
scp -r arch_NORMAL_20140828_9_1 192.168.137.12:/u01/app/oracle/backup/
scp -r arch_NORMAL_20140828_10_1 192.168.137.12:/u01/app/oracle/backup/
scp -r ctl_NORMAL_20140828_11_1 192.168.137.12:/u01/app/oracle/backup/
scp -r spfile_NORMAL_20140828_12_1 192.168.137.12:/u01/app/oracle/backup/
--通過rman將備份的spfile_NORMAL_20140828_12_1恢復到數據庫
rman target /
startup --報錯沒關係
restore spfile to '/u01/app/oracle/product/11.2.0/db_1/dbs/spfilenormal.ora' from '/u01/app/oracle/backup/spfile_NORMAL_20140828_12_1';
--啓動數據庫到nomount
sqlplus / as sysdba
shutdown immediate
startup nomount
--通過rman恢復備份的control file
restore controlfile from '/u01/app/oracle/backup/ctl_NORMAL_20140828_11_1';
--將數據庫打開到 mount 狀態
alter database mount;
--指定備份文件所在目錄 並且 掃描整個目錄的備份片或者歸檔日誌文件等
catalog start with '/u01/app/oracle/backup';
--restore數據庫
restore database;
--recover 數據庫(注意這一步要在sqlplus中做,直接使用recover database會報錯。如下:)
RMAN> recover database;
Starting recover at 2014-08-28 10:04:55
using channel ORA_DISK_1
starting media recovery
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 08/28/2014 10:04:56
ORA-01013: user requested cancel of current operation
--在sqlplus中進行恢復
sqlplus / as sysdba
SQL> recover database until cancel;
ORA-00283: recovery session canceled due to errors
ORA-01610: recovery using the BACKUP CONTROLFILE option must be done
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 936469 generated at 08/28/2014 09:06:17 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/flash_recovery_area/NORMAL/archivelog/2014_08_28/o1_mf_1_82_%u_.arc
ORA-00280: change 936469 for thread 1 is in sequence #82
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
--由於沒有redo log,所以我們需要使用resetlogs 打開數據庫
alter database open resetlogs;
--一致性關閉數據庫並重啓數據庫
shutdown immediate
startup