rman實現oracle數據庫遷移

1.    綜述... 1

2.    原庫備份... 2

2.1.     創建備份集目錄:... 2

2.2.     創建Rman用戶... 2

2.3.     備份數據庫... 2

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

3.1.     配置目標服務器環境... 3

安裝缺失rpm.. 3

檢查HostName. 3

配置系統內核參數... 3

3.2.     創建Oracle用戶... 4

3.3.     配置Oracle用戶環境... 4

創建相應目錄... 4

修改Oracle啓動環境... 5

準備安裝程序... 5

3.4.     運行安裝程序... 5

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

4.    在目標數據庫上還原數據庫... 6

拷貝備份集... 6

啓動數據庫和Rman. 6

還原控制文件... 7

還原初始配置文件... 7

還原數據庫... 7

5.    檢查遷移... 7


 

1.   綜述

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

源服務器:A  RedHat Linux Enterprise 4   Oracle 10

目標服務器:B  RedHat Linux Enterprise 4   Oracle 10

遷移中的幾個要點:

(1)       這是一種欺騙rman的思路,把在A服務器上的備份完全搬到B服務器上,在B服務器上營造還原環境,目的就是讓rman“感覺”就像在A上做還原一樣。從而使還原後的數據庫與A上的數據庫完全一致。

(2)       在源服務器(A)上用rman進行create catalogregist database的時候是在同一個數據庫上進行的,也就是存儲庫和目標庫是一個庫。

(3)       要確保兩個服務器上的以下完全目錄相同:

l         ROACLE_HOME

l         ORALCE_BASE

l         ORALE_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用戶爲oinstalldba用戶組的成員)

# passwd oracle (設定oracle用戶的密碼)

3.3. 配置Oracle用戶環境

重啓B,oracle用戶登錄。

創建相應目錄

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

1oracle_home:  /home/oracle/oracle/

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

3oraInventory:  /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_HOMEhORALE_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_HOMEORACLE_BASE

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

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;

 

還原完成。

5.   檢查遷移

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章