rman之同平臺異機恢復

oracle_zsx發表於2013-12-04

說明:
   1、作業系統:oracle_linux_5.6_32
   2、資料庫:oracle_11.2.0.3 兩臺單例項資料庫。
   3、本例子是在一臺資料庫壞掉的情況下,將我們的備份恢復到另一臺相同平臺的資料庫上。

注意:
另外一臺伺服器只需要安裝資料庫軟體,不需要建庫。因為我們是從原庫恢復過來。

演示步驟如下:
(1)
獲得源資料庫的DBID:
[oracle@RAC1 ~]$ rman target /
connected to target database: RAC1 (DBID=736017170)

(2)
用rman做一次全備
RMAN> backup database format '/backup/2013_11_13_2112_%U.bak';
這時會生成兩個備份集,一個是DBF的一個是控制檔案和引數檔案的。

(3)
將上面的兩個檔案傳到第二臺伺服器,還是放在一個/backup目錄下,注意授權。
不管你用什麼辦法,只要能做到就行。(比如什麼xftp工具、scp命令、拖拽、還是複製)

(4)
在第二臺伺服器上,裝一個oracle軟體,不裝資料庫,注意基本配置與原庫相同。
這裡說的基本配置就是指儘量在裝的時候按照原庫的步驟和操作來。

(5)
當第二臺伺服器上裝好oracle軟體時,可以執行:
RMAN> set dbid 736017170;

(6)
目標庫:
RMAN> startup nomount;

(7)
還原引數檔案
RMAN> restore spfile to pfile '/u01/app/oracle/product/10.2.0/db_1/dbs/initrac1.ora'
from '/backup/2013_11_13_2112_11opt80p_1_1.bak';

(8)
這一步本可省略,如果在下一步中報錯說某些路徑不存在,那就做這一步:
[root@RAC2 ~]# mkdir -p /u01/app/oracle/admin/rac1/adump
[root@RAC2 ~]# chown -R oracle:oinstall /u01/app/oracle/admin/rac1/adump
[root@RAC2 ~]# mkdir -p /u01/app/oracle/admin/rac1/udump
[root@RAC2 ~]# chown -R oracle:oinstall /u01/app/oracle/admin/rac1/udump
[root@RAC2 backup]# mkdir -p /u01/app/oracle/admin/rac1/bdump
[root@RAC2 backup]# chown -R oracle:oinstall /u01/app/oracle/admin/rac1/bdump/

(9)
用我們恢復出來的引數檔案強制啟動到nomount狀態
RMAN> startup force nomount pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initrac1.ora';

Oracle instance started

Total System Global Area     285212672 bytes

Fixed Size                     1218992 bytes
Variable Size                 83887696 bytes
Database Buffers             197132288 bytes
Redo Buffers                   2973696 bytes

(10)
還遠控制檔案:
RMAN> restore controlfile from '/backup/2013_11_13_2112_11opt80p_1_1.bak';

Starting restore at 13-NOV-13
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=156 devtype=DISK

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:04
output filename=/u01/app/oracle/oradata/rac1/control01.ctl
output filename=/u01/app/oracle/oradata/rac1/control02.ctl
output filename=/u01/app/oracle/oradata/rac1/control03.ctl
Finished restore at 13-NOV-13

(11)
啟動資料庫到mount狀態。
RMAN> alter database mount;

database mounted
released channel: ORA_DISK_1

(12)
還原資料庫:
RMAN> restore database;

Starting restore at 13-NOV-13
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=156 devtype=DISK

channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /u01/app/oracle/oradata/rac1/system01.dbf
restoring datafile 00002 to /u01/app/oracle/oradata/rac1/undotbs01.dbf
restoring datafile 00003 to /u01/app/oracle/oradata/rac1/sysaux01.dbf
restoring datafile 00004 to /u01/app/oracle/oradata/rac1/users01.dbf
restoring datafile 00005 to /u01/app/oracle/oradata/rac1/example01.dbf
channel ORA_DISK_1: reading from backup piece /backup/2013_11_13_2112_10opt7u0_1_1.bak
channel ORA_DISK_1: restored backup piece 1
piece handle=/backup/2013_11_13_2112_10opt7u0_1_1.bak tag=TAG20131126T041248
channel ORA_DISK_1: restore complete, elapsed time: 00:01:46
Finished restore at 13-NOV-13

(13)
恢復資料庫:
RMAN> recover database;

Starting recover at 13-NOV-13
using channel ORA_DISK_1

starting media recovery

unable to find archive log
archive log thread=1 sequence=1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 11/13/2013 14:56:30
RMAN-06054: media recovery requesting unknown log: thread 1 seq 1 lowscn 572731

注意:
報錯了,但是沒關係,並非嚴重錯誤,只是提醒你恢復到一個未知的scn 號。如果要避免這
個錯誤,可以在alter database mount 之後,透過set until scn 或者set until time 命令設定恢復
到的scn 號或時間。

(14)
開啟資料庫,確實是可以開啟的。
RMAN> alter database open resetlogs;

database opened

(15)
檢視當前例項狀態:
SQL> select instance_name,status from v$instance;

INSTANCE_NAME    STATUS
---------------- ------------
rac1             OPEN

(16)
檢視資料:確實沒有丟。
SQL> conn scott/tiger
Connected.
SQL> select * from zsx;
        ID
----------
         1
         2
         3
         4
         5
         6
         7
         8
         9
        10
10 rows selected.

(17)
成功了,哈哈,如果發現沒有臨時表空間,記得重建。

(18)
記得建立密碼檔案:
[oracle@RAC2 bdump]$ orapwd file=$ORACLE_HOME/dbs/orapwd$ORACLE_SID password=oracle entries=5

(19)
進行一次全備。

(20)
感謝!

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

相關文章