1.綜述

 

本次試驗主要目的是,利用Rman完成Oracle資料庫的遷移:

 

源伺服器:ARedHat Linux Enterprise 4Oracle 10

 

目標伺服器:BRedHat Linux Enterprise 4Oracle 10

 

遷移中的幾個要點:

 

(1)這是一種欺騙rman的思路,把在A伺服器上的備份完全搬到B伺服器上,在B伺服器上營造還原環境,目的就是讓rman「感覺」就像在A上做還原一樣。從而使還原後的資料庫與A上的資料庫完全一致。
(2)在源伺服器(A)上用rman進行create catalog和regist database的時候是在同一個資料庫上進行的,也就是存儲庫和目標庫是一個庫。
(3)要確保兩個伺服器上的以下完全目錄相同:
lROACLE_HOME
lORALCE_BASE
lORALE_HOME/admin/$ORACLE_SID 及其子目錄
l備份組目錄,就是存放備份組的目錄
(4)請嚴格按照以下步驟進行。
2.原庫備份

 

以下操作在源伺服器A上進行。

 

2.1.創建備份組目錄:

 

以Orcle使用者運行:

 

mkdir –p /home/oracle/store

 

創建的目錄用於存儲備份組。

 

2.2.創建Rman使用者

 

創建表空間

 

SQL>create tablespace rman datafile ‘/home/oracle/oracle/product/10.2.0/oradata/orcl/rman.rdf’

 

size 125m autoextend on next 50m maxsize 500m;

 

創建使用者

 

SQL>create user rman identified by rman;

 

SQL>alter user rman default tablespace rman quota unlimited on rman;

 

授權

 

SQL>grant recovery_catalog_owner to rman identified by rman;

 

2.3.備份源資料庫

 

export ORACLE_HOME=/home/oracle/oracle/product/10.2.0/db_4

 

export ORACLE_SID=orcl

 

cd $ORACLE_HOME/bin

 

rman catalog rman/rman

 

創建catalog:

 

RMAN> create catalog;

 

RMAN> exit;

 

註冊資料庫:

 

rman target / catalog rman

 

RMAN> register database:

 

開始備份:

 

注意,format中設置的路徑,一定要是在2.1步中創建的備份組目錄。

 

RMAN>run {

 

configure controlfile autobackup on;

 

configure controlfile autobackup format for device type disk to '/home/oracle/store/ %F';

 

allocate channel d1 type disk;

 

allocate channel d2 type disk;

 

backup incremental level=0 database format '/home/oracle/store /d_%T_%s.bak';

 

release channel d1;

 

release channel d2;

 

}

 

原資料庫備份完畢。會在備份組目錄中看到備份組,本例中為:

 

d_20100903_2.bak

 

d_20100903_1.bak

 

c-1229209037-20100903-00

 

3.準備目標伺服器環境(安裝Oracle)

 

以下命令在A上以root使用者執行。

 

3.1.配置目標伺服器環境

 

安裝缺失rpm

 

目標伺服器為RedHat Enterprise 4,為了正常安裝Oralce,需要安裝一下套裝程式:

 

compat-libstdc++-33-3.2.3-47.3.i386.rpm
libaio-0.3.105-2.i386.rpm
libaio-devel-0.3.105-2.i386.rpm
在RedHat的光碟鏡像中可以找到以上包,拷貝到RedHat中,按兩下安裝,或通過命令安裝:

 

rpm –vih path

 

檢查HostName

 

運行命令hostname,得到hostname,查看 /etc/hosts中是否有hostname的配置,如果沒有,添加。

 

配置系統內核參數

 

修改在/etc/sysctl.conf檔,在該檔中添加以下參數:

 

kernel.shmall = 2097152

 

kernel.shmmax = 536870912

 

kernel.shmmni = 4096

 

kernel.sem = 250 32000 100 128

 

fs.file-max = 65536

 

net.ipv4.ip_local_port_range = 1024 65000

 

net.core.rmem_default = 262144

 

net.core.rmem_max = 262144

 

net.core.wmem_default = 262144

 

net.core.wmem_max = 262144

 

3.2.創建Oracle使用者

 

groupadd oinstall

 

# groupadd dba

 

# useradd -g oinstall -G dba oracle (設定oracle使用者為oinstall、dba使用者組的成員)

 

# passwd oracle (設定oracle使用者的密碼)

 

3.3.配置Oracle使用者環境

 

重啟B,以oracle使用者登錄。

 

創建相應目錄

 

分析原伺服器,明確以下路徑:

 

(1)oracle_home: /home/oracle/oracle/

 

(2)oracle_base: /home/oracle/oracle/product/10.2.0/db_4

 

(3)oraInventory:/home/oracle/oraInventory

 

以上三個目錄在安裝Oracle時需要指定。

 

(4)$ORACLE_HOME/damin/orcl/及其子目錄,在本例中在本例中是:/home/oracle/oracle/product/10.2.0/db_4/admin/orcl

 

(5)備份組目錄,就是在備份資料庫的時候存放備份組的那個目錄:

 

/home/oracle/store

 

創建以上目錄:

 

mkdir –p /home/oracle/oracle/product/10.2.0/db_4

 

mkdir –p /home/oracle/oracle/product/10.2.0/db_4

 

mkdir –p /home/oracle/oraInventory

 

mkdir –p /home/oracle/oracle/product/10.2.0/db_4/admin/orcl

 

mkdir –p /home/oracle/oracle/product/10.2.0/db_4/admin/orcl/udump

 

