遷移資料庫的方法有多種,較為常用的則是使用RMAN來遷移。使用RMAN遷移資料庫屬於資料庫的物理備份與恢複範疇,整個過程中資料庫的相關資訊是完整地鏡像。因此,基於此種方式還原恢複的資料庫用於測試會使得與真實的生產環境差異相對較小。本文描述了使用RMAN來還原Oracle 10g資料庫的過程。
一、主要步驟
1、備份資料庫
2、ftp備份到目的伺服器
3、為目標資料庫建立項目目錄
4、為目標資料庫建立pfile或spfile(使用RMAN還原或複製原pfile到目的伺服器)
5、還原控制檔案
6、還原資料檔案
7、OPEN 資料庫
其實,這幾個步驟比較好理解,整個實質是對資料庫體繫結構以及資料庫整個啟動過程的理解。
關於體繫結構和啟動過程可以參考
Oracle執行個體和Oracle資料庫(Oracle體繫結構)
Oracle 資料庫執行個體啟動關閉過程
下面對此進行一下描述
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指令碼
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
- mkdir -p /u02/database/SY5221/flash_recovery_area
- mkdir -p /u02/database/SY5221
- mkdir -p /u02/database/SY5221/archive
- mkdir -p /u02/database/SY5221/backup
- mkdir -p /u02/database/SY5221/bdump
- mkdir -p /u02/database/SY5221/cdump
- mkdir -p /u02/database/SY5221/udump
- mkdir -p /u02/database/SY5221/controlf
- mkdir -p /u02/database/SY5221/oradata
- mkdir -p /u02/database/SY5221/redolog
- mkdir -p /u02/database/SY5221/undo
- mkdir -p /u02/database/SY5221/temp
- mkdir -p /u02/database/SY5221/ref_data
- mkdir -p /u02/database/SY5221/BNR
- mkdir -p /u02/database/SY5221/BNR/full
- mkdir -p /u02/database/SY5221/BNR/dump
- mkdir -p /u02/database/SY5221/dbcreatelogs
-
- ORACLE_SID=SY5221; export ORACLE_SID
- oracle@2go-devDB01uv:~> chmod u+x mkdir_sy5221.sh
- oracle@2go-devDB01uv:~> ./mkdir_sy5221.sh
4、建立密碼檔案
- oracle@2go-devDB01uv:~> cd $ORACLE_HOME/dbs
- oracle@2go-devDB01uv:~/OraHome10g/dbs> orapwd file=orapwSY5221 password=oracle force=y entries=10