catalog start with 是一个很好的命令. 有了这个命令后, 基本上可以不再使用catalog数据库了 . 因为可以通过这个命令将以前的备份集信息重新导入到当前控制文件中,
一般应用于使用rman恢复, 控制文件又是旧的或者是手工创建的(这样的控制文件当然没有最新的备份集的信息), 通过catalog start with
可以将最新的备份集以及归档日志文件列表导入到控制文中, 然后就可以进行rman的恢复了.
例如,拷贝备份集到 /data01 下 :
RMAN> startup nomount;
RMAN> restore controlfile from '/data01/testdb_CF_c-3148051840-20110813-00'; #
从控制文件备份集恢复控制文件
RMAN> alter database mount;
catalog start with
'/data01/'; (一定要用“/”结尾,不然找不到真实的路径)
run{ allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
set newname for datafile '+DATA/icare/datafile/system.309.717426483' to '/backup/supt/suptdata/system.309.717426483';
set newname for datafile '+DATA/icare/datafile/apps_undots1.283.717426031' to '/backup/supt/suptdata/apps_undots1.283.717426031'; set newname for datafile '+DATA/icare/datafile/apps_ts_tx_data.273.717426033' to '/backup/supt/suptdata/apps_ts_tx_data.273.717426033'; set newname for datafile
'+DATA/icare/onlinelog/group_16.265.743248917' to
'/data02/supt/suptdata/group_16.265.743248917';
restore database force;
switch datafile all;
}
如果备份集存放在多个路径,可以多次执行
RMAN> catalog start with '/data01/';
RMAN>catalog start with '/data02/';
RMAN>catalog start with '/data03/';
类似的一系列命令有:
CATALOG ARCHIVELOG '?/oradata/archive1_30.dbf', '?/oradata/archive1_31.dbf', '?/oradata/archive1_32.dbf';
CATALOG DATAFILECOPY '?/oradata/users01.bak' LEVEL 0;
CATALOG START WITH '/tmp/arch_logs';
CATALOG RECOVERY AREA NOPROMPT;
CATALOG BACKUPPIECE '?/oradata/01dmsbj4_1_1.bcp';
但是注意这些命令是有限制的,其中的一个限制是不能注册备份文件到不同的数据库:
You cannot use CATALOG to catalog a file that belongs to a
different database.
也就是说你至少还需要原数据库的控制文件。
是否没有办法呢?当然是有的,我们可以先修改一个恢复数据库的DBID,然后再来注册这个备份集。
修改DBID可以使用之前我曾经写过的,Oracle10g 的 dbms_backup_restore 包。
修改之后就可以用来注册了,看看我注册一个种子数据库备份集的过程:
C:\>rman target /
恢复管理器: Release 10.2.0.3.0 - Production on 星期三 5月 21 22:25:34
2008
Copyright (c) 1982, 2005, Oracle. All rights
reserved.
已连接到目标数据库 (未启动)
RMAN> startup mount;
Oracle 实例已启动
数据库已装载
系统全局区域总计 251658240 字节
Fixed
Size 1289988 字节
Variable
Size 171966716 字节
Database
Buffers 75497472 字节
Redo
Buffers 2904064 字节
RMAN> catalog start with 'd:\obak';
使用目标数据库控制文件替代恢复目录
搜索与样式 d:\obak 匹配的所有文件
数据库未知文件的列表
=====================================
文件名: D:\obak\FULL20080520
文件名: D:\obak\Seed_Database.dfb
是否确实要将上述文件列入目录 (输入 YES 或 NO)? YES
正在编制文件目录...