您好,欢迎访问一九零五行业门户网

Linux平台下使用RMAN进行Oracle数据库迁移

将oracle数据库从一台机器迁移到另外的一台机器(同为linux平台),设置为不同的路径,不同的实例名
实验目的:将oracle数据库从一台机器迁移到另外的一台机器(同为linux平台),,设置为不同的路径,不同的实例名
源端:
oracle_base=/u01/app/oracle
oracle_home=/u01/app/oracle/product/10.2.0/db_1
oracle_sid=test
数据文件位置:/oradata/test
目标端:
oracle_base=/u02/app/oracle
oracle_home=/u02/app/oracle/product/10.2.0/db_1
oralce_sid=test2
数据文件位置:/oradata2/test2
注:两台主机非一台,但是主机名一致均为model.rhel5
第一步:在源端取得备份数据
查询一下mai用户下的数据,做最后校验使用
mai@test > select * from tab;
tname tabtype clusterid
------------------------------ ------- ----------
bonus table
dept table
emp table
salgrade table
test table
test01 table
开始备份:
$ oracle@model /mnt/hgfs/software/backup> rman target /
rman> run{
2> allocate channel c1 device type disk format '/mnt/hgfs/software/backup/%t_%u';
3> backup database;
4> backup current controlfile format '/mnt/hgfs/software/backup/%t_ctl_%u';
5> backup spfile format '/mnt/hgfs/software/backup/%t_spfile_%u';
6> release channel c1;
7> }
备份集信息:
$ oracle@model /mnt/hgfs/software/backup> ls -lh
total 304m
-rwxrwxrwx 1 root root 594m aug 29 20:31 20120829_02njsrtb_1_1*
-rwxrwxrwx 1 root root 6.9m aug 29 20:31 20120829_03njss0b_1_1*
-rwxrwxrwx 1 root root 6.8m aug 29 20:31 20120829_ctl_04njss0k_1_1*
-rwxrwxrwx 1 root root 96k aug 29 20:31 20120829_spfile_05njss0m_1_1*
第二步:备端的准备
1、安装数据库软件,基位置参考上文说明。
2、创建相关的目录:
$ oracle@model ~> env | grep oracle
oracle_base=/u02/app/oracle
oracle_home=/u02/app/oracle/product/10.2.0/db_1
$ oracle@model ~> cd $oracle_base
$ oracle@model /u02/app/oracle> mkdir flash_recovery_area
$ oracle@model /u02/app/oracle> mkdir -p admin/test2
$ oracle@model /u02/app/oracle> cd admin/test2
$ oracle@model /u02/app/oracle/admin/test2> mkdir {a,b,c,d,u}dump
第三步:开始恢复,此时恢复的实例名为test
$ oracle@model ~> export oracle_sid=test
$ oracle@model ~> rman target /
rman> startup nomount
1、恢复spfile:
rman> restore spfile from '/mnt/hgfs/software/backup/20120829_spfile_05njss0m_1_1';
rman> shutdown immediate;
2、编辑参数文件,使参数中的相关路径变更为新路径
$ oracle@model ~> sqlplus / as sysdba
sys@test > create pfile from spfile;
编辑生成的$oracle_home/dbs/inittest.ora文件,将文件中的路径改为新的路径,即:
/oradata/test/修改为/oradata2/test2/
/u01/app/oracle/修改为/u02/app/oracle
/u01/app/oracle/admin/test修改为/u02/app/oracle/admin/test2
$ oracle@model ~> sqlplus / as sysdba
sys@test > create spfile from pfile;
3、恢复控制文件:
$ oracle@model ~> rman target /
rman> startup nomount
rman> restore controlfile from '/mnt/hgfs/software/backup/20120829_ctl_04njss0k_1_1';
4、恢复数据文件:
rman> alter database mount;
rman> run {
2> set newname for datafile 1 to '/oradata2/test2/system01.dbf';
3> set newname for datafile 2 to '/oradata2/test2/undotbs01.dbf';
4> set newname for datafile 3 to '/oradata2/test2/sysaux01.dbf';
5> set newname for datafile 4 to '/oradata2/test2/users01.dbf';
6> set newname for datafile 5 to '/oradata2/test2/example01.dbf';
7> restore database;
8> }
5、重建控制文件,更新控制文件中的数据文件路径
$ oracle@model ~> sqlplus / as sysdba
sys@test > alter database backup controlfile to trace;
到$oracle_base/admin/udump中找到刚才生成的trace文件,复制出其中的创建文件集的片段,修改其中的路径信息为新的路径信息,备用
sys@test > shutdown immediate;
sys@test > startup nomount
利用刚才修改过的控制文件创建脚本重建控制文件:
sys@test > create controlfile reuse database test resetlogs archivelog
2 maxlogfiles 16
3 maxlogmembers 3
4 maxdatafiles 100
5 maxinstances 8
6 maxloghistory 292
7 logfile
8 group 1 '/oradata2/test2/redo01.log' size 50m,
9 group 2 '/oradata2/test2/redo02.log' size 50m,
10 group 3 '/oradata2/test2/redo03.log' size 50m
11 -- standby logfile
12 datafile
13 '/oradata2/test2/system01.dbf',
14 '/oradata2/test2/undotbs01.dbf',
15 '/oradata2/test2/sysaux01.dbf',
16 '/oradata2/test2/users01.dbf',
17 '/oradata2/test2/example01.dbf'
18 character set zhs16gbk
19 ;
sys@test > alter database open resetlogs;
至此,数据库已经能够正常启动了,但是此时的实例名以及数据库名均为test,需要将其更改为test2,继续向下走
更多详情见请继续阅读下一页的精彩内容:
oracle基础教程之通过rman复制数据库
rman备份策略制定参考内容
rman备份学习笔记
oracle数据库备份加密 rman加密
其它类似信息

推荐信息