記錄 Oracle 11.2.0.4 同平台異機恢復全過程:源庫 RMAN 備份、目標機準備目錄與密碼檔、SET DBID、恢復 SPFILE/Controlfile/Database、處理缺失 Archive Log、Block Change Tracking 錯誤至成功 Open。
| 項目 | 源主機 | 目標主機 |
|---|---|---|
| OS | CentOS 6.2 | CentOS 6.2 |
| Hostname | vick | rman |
| IP | 192.168.1.11 | 192.168.1.10 |
| SID | orcl | orcl |
| 版本 | 11.2.0.4 | 11.2.0.4 |
| 儲存 | Filesystem | Filesystem |
| 資料檔路徑 | /u01/app/oracle/oradata | /u01/app/oracle/oradata |
mkdir /u01/backup
rman target /
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
BACKUP INCREMENTAL LEVEL 0
FORMAT '/u01/backup/db_full_%U.bkp'
TAG '2014-11-14-FULL'
DATABASE PLUS ARCHIVELOG;
RELEASE CHANNEL c1;
}
BACKUP CURRENT CONTROLFILE FORMAT '/u01/backup/control20141114.bak';
BACKUP SPFILE FORMAT '/u01/backup/spfile20141114.bak';
# 傳輸備份檔
scp /u01/backup/* oracle@192.168.1.10:/u01/backup/
# 建立目錄結構
mkdir -p /u01/app/oracle/oradata/orcl
mkdir -p /u01/app/oracle/fast_recovery_area/ORCL
mkdir -p $ORACLE_BASE/admin/orcl/{adump,bdump,cdump,dpdump,udump,pfile}
# 建立密碼檔
orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=oracle
# 建立最小 pfile
echo 'db_name=orcl' > $ORACLE_HOME/dbs/initorcl.ora
rman target / SET DBID 1387254920; -- 來源 DBID,從 v$database 查得 STARTUP NOMOUNT; RESTORE SPFILE FROM '/u01/backup/spfile20141114.bak'; STARTUP FORCE NOMOUNT; -- 重讀 SPFILE RESTORE CONTROLFILE FROM '/u01/backup/control20141114.bak'; STARTUP MOUNT; # 關鍵:Catalog 備份片段(否則 RMAN 找不到備份集) CATALOG START WITH '/u01/backup/'; RESTORE DATABASE; RECOVER DATABASE;
RMAN-06053: unable to perform media recovery because of missing log RMAN-06025: no backup of archived log for thread 1 sequence 13 SCN 1208284
解決:指定恢復到該 SCN 之前(不需該 Archive Log)
RUN {
SET UNTIL SCN 1208284;
RECOVER DATABASE;
}
ORA-19751: could not create the change tracking file ORA-19750: change tracking file: '/u01/app/oracle/oradata/orcl/ORCL/changetracking/o1_mf_b51rj77x_.chg' ORA-27040: file create error, unable to create file Linux Error: 2: No such file or directory
解決:關閉 Block Change Tracking 再 Open
SQL> ALTER DATABASE DISABLE BLOCK CHANGE TRACKING; SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP; -- 資料庫成功開啟