rman的资料库默认放在控制文件中,恢复编录是保存raman资料库的一个数据库方案。
1、在其他数据库中创建恢复编录
创建表空间
create tablespace rc_data datafile '/u01/app/oracle/oradata/orcl/rc_data01.dbf'
size 20m autoextend on next 4m;
创建编录的数据库用户
create user rcowner identified by oracle
temporary tablespace temp
default tablespace rc_data
quota unlimited on rc_data;
授权
grant recovery_catalog_owner to rcowner;
创建必要的对象
rman catalog rcowner/oracle@oid
create catalog;
查看结果
SQL>select OBJECT_TYPE,count(*) objects from user_objects
group by object_type;
2、使用编录
通过sys用户和rcowner用户同时连接目标数据库和恢复编录数据库
rman target sys/oracle@orcl catalog rcowner/oracle@oid
把目标数据库信息注册到恢复编录中
register database;
第一次注册,完成以下任务
(1)在对应的表写入数据库相关信息,比如db表中发现目标数据库的DBID。
(2)目标控制文件中的RMAN资料库上传到恢复编录
(3)同步控制文件和恢复编录
手动同步恢复编录,正常执行rman相关命令会自动同步,排除一下情况
(1)rman操作没有连接到恢复编录
(2)备份频率过低,超过control_file_record_keep_time参数设置
(3)数据库物理结构发生变化。
resync catalog;
3、使用编录,rman能力增强
(1)没有控制文件,rman也能知道备份的位置
在nomount状态下
rman target /
list backupset summary; #报错
rman target / catalog rcowner/oracle@oid
list backupset summary; #能查询出备份集
同样,没有编录,restore控制文件时候,需要通过from指定控制文件所在地方,使用编录from字句是不必要的。
(2)显示数据库数据文件历史结构
report schema; #都能显示当前的数据文件信息
report schema at time "sysdate - interval '1' day"; #使用编录才能显示历史的数据文件结构
(3)保存rman脚本
没有编录
cat backupDB.rman
run{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
backup database;
}
rman target / @backupDB.rman
使用编录
create script backup_db from file '/home/oracle/sciprt/backupDB.rman';
create script #当前目标库执行
create global script #所有注册的数据库执行
list [golbal] script names; #列出备份脚本
print [golbal] script backup_db; #查看脚本内容
run {execute script backup_db;} #执行脚本
(4)reset database
参考不完全恢复