rman实现oracle数据库迁移

来源:互联网 发布:腾讯重工,洛克希德淘宝 编辑:程序博客网 时间:2024/05/20 06:30

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.   检查迁移