使用RMAN遷移數據庫到異機
遷移數據庫的方法有多種,較為常用的則是使用RMAN來遷移。使用RMAN遷移數據庫屬于數據庫的物理備份與恢復范疇,整個過程中數據庫的相關信息是完整地鏡像。因此,基于此種方式還原恢復的數據庫用于測試會使得與真實的生產環境差異相對較小。本文描述了使用RMAN來還原Oracle 10g數據庫的過程。
一、主要步驟
1、備份數據庫
2、ftp備份到目的服務器
3、為目標數據庫創建項目目錄
4、為目標數據庫創建pfile或spfile(使用RMAN還原或復制原pfile到目的服務器)
5、還原控制文件
6、還原數據文件
7、OPEN 數據庫
其實,這幾個步驟比較好理解,整個實質是對數據庫體系結構以及數據庫整個啟動過程的理解。
下面對此進行一下描述
a、首先需要為實例的運行環境創建相應的目錄,如dump位置,datafile位置,以及archive位置等等
如果是恢復到不同的路徑,則后續RMAN時需要使用set newname for datafile 方式更新到控制文件
b、實例需要pfile來啟動,因此需要恢復pfile或spfile,然后將數據庫切換到nomount狀態
c、接下來的一步是通過控制文件將數據庫切換到mount狀態,因此需要恢復控制文件,然后再mount
d、mount之后就可以對數據庫進行還原(restore)操作
e、還原完畢之后是對數據庫進行恢復(recovery)操作(restore和recover需要基于控制文件的備份信息或恢復目錄)
f、最后是open數據庫
二、遷移演示
1、備份原數據庫
此處演示的源數據庫與目標數據庫使用相同的版本為Oracle 10g R2(10.2.0.3),操作系統都為suse 10 +Sp3
備份過程略,有關備份腳本,請參考:linux 下RMAN備份shell腳本:http://blog.csdn.net/robinson_0612/article/details/8029245
2、ftp所有的備份文件到需要恢復的服務器上
打包整個備份集ftp到目標服務器或scp到目標服務器
下面是ftp到目標服務器解壓后包含的文件
oracle@2go-devDB01uv:/u02/database/SY5221_RMAN/20121013> ls -hltr total 9.4G -rw-r--r-- 1 oracle oinstall 3.0K 2012-10-16 09:48 initSY5221.ora -rw-r--r-- 1 oracle oinstall 2.7G 2012-10-16 10:02 SY5221_lev0_201210130630_4unnkjvi_1_1 -rw-r--r-- 1 oracle oinstall 3.1G 2012-10-16 10:04 SY5221_lev0_201210130630_4vnnkjvi_1_1 -rw-r--r-- 1 oracle oinstall 938M 2012-10-16 10:07 SY5221_lev0_201210130630_arc_51nnkk2h_1_1 -rw-r--r-- 1 oracle oinstall 935M 2012-10-16 10:08 SY5221_lev0_201210130630_arc_52nnkk2h_1_1 -rw-r--r-- 1 oracle oinstall 930M 2012-10-16 10:10 SY5221_lev0_201210130630_arc_53nnkk31_1_1 -rw-r--r-- 1 oracle oinstall 15M 2012-10-16 10:10 SY5221_lev0_cntl_bak_c-1468911009-20121013-00 -rw-r--r-- 1 oracle oinstall 15M 2012-10-16 10:10 SY5221_lev0_cntl_bak_c-1468911009-20121013-01 -rw-r--r-- 1 oracle oinstall 910M 2012-10-16 10:11 SY5221_lev0_201210130630_arc_54nnkk32_1_1 |
3、創建所需的目錄(使用oracle用戶)
oracle@2go-devDB01uv:~> more mkdir_sy5221.sh ORACLE_SID=SY5221; export ORACLE_SID |
4、創建密碼文件
oracle@2go-devDB01uv:~> cd $ORACLE_HOME/dbs oracle@2go-devDB01uv:~/OraHome10g/dbs> orapwd file=orapwSY5221 password=oracle force=y entries=10 # Author : Robinson # Blog : http://blog.csdn.net/robinson_061 |
5、使用pfile啟動實例到nomount狀態
oracle@2go-devDB01uv:~> cp /u02/database/SY5221_RMAN/20121013/initSY5221.ora $ORACLE_HOME/dbs oracle@2go-devDB01uv:~> export ORACLE_SID=SY5221 oracle@2go-devDB01uv:~> sqlplus / as sysdba SQL> startup nomount; |
6、恢復控制文件并切換到mount狀態
#再開一個session oracle@2go-devDB01uv:~> export ORACLE_SID=SY5221 oracle@2go-devDB01uv:~> $ORACLE_HOME/bin/rman target / RMAN> restore controlfile from '/u02/database/SY5221_RMAN/20121013/SY5221_lev0_cntl.bak_c-1468911009-20121013-01'; RMAN> alter database mount; |
7、指定備份文件所在目錄
RMAN> catalog start with '/u02/database/SY5221_RMAN/20121013'; #此命令用于掃描整個目錄的備份片或者歸檔日志文件等 |
8、還原數據庫
RMAN> restore database; |
9、恢復數據庫
RMAN> recover database; unable to find archive log #在sqlplus提示符下繼續介質恢復 SQL> recover database using backup controlfile until cancel; Specify log: {<RET>=suggested | filename | AUTO | CANCEL} |
10、open 數據庫
#如果open 不成功,請嘗試shutdown 之后再次open,如果仍然不成功使用隱藏參數_allow_resetlogs_corruption打開數據庫
SQL> alter database open resetlogs; Database altered. |
11、一致性關閉數據庫并重啟數據庫
SQL> shutdown immediate; SQL> startup |
posted on 2013-06-13 10:25 順其自然EVO 閱讀(505) 評論(0) 編輯 收藏 所屬分類: 數據庫 、DB2