顷刻三遗矢:采用rman duplicate 迁移数据库操作

来源:百度文库 编辑:九乡新闻网 时间:2024/05/02 15:21:56

环境介绍:
oradg:主机F4800 存储SUN 6140
oradgsb:主机M4000 存储SUN 6120
数据库为oracle 9i数据量大概500GB,过程仅仅就是将oradg上的数据迁移到oradgsb主机的数据库上;
1.备机上安装好oracle 9i的数据库server软件
2.配置listener.ora和tnsnames.ora文件,采用netmgr工具最易

例如:
listener.ora:

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = oradgsb)
(ORACLE_HOME = /opt/rac/database)
(SID_NAME = oradgsb)
)
)

LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oradgsb-host)(PORT = 1521))
)

tnsnames.ora:

ORADGSB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oradgsb-host)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = oradgsb)
)
)

确保主机两边都能够互相tnsping通对方。
3.创建目录
%mkdir -p /opt/app/oracle/admin/oradgsb/bdump
%mkdir -p /opt/app/oracle/admin/oradgsb/cdump
%mkdir -p /opt/app/oracle/admin/oradgsb/adump
%mkdir -p /opt/app/oracle/admin/oradgsb/udump
%mkdir -p /opt/app/oracle/admin/oradgsb/spfile
4.创建pfile启动文件
SQL>create pfile from spfile;
5.将initxxdb.ora ftp传输到oradgsb对应目录下,然后需要修改如下目录路径为现在的路径即可:
*.background_dump_dest=’/opt/app/oracle/admin/oradgsb/bdump’
*.control_files=’/oradata1/sysdata/control01.ctl’,'/oradata1/sysdata/control02.ctl’,'/oradata1/sysdata/control03.ctl’
*.core_dump_dest=’/opt/app/oracle/admin/oradgsb/cdump’
*.remote_login_passwordfile=’EXCLUSIVE’
*.user_dump_dest=’/opt/app/oracle/admin/oradgsb/udump’

6.创建sys登录口令文件
%orapwd file=$ORACLE_HOME/dbs/orapworadg.ora password=system entries=10
7.启动备机上的实例
$sqlplus “/as sysdba”
SQL>startup nomount pfile=’$ORACLE_HOME/dbs/initoradg.ora’
由于考虑到空间问题所以借助了对方的磁盘空间:
#share -F nfs -o rw=oradg /oradata3
#mount oradgsb:/oradata3 /oradata3

8.通过RMAM全库备份,以便于恢复到备机上。
%rman target /
rman> @backup_oradg.rman
其中backup_oradg.rman脚本内容如下:
run
{allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
backup full database format ‘/oradata3/oradg/full_back_oradg_%U’;
backup archivelog all format ‘/oradata3/oradg/arch_%U.arc’;
copy current controlfile to ‘/oradata3/oradg/control_bak.ctl’;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
其实这个需要将备份数据传送到备用的辅助数据库对应的归档目录,而本次由于是采用NFS功能,所以没做哪些操作:
在此运行archive log list记下日志序列号;
连接到目标数据库
%rman target /
rman>connect auxiliary sys/system@oradgsb
rman>@duplicate_oradg.rman
其中duplicate_oradg.rman脚本内容如下:
run
{ set until logseq n thread 1;
allocate auxiliary channel c1 type disk;
allocate auxiliary channel c2 type disk;
allocate auxiliary channel c3 type disk;
allocate auxiliary channel c4 dype disk;
set newname for datafile 1 to ‘/oradata1/sysdata/system_ln10_1.dbf;’
…     …        …         …
set newname for datafile 200 to ‘/oradata1/userdata/perfdbs03.dbf;’
duplicate target database to “oradg”
logfile
‘/oradata1/sysdata/redo01a.log’ size 256m,
‘/oradata1/sysdata/redo02a.log’ size 256m,
‘/oradata1/sysdata/redo03a.log’ size 256m;
‘/oradata1/sysdata/redo04a.log’ size 256m;
}
文件比较多,所以当时只能根据空间分散后后期调整;
最后再oradgsb主机上执行:
%sqlplus “/as sysdba”
SQL>alter database open resetlogs;
最后需要手工增加temp tablespace空间,还要检查索引是否有实效需要进行重建的。