技术开发 频道

如何使用RMAN在两机器间克隆数据库

【IT168 技术文档】

    目标数据库和克隆数据库分别在两台机器,其环境都一样:
    WINDOWS 2000 SERVER SP4
IE6.1, ORACLE9205
    
在本文中,使用的是目标数据库上的RMAN,目录数据库在第3台机器上,
    
操作步骤:
    1
、连接目标数据库,对目标数据库做全库备份
 
D:ORACLEBIN>rman 恢复管理器: 版本9.2.0.5.0 - Production Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved. RMAN> connect catalog rman/rman@187 连接到恢复目录数据库 RMAN> connect target / 连接到目标数据库: ENCORE (DBID=3146513770) RMAN> run 2> {allocate channel d1 type disk maxpiecesize = 500m; 3> backup full database 4> format 'E:rmanbakdb_%d_%s_%p_%t'; 5> release channel d1; 6> } 分配的通道: d1 通道 d1: sid=16 devtype=DISK 启动 backup2004-06-28 21:03:31 通道 d1: 正在启动 full 数据文件备份集 通道 d1: 正在指定备份集中的数据文件 在备份集中包含当前的 SPFILE 备份集中包括当前控制文件 输入数据文件 fno=00001 name=D:ORACLEORADATAENCORESYSTEM01.DBF 输入数据文件 fno=00002 name=D:ORACLEORADATAENCOREUNDOTBS01.DBF 输入数据文件 fno=00005 name=D:ORACLEORADATAENCOREEXAMPLE01.DBF 输入数据文件 fno=00008 name=D:ORACLEORADATAENCORETOOLS01.DBF 输入数据文件 fno=00010 name=D:ORACLEORADATAENCOREXDB01.DBF 输入数据文件 fno=00006 name=D:ORACLEORADATAENCOREINDX01.DBF 输入数据文件 fno=00009 name=D:ORACLEORADATAENCOREUSERS01.DBF 输入数据文件 fno=00003 name=D:ORACLEORADATAENCORECWMLITE01.DBF 输入数据文件 fno=00004 name=D:ORACLEORADATAENCOREDRSYS01.DBF 输入数据文件 fno=00007 name=D:ORACLEORADATAENCOREODM01.DBF 通道 d1: 正在启动段 12004-06-28 21:03:37 通道 d1: 已完成段 12004-06-28 21:05:02 段 handle=E:RMANBAKDB_ENCORE_1_1_530053412 comment=NONE 通道 d1: 正在启动段 22004-06-28 21:05:02 通道 d1: 已完成段 22004-06-28 21:06:07 段 handle=E:RMANBAKDB_ENCORE_1_2_530053412 comment=NONE 通道 d1: 备份集已完成, 经过时间:00:02:35 完成 backup2004-06-28 21:06:07 释放的通道: d1 RMAN>
   
    2
、备份目标数据库的参数文件
SQL> create pfile from spfile; 文件已创建 SQL>
  
      3
--将目标数据库的参数文件(第2步创建)拷贝到克隆机器上,修改相应的参数(主要是实例名和数据库名,和bdumpudumpcdump 等后台进程的跟踪文件存放的路径,本文中,克隆数据库的实例名为 CLONE,数据库名为 CLONE_DB),然后在克隆机器上创建实例
D:oraclebin>oradim -new -sid clone -PFILE D:ORACLEdatabaseINITCLONE.ORA -INTPWD SYS1 D:oraclebin>
   
    4
--修改克隆数据库的监听器,增加对克隆数据库的监听(第3段)

SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = D:ORACLE) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = ORACLE) (ORACLE_HOME = D:ORACLE) (SID_NAME = ORACLE92) ) (SID_DESC = (GLOBAL_DBNAME = clone_db) (ORACLE_HOME = D:ORACLE) (SID_NAME = clone) ) )
    
    5
、修改RMAN机器上的TNSNAMES.ORA文件,增加此连接串,保证RMAN使用此连接串能够连接到克隆数据库的实例

CLONE = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.194)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = CLONE_DB) )


    6
、将目标数据库的备份集拷贝到克隆数据库机器的同一位置,并启动克隆数据库(nomount 状态)
    
由于第1步骤中没有备份日志,在使用
RMAN> run 2> {allocate auxiliary channel d1 type disk; 3> set newname for datafile 1 to 'F:CLONEdataSYSTEM01.DBF';
    脚本克隆数据库时,出现 NO BACKUP COPY 之类的错误,
之后补充备份目标数据库的日志,

RMAN> run 2> {allocate channel d1 type disk maxpiecesize = 500m; 3> backup archivelog all 4> format 'E:rmanbaklog_%d_%s_%p_%t'; 5> release channel d1; 6> } 分配的通道: d1 通道 d1: sid=11 devtype=DISK 启动 backup2004-06-28 21:42:18 当前日志已存档 通道 d1: 正在启动存档日志备份集 通道 d1: 正在指定备份集中的存档日志 输入存档日志线程 =1 序列 =107 记录 ID=107 时间戳=528371132 输入存档日志线程 =1 序列 =108 记录 ID=108 时间戳=530053839 输入存档日志线程 =1 序列 =109 记录 ID=109 时间戳=530054855 输入存档日志线程 =1 序列 =110 记录 ID=110 时间戳=530055437 输入存档日志线程 =1 序列 =111 记录 ID=111 时间戳=530055540 输入存档日志线程 =1 序列 =112 记录 ID=112 时间戳=530055739 通道 d1: 正在启动段 12004-06-28 21:42:23 通道 d1: 已完成段 12004-06-28 21:42:26 段 handle=E:RMANBAKLOG_ENCORE_2_1_530055742 comment=NONE 通道 d1: 备份集已完成, 经过时间:00:00:04 完成 backup2004-06-28 21:42:26 释放的通道: d1



0
相关文章