nocode 发表于 2011-12-23 03:42

使用Catalog命令注册RMAN备份集

<P>有朋友问在Oracle 10G R2版本中:</P>
<P>  只有原库数据文件的RMAN备份集(此备份集不包含控制文件,log,参数文件等等,单纯只有数据库的所有数据文件的备份集),主库废了(可以理解为机房所在地地震了).</P>
<P>  现在要求在新实例中恢复这个RMAN的数据文件备份集.</P>
<P>  1.原数据库的表空间名称,数据文件结构名称数量--未知.</P>
<P>  2.原数据文件的FILE#也许是不连续的.(可能5号文件后6.7.8都空闲,然后是9号数据文件.)</P>
<P>  这样说吧,可以说你对原数据库一无所知.</P>
<P>  我试过dbms_backup_restore抽取RMAN备份集中数据文件,再建立控制文件,确实可以恢复但,这个方法有局限性,不够完美.</P>
<P>  抽取的时候需要指明FILE#,NEW_DATAFILE_NAME...</P>
<P>  可以说抽取是尝试的抽取.FILE#=5,6,7这样一个一个的尝试,这就对多数据文件的库很麻烦,而且文件号不连续会报错停止抽取动作.下一条抽取动作就无法继续执行.要手动关闭通道后再次抽取.</P>
<P>  迫切的想知道如何查出RMAN的备份集中的数据文件信息.</P>
<P>  想知道如何收集全建立出支持这个备份集的控制文件.</P>
<P>  我们知道Oracle10g丰富了catalog命令,使用这个命令,可以将RMAN的备份集注册到控制文件(或者目录数据库中)</P>
<P>  类似的一系列命令有:</P>
<P>CATALOG ARCHIVELOG '?/oradata/archive1_30.dbf', '?/oradata/archive1_31.dbf',<BR>         '?/oradata/archive1_32.dbf';<BR>CATALOG DATAFILECOPY '?/oradata/users01.bak' LEVEL 0;<BR>CATALOG START WITH '/tmp/arch_logs';<BR>CATALOG RECOVERY AREA NOPROMPT;<BR>CATALOG BACKUPPIECE '?/oradata/01dmsbj4_1_1.bcp'; </P>
<P>  但是注意这些命令是有限制的,其中的一个限制是不能注册备份文件到不同的数据库:</P>
<P>  You cannot use CATALOG to catalog a file that belongs to a different database.</P>
<P>  也就是说你至少还需要原数据库的控制文件。</P>
<P>  否则就会出现类似如下的错误:</P>
<P>$ rman target /<BR>Recovery Manager: Release 10.2.0.1.0 - Production on Thu May 22 01:02:56 2008<BR>Copyright (c) 1982, 2005, Oracle. All rights reserved.<BR>connected to target database (not started)<BR>RMAN&gt; set dbid=1490303982<BR>executing command: SET DBID<BR>RMAN&gt; startup mount;<BR>Oracle instance started<BR>database mounted<BR>Total System Global Area  285212672 bytes<BR>Fixed Size          1218992 bytes<BR>Variable Size        92276304 bytes<BR>Database Buffers      188743680 bytes<BR>Redo Buffers         2973696 bytes<BR>RMAN-00571: ===========================================================<BR>RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============<BR>RMAN-00571: ===========================================================<BR>RMAN-03002: failure of startup command at 05/22/2008 01:03:08<BR>RMAN-06189: current DBID 1490303982 does not match target mounted database (1492784050)</P>
<P><BR>  是否没有办法呢?当然是有的,我们可以先修改一个恢复数据库的DBID,然后再来注册这个备份集。</P>
<P>  修改DBID可以使用之前我曾经写过的,Oracle10g 的 dbms_backup_restore 包。</P>
<P>  修改之后就可以用来注册了,看看我注册一个种子数据库备份集的过程:</P>
<P>  C:&gt;rman target /</P>
<P>  恢复管理器: Release 10.2.0.3.0 - Production on 星期三 5月 2</P>
<P>1 22:25:34 2008<BR>  Copyright (c) 1982, 2005, Oracle. All rights reserved.</P>
<P>  已连接到目标数据库 (未启动)</P>
<P>  RMAN&gt; startup mount;</P>
<P>  Oracle 实例已启动</P>
<P>  数据库已装载</P>
<P>  系统全局区域总计  251658240 字节</P>
<P>  Fixed Size          1289988 字节</P>
<P>  Variable Size        171966716 字节</P>
<P>  Database Buffers       75497472 字节</P>
<P>  Redo Buffers         2904064 字节</P>
<P>  RMAN&gt; catalog start with 'd:obak';</P>
<P>  使用目标数据库控制文件替代恢复目录</P>
<P>  搜索与样式 d:obak 匹配的所有文件</P>
<P>  数据库未知文件的列表</P>
<P>  =====================================</P>
<P>  文件名: D:obakFULL20080520</P>
<P>  文件名: D:obakSeed_Database.dfb</P>
<P>  是否确实要将上述文件列入目录 (输入 YES 或 NO)? YES</P>
<P>  正在编制文件目录...</P>
<P>  目录编制完毕</P>
<P>  已列入目录的文件的列表</P>
<P>  =======================</P>
<P>  文件名: D:obakSeed_Database.dfb</P>
<P>  未列入目录的文件的列表</P>
<P>  =======================================</P>
<P>  文件名: D:obakFULL20080520</P>
<P>  RMAN-07518: 原因: 外部数据库文件 DBID: 1052376487 数据库名: EEYGLE</P>
<P>  RMAN&gt; list backup;</P>
<P>  备份集列表</P>
<P>  ===================</P>
<P>  BS 关键字 类型 LV 大小</P>
<P>  ------- ---- -- ----------</P>
<P>  2   Full  91.88M</P>
<P>  备份集 2 中的数据文件列表</P>
<P>  文件 LV 类型 Ckp SCN  Ckp 时间 名称</P>
<P>  ---- -- ---- ---------- ---------- ----</P>
<P> 1   Full 538267  19-11月-06 D:ORACLEORADATAEYGLEDATAFILEO1_MF_SYSTEM_3V7YLH8S_.DBF<BR> 2   Full 538267  19-11月-06 D:ORACLEORADATAEYGLEDATAFILEO1_MF_UNDOTBS1_3V7YLHHN_.DBF<BR> 3   Full 538267  19-11月-06 D:ORACLEORADATAEYGLEDATAFILEO1_MF_SYSAUX_3V7YLH9R_.DBF<BR> 4   Full 538267  19-11月-06 D:ORACLEORADATAEYGLEDATAFILEO1_MF_USERS_3V7YLHJ3_.DBF</P>
<P><BR>  备份集 副本号 1 属于备份集 2</P>
<P>  设备类型 经过时间 完成时间 压缩标记</P>
<P>  ----------- ------------ ---------- ---------- ---</P>
<P>  DISK    00:00:00  21-5月 -08 YES</P>
<P>  备份集 2 副本号 1的备份段列表</P>
<P>  BP 关键字 PC# 状态   段名称</P>
<P>  ------- --- ----------- ----------</P>
<P>  1   1 AVAILABLE D:OBAKSEED_DATABASE.DFB</P>
<P>  备份集 副本号 2 属于备份集 2</P>
<P>  设备类型 经过时间 完成时间 压缩标记</P>
<P>  ----------- ------------ ---------- ---------- ---</P>
<P>  DISK    00:00:00  21-5月 -08 YES</P>
<P>  备份集 2 副本号 2的备份段列表</P>
<P>  BP 关键字 Pc# 状态   段名称</P>
<P>  ------- --- ----------- ----------</P>
<P>  2   1 AVAILABLE D:OBAKSEED_DATABASE.DFB</P>
<P>  RMAN&gt;</P>
<P> </P>
页: [1]
查看完整版本: 使用Catalog命令注册RMAN备份集