使用rman复制数据库

发表于:2007-07-02来源:作者:点击数: 标签:
-------------------------------------------- 实验环境: windows + oracle 10.1.0.2.0 原数据库:ning[归档模式] 复制数据库:test Author:NinGoo 2005-3-27 ------------------------------------------- 在同一台server上使用rman的Duplicate Database

--------------------------------------------



实验环境:windows + oracle 10.1.0.2.0



原数据库:ning[归档模式]  复制数据库:test



Author:NinGoo    2005-3-27



-------------------------------------------




 


在同一台server上使用rman的Duplicate Database创建复制数据库。




 


1.    创建新的instance




 


准备好相应的目录结构



E:\oracle\product\10.1.0\admin\test\bdump



E:\oracle\product\10.1.0\admin\test\cdump



E:\oracle\product\10.1.0\admin\test\create



E:\oracle\product\10.1.0\admin\test\pfile



E:\oracle\product\10.1.0\admin\test cripts



E:\oracle\product\10.1.0\admin\test\udmp




 


创建参数文件inittest.ini(可使用原库的pfile进行修改),主要参数如下:



db_name=test



background_dump_dest=E:\oracle\product\10.1.0\admin\test\bdump



core_dump_dest=E:\oracle\product\10.1.0\admin\test\cdump



user_dump_dest=E:\oracle\product\10.1.0\admin\test\udump



control_files=@#E:\oracle\oradata\test\control01.ctl@#,@#E:\oracle\oradata\test \control02.ctl@#,@#E:\oracle\oradata\test \control03.ctl@#



