使用RMAN遷移數(shù)據(jù)庫(kù)到異機(jī)
遷移數(shù)據(jù)庫(kù)的方法有多種,較為常用的則是使用RMAN來(lái)遷移。使用RMAN遷移數(shù)據(jù)庫(kù)屬于數(shù)據(jù)庫(kù)的物理備份與恢復(fù)范疇,整個(gè)過(guò)程中數(shù)據(jù)庫(kù)的相關(guān)信息是完整地鏡像。因此,基于此種方式還原恢復(fù)的數(shù)據(jù)庫(kù)用于測(cè)試會(huì)使得與真實(shí)的生產(chǎn)環(huán)境差異相對(duì)較小。本文描述了使用RMAN來(lái)還原Oracle 10g數(shù)據(jù)庫(kù)的過(guò)程。
一、主要步驟
1、備份數(shù)據(jù)庫(kù)
2、ftp備份到目的服務(wù)器
3、為目標(biāo)數(shù)據(jù)庫(kù)創(chuàng)建項(xiàng)目目錄
4、為目標(biāo)數(shù)據(jù)庫(kù)創(chuàng)建pfile或spfile(使用RMAN還原或復(fù)制原pfile到目的服務(wù)器)
5、還原控制文件
6、還原數(shù)據(jù)文件
7、OPEN 數(shù)據(jù)庫(kù)
其實(shí),這幾個(gè)步驟比較好理解,整個(gè)實(shí)質(zhì)是對(duì)數(shù)據(jù)庫(kù)體系結(jié)構(gòu)以及數(shù)據(jù)庫(kù)整個(gè)啟動(dòng)過(guò)程的理解。
下面對(duì)此進(jìn)行一下描述
a、首先需要為實(shí)例的運(yùn)行環(huán)境創(chuàng)建相應(yīng)的目錄,如dump位置,datafile位置,以及archive位置等等
如果是恢復(fù)到不同的路徑,則后續(xù)RMAN時(shí)需要使用set newname for datafile 方式更新到控制文件
b、實(shí)例需要pfile來(lái)啟動(dòng),因此需要恢復(fù)pfile或spfile,然后將數(shù)據(jù)庫(kù)切換到nomount狀態(tài)
c、接下來(lái)的一步是通過(guò)控制文件將數(shù)據(jù)庫(kù)切換到mount狀態(tài),因此需要恢復(fù)控制文件,然后再mount
d、mount之后就可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行還原(restore)操作
e、還原完畢之后是對(duì)數(shù)據(jù)庫(kù)進(jìn)行恢復(fù)(recovery)操作(restore和recover需要基于控制文件的備份信息或恢復(fù)目錄)
f、最后是open數(shù)據(jù)庫(kù)
二、遷移演示
1、備份原數(shù)據(jù)庫(kù)
此處演示的源數(shù)據(jù)庫(kù)與目標(biāo)數(shù)據(jù)庫(kù)使用相同的版本為Oracle 10g R2(10.2.0.3),操作系統(tǒng)都為suse 10 +Sp3
備份過(guò)程略,有關(guān)備份腳本,請(qǐng)參考:linux 下RMAN備份shell腳本:http://blog.csdn.net/robinson_0612/article/details/8029245
2、ftp所有的備份文件到需要恢復(fù)的服務(wù)器上
打包整個(gè)備份集ftp到目標(biāo)服務(wù)器或scp到目標(biāo)服務(wù)器
下面是ftp到目標(biāo)服務(wù)器解壓后包含的文件
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、創(chuàng)建所需的目錄(使用oracle用戶)
oracle@2go-devDB01uv:~> more mkdir_sy5221.sh ORACLE_SID=SY5221; export ORACLE_SID |
4、創(chuàng)建密碼文件
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啟動(dòng)實(shí)例到nomount狀態(tài)
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、恢復(fù)控制文件并切換到mount狀態(tài)
#再開(kāi)一個(gè)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'; #此命令用于掃描整個(gè)目錄的備份片或者歸檔日志文件等 |
8、還原數(shù)據(jù)庫(kù)
RMAN> restore database; |
9、恢復(fù)數(shù)據(jù)庫(kù)
RMAN> recover database; unable to find archive log #在sqlplus提示符下繼續(xù)介質(zhì)恢復(fù) SQL> recover database using backup controlfile until cancel; Specify log: {<RET>=suggested | filename | AUTO | CANCEL} |
10、open 數(shù)據(jù)庫(kù)
#如果open 不成功,請(qǐng)嘗試shutdown 之后再次open,如果仍然不成功使用隱藏參數(shù)_allow_resetlogs_corruption打開(kāi)數(shù)據(jù)庫(kù)
SQL> alter database open resetlogs; Database altered. |
11、一致性關(guān)閉數(shù)據(jù)庫(kù)并重啟數(shù)據(jù)庫(kù)
SQL> shutdown immediate; SQL> startup |
posted on 2013-06-13 10:25 順其自然EVO 閱讀(505) 評(píng)論(0) 編輯 收藏 所屬分類: 數(shù)據(jù)庫(kù) 、DB2