mkdir –p /home/oracle/oracle/product/10.2.0/db_4/admin/orcl/pfile

 

mkdir –p /home/oracle/oracle/product/10.2.0/db_4/admin/orcl/dpdump

 

mkdir –p /home/oracle/oracle/product/10.2.0/db_4/admin/orcl/cdump

 

mkdir –p /home/oracle/oracle/product/10.2.0/db_4/admin/orcl/bdump

 

mkdir –p /home/oracle/oracle/product/10.2.0/db_4/admin/orcl/adump

 

mkdir –p /home/oracle/store

 

創建存儲Oraclea安裝檔的目錄:

 

mkdir –p /home/oracle/software

 

修改Oracle啟動環境

 

以oracle使用者登錄,修改oracle使用者下的 .bash_profile 檔。增加以下參數:

 

vi .bash_profile (執行vi命令來修改.bash_profile)

 

# Get the aliases and functions




if [ -f ~/.bashrc ]; then

 

. ~/.bashrc

 

fi




# User specific environment and startup programs




PATH=$PATH:$HOME/bin




export PATH

 

unset USERNAME

 

# 以下是我們所需配置的內容(ORACLE_HOMEh和ORALE_BASE根據實際情況自己定)

 

umask 022

 

TMP=/tmp; export TMP

 

TMPDIR=$TMP; export TMPDIR

 

ORACLE_BASE=/home/oracle/oracle/; export ORACLE_BASE

 

ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_4; export ORACLE_HOME

 

ORACLE_SID=orcl; export ORACLE_SID

 

ORACLE_TERM=xterm; export ORACLE_TERM

 

PATH=/usr/sbin:$PATH; export PATH

 

PATH=$ORACLE_HOME/bin:$PATH; export PATH

 

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH

 

CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

 

#LD_ASSUME_KERNEL=2.4.1; export LD_ASSUME_KERNEL

 

注意:設定完畢一定要重啟系統。

 

準備安裝程式

 

以oralce使用者運行:

 

複製和解壓10201_database_linux32.zip檔到/home/oracle/software下:
# unzip /home/oracle/software/10201_database_linux32.zip (解壓zip檔),也可以右鍵解壓。

 

如果本身是已經解壓好的檔直接複製、粘貼即可

 

3.4.運行安裝程式

 

以oracle使用者運行:

 

$ /home/oracle/software /database/./runInstaller

 

安裝期間注意:

 

(1)選擇高級安裝。

 

(2)設置一下目錄為之前創建的目錄,一定要和原伺服器一致:

 

oracle_home: /home/oracle/oracle/

 

oracle_base: /home/oracle/oracle/product/10.2.0/db_4

 

oraInventory:/home/oracle/oraInventory

 

(3)不要創建資料庫實例,只安裝Oracle軟體。便於調試錯誤。

 

注:如何區分ORACLE_HOME和ORACLE_BASE

 

ORACLE_BASE下是admin和product
ORACLE_HOME下則是Oracle的命令、連接庫、安裝助手、listener等等一系列的東東。
這只是ORACLE自己的定義習慣。ORACLE_HOME比ORACLE_BASE目錄要更深一些。也就是說:ORACLE_HOME=$ORACLE_BASE/product/version,但是如果安裝的不標準,會造成這兩個目錄不按以上規則組織,這時候就按以上提供的資訊區分。
ORACLE_BASE是oracle的根目錄,ORACLE_HOME是oracle產品的目錄。
簡單說,你如果裝了2個版本的oracle,那麼ORACLE_BASE可以是一個,但ORACLE_HOME是2個

3.5.創建測試庫,測試安裝環境

運行$ORACLE/bin/dbca 創建數測試據庫,測試安裝效果。

若不能遠端連線,可運行$ORACLE/bin/netca 配置監聽。

4.在目標資料庫上還原資料庫

拷貝備份組

把源伺服器(A)上的以下檔拷貝到目標伺服器(B)上的相應資料夾中:

(1)備份組目錄下的所有檔:

也就是/home/oracle/store 下的所有檔

(2)源伺服器上的初始化檔:

在源伺服器A的/home/oracle/oracle/product/10.2.0/db_4/admin/orcl/pfile 資料夾下,有個init.ora.xxxxxxxxx 檔,xxxxxxxxx是一串數位,本例中為:init.ora.928200991354。拷貝到B伺服器的相應資料夾下。

注意:目錄結構一定要一致。

啟動資料庫和Rman

修改/home/oracle/oracle/product/10.2.0/db_4/admin/orcl/pfile/init.ora.928200991354 檔,添加參數:

_allow_resetlogs_corruption=true

啟動資料庫:

在目標伺服器B上,以oracle使用者至執行:

export ORACLE_SID=orcl

sqlplus 「/as sysdba」

SQL> startup pfile=」/home/oracle/oracle/product/10.2.0/db_4/admin/orcl/pfile/init.ora.928200991354」 nomount;

SQL> exit;

啟動rman:

在源伺服器(A)中,查詢dnid:

select dbid from v$database;

記住這個數,本例中dbid為:1229209037

運行:

$ORACLE_HOME/bin/rman

RMAN> connect target / ;

RMAN> set dbid=1229209237;

還原控制檔

RMAN> restore controlfile from '/home/store/rman/c-1229209037-20100903-00’;

還原初始設定檔

RMAN> restore spfile from '/home/store/rman/c-1229209037-20100903-00';

還原資料庫

RMAN> alter database mount;

RMAN> restore database;

RMAN> recover database;

RMAN> Alter database open resetlogs;

RMAN> exit;

還原完成。
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()