DB_FILE_NAME_CONVERT=(@#E:\oracle\oradata\ning@#,@#E:\oracle\oradata\test@#)



LOG_FILE_NAME_CONVERT=(@#E:\oracle\oradata\ning@#,@#E:\oracle\oradata\test@#)



置于E:\oracle\product\10.1.0\admin\test\pfile或者E:\oracle\product\10.1.0\db_1\database即可。




 


使用oradim创建新的instance



c:\>oradim -new -sid test



例程已创建。




 


使用orapwd创建password文件



c:\>orapwd file=E:\oracle\product\10.1.0\db_1\database\PWDtest.ora password=test entries=10




 


配置好监听和tnsnames,然后使用sqlplus测试连接




 


c:\>sqlplus /nolog




 


SQL*Plus: Release 10.1.0.2.0 - Production on 星期日 3月 27 21:01:13 2005




 


Copyright (c) 1982, 2004, Oracle.  All rights reserved.




 


SQL> conn sys@test as sysdba



请输入口令:



已连接到空闲例程。




 



 


2.使用rman备份原库




 


RMAN> connect target sys/ning@ning




 


连接到目标数据库: NING (DBID=1141544503)



正在使用目标数据库控制文件替代恢复目录




 


RMAN> backup full database tag @#fullbk@# format @#e:\oracle\oraback\full%u_%s_%p@#;




 


启动 backup 于 27-3月 -05



使用通道 ORA_DISK_1



通道 ORA_DISK_1: 启动全部数据文件备份集



通道 ORA_DISK_1: 正在指定备份集中的数据文件



输入数据文件 fno=00001 name=E:\ORACLE\ORADATA\NING YSTEM01.DBF



输入数据文件 fno=00002 name=E:\ORACLE\ORADATA\NING\UNDOTBS01.DBF



输入数据文件 fno=00004 name=E:\ORACLE\ORADATA\NING\USERS01.DBF



输入数据文件 fno=00003 name=E:\ORACLE\ORADATA\NING YSAUX01.DBF



输入数据文件 fno=00005 name=E:\ORACLE\ORADATA\NING\TEST01.DBF



通道 ORA_DISK_1: 正在启动段 1 于 27-3月 -05



通道 ORA_DISK_1: 已完成段 1 于 27-3月 -05



段 handle=E:\ORACLE\ORABACK\FULL03GGCQA4_3_1 comment=NONE



通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:45



通道 ORA_DISK_1: 启动全部数据文件备份集



通道 ORA_DISK_1: 正在指定备份集中的数据文件



备份集中包括当前控制文件



在备份集中包含当前的 SPFILE



通道 ORA_DISK_1: 正在启动段 1 于 27-3月 -05



通道 ORA_DISK_1: 已完成段 1 于 27-3月 -05



段 handle=E:\ORACLE\ORABACK\FULL04GGCQBH_4_1 comment=NONE



通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:09



完成 backup 于 27-3月 -05




 



 


3.使用rman复制数据库




 


c:\>rman target sys/ning@ning  AUXILIARY sys/test@test




 


恢复管理器: 版本10.1.0.2.0 - Production




 


opyright (c) 1995, 2004, Oracle.  All rights reserved.




 


连接到目标数据库: NING (DBID=1141544503)



已连接到备用数据库: test (未装载)




 


RMAN> DUPLICATE TARGET DATABASE TO @#test@#;



启动 Duplicate Db 于 27-3月 -05



使用通道 ORA_AUX_DISK_1




 


内存脚本的内容:



{



   set until scn  169960;



   set newname for datafile  1 to



 "E:\ORACLE\ORADATA\TEST YSTEM01.DBF";



   set newname for datafile  2 to



 "E:\ORACLE\ORADATA\TEST\UNDOTBS01.DBF";



   set newname for datafile  3 to



 "E:\ORACLE\ORADATA\TEST YSAUX01.DBF";



   set newname for datafile  4 to



 "E:\ORACLE\ORADATA\TEST\USERS01.DBF";



   set newname for datafile  5 to



 "E:\ORACLE\ORADATA\TEST\TEST01.DBF";



   restore



   check readonly



   clone database



   ;



}



正在执行内存脚本




 


正在执行命令: SET until clause




 


正在执行命令: SET NEWNAME




 


正在执行命令: SET NEWNAME




 


正在执行命令: SET NEWNAME




 


正在执行命令: SET NEWNAME




 


正在执行命令: SET NEWNAME




 


启动 restore 于 27-3月 -05



使用通道 ORA_AUX_DISK_1




 


通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集



通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件



正将数据文件00001恢复到E:\ORACLE\ORADATA\TEST YSTEM01.DBF



正将数据文件00002恢复到E:\ORACLE\ORADATA\TEST\UNDOTBS01.DBF



正将数据文件00003恢复到E:\ORACLE\ORADATA\TEST YSAUX01.DBF



正将数据文件00004恢复到E:\ORACLE\ORADATA\TEST\USERS01.DBF



正将数据文件00005恢复到E:\ORACLE\ORADATA\TEST\TEST01.DBF



通道 ORA_AUX_DISK_1: 已恢复备份段 1



段句柄 = E:\ORACLE\ORABACK\FULL03GGCQA4_3_1 标记 = FULLBK



通道 ORA_AUX_DISK_1: 恢复完成



完成 restore 于 27-3月 -05



sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "test" RESETLOGS ARCHIVELOG



  MAXLOGFILES     16



  MAXLOGMEMBERS      3



  MAXDATAFILES      100



  MAXINSTANCES     8



  MAXLOGHISTORY      454



 LOGFILE



  GROUP  1 @#E:\oracle\oradata\test\redo01.log@# SIZE 10 M ,



  GROUP  2 @#E:\oracle\oradata\test\redo02.log@# SIZE 10 M ,



  GROUP  3 @#E:\oracle\oradata\test\redo03.log@# SIZE 10 M



 DATAFILE



  @#E:\ORACLE\ORADATA\TEST YSTEM01.DBF@#



 CHARACTER SET ZHS16GBK




 



 


内存脚本的内容:



{



   switch clone datafile all;



}



正在执行内存脚本




 


数据文件 2 已转换成数据文件副本



输入数据文件副本 recid=1 stamp=554071105 文件名=E:\ORACLE\ORADATA\TEST\UNDOTBS01



.DBF



数据文件 3 已转换成数据文件副本



输入数据文件副本 recid=2 stamp=554071105 文件名=E:\ORACLE\ORADATA\TEST YSAUX01.



DBF



数据文件 4 已转换成数据文件副本



输入数据文件副本 recid=3 stamp=554071105 文件名=E:\ORACLE\ORADATA\TEST\USERS01.D



BF



数据文件 5 已转换成数据文件副本



输入数据文件副本 recid=4 stamp=554071105 文件名=E:\ORACLE\ORADATA\TEST\TEST01.DB



F




 


内存脚本的内容:



{



   set until scn  169960;



   recover



   clone database



    delete archivelog



   ;



}



正在执行内存脚本




 


正在执行命令: SET until clause




 


启动 recover 于 27-3月 -05



使用通道 ORA_AUX_DISK_1




 


正在开始介质的恢复




 


存档日志线程 1 序列 16 已作为文件 E:\ORACLE\ARCH\ARC00016_0553949015.001 存在于



磁盘上



存档日志文件名 =E:\ORACLE\ARCH\ARC00016_0553949015.001 线程 =1 序列 =16



完成介质的恢复



完成 recover 于 27-3月 -05




 


内存脚本的内容:



{



   shutdown clone;



   startup clone nomount ;



}



正在执行内存脚本




 


数据库已卸载



Oracle 例程已关闭




 


已连接到备用数据库 (未启动)



Oracle 例程已启动




 


系统全局区域总计     142606336 字节




 


Fixed Size                      787848 字节



Variable Size                116390520 字节



Database Buffers              25165824 字节



Redo Buffers                    262144 字节



sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "test" RESETLOGS ARCHIVELOG



  MAXLOGFILES     16



  MAXLOGMEMBERS      3



  MAXDATAFILES      100



  MAXINSTANCES     8



  MAXLOGHISTORY      454



 LOGFILE



  GROUP  1 @#E:\oracle\oradata\test\redo01.log@# SIZE 10 M ,



  GROUP  2 @#E:\oracle\oradata\test\redo02.log@# SIZE 10 M ,



  GROUP  3 @#E:\oracle\oradata\test\redo03.log@# SIZE 10 M



 DATAFILE



  @#E:\ORACLE\ORADATA\TEST YSTEM01.DBF@#



 CHARACTER SET ZHS16GBK




 



 


内存脚本的内容:



{



   catalog clone datafilecopy  "E:\ORACLE\ORADATA\TEST\UNDOTBS01.DBF";



   catalog clone datafilecopy  "E:\ORACLE\ORADATA\TEST YSAUX01.DBF";



   catalog clone datafilecopy  "E:\ORACLE\ORADATA\TEST\USERS01.DBF";



   catalog clone datafilecopy  "E:\ORACLE\ORADATA\TEST\TEST01.DBF";



   switch clone datafile all;



}



正在执行内存脚本




 


已将数据文件副本列入目录



数据文件副本 filename=E:\ORACLE\ORADATA\TEST\UNDOTBS01.DBF recid=1 stamp=5540716



73




 


已将数据文件副本列入目录



数据文件副本 filename=E:\ORACLE\ORADATA\TEST YSAUX01.DBF recid=2 stamp=55407167



3




 


已将数据文件副本列入目录



数据文件副本 filename=E:\ORACLE\ORADATA\TEST\USERS01.DBF recid=3 stamp=554071673




 



 


已将数据文件副本列入目录



数据文件副本 filename=E:\ORACLE\ORADATA\TEST\TEST01.DBF recid=4 stamp=554071673




 


数据文件 2 已转换成数据文件副本



输入数据文件副本 recid=1 stamp=554071673 文件名=E:\ORACLE\ORADATA\TEST\UNDOTBS01



.DBF



数据文件 3 已转换成数据文件副本



输入数据文件副本 recid=2 stamp=554071673 文件名=E:\ORACLE\ORADATA\TEST YSAUX01.



DBF



数据文件 4 已转换成数据文件副本



输入数据文件副本 recid=3 stamp=554071673 文件名=E:\ORACLE\ORADATA\TEST\USERS01.D



BF



数据文件 5 已转换成数据文件副本



输入数据文件副本 recid=4 stamp=554071673 文件名=E:\ORACLE\ORADATA\TEST\TEST01.DB



F




 


内存脚本的内容:



{



   Alter clone database open resetlogs;



}



正在执行内存脚本




 


数据库已打开



完成 Duplicate Db 于 27-3月 -05




 



 


4.检查复制库的状态




 


C:\>sqlplus /nolog




 


SQL*Plus: Release 10.1.0.2.0 - Production on 星期日 3月 27 21:05:52 2005




 


Copyright (c) 1982, 2004, Oracle.  All rights reserved.




 


SQL> conn sys@test as sysdba



请输入口令:



已连接。




 


SQL> select instance_name,status from v$instance;




 


INSTANCE_NAME    STATUS



---------------- ------------



test             OPEN




 



 


然后去掉inittest.ora的DB_FILE_NAME_CONVERT和LOG_FILE_NAME_CONVERT参数,再使用该文件生成spfile




 


SQL> create spfile from pfile=@#E:\oracle\product\10.1.0\db_1\database\inittest.ora@#;




 


文件已创建。




 



 


===============================================================



参考文章:



Oracle® Database Backup and Recovery Advanced User@#s Guide 10g Release 1 (10.1) Part Number B10734-01


原文转自:http://www.ltesting.net