ITPub博客

首页 > Linux操作系统 > Linux操作系统 > RMAN恢复目录(Recovery Catalog)

RMAN恢复目录(Recovery Catalog)

原创 Linux操作系统 作者:tolywang 时间:2011-04-06 14:37:04 0 删除 编辑


一,概念

RMAN信息库(RMAN repository) 

备份过程中产生的元数据,包括备份文件的名称、路径、完成备份的时间、检
查点SCN 等这些用来描述备份文件的数据,存放的地点叫做RMAN信息库。RMAN
信息库可以存放在两个不同的地点: 目标数据库的控制文件,或者恢复目录
(Recovery Catalog)里 。


控制文件中存放的数据可以分为两类: 可删除的记录(包括归档日志文件的历史
记录以及RMAN备份的元数据)和不可删除的记录(包括数据文件列表和联机日志文
件列表等),如果需要在控制文件中存放新的记录,则可以通过删除那些可删除的
记录,为新的记录提供可用的空间,如果RMAN备份的元数据被删除,RMAN就不能
获得有关备份的信息,从而也就不能进行恢复了。


可以通过设置初始化参数controlfile_record_keep_time来决定控制文件中可删除
的记录所占用的空间,默认为7,表示控制文件中始终保持最近7天的可删除记录,
也就是说7天之前的备份信息及归档日志文件的历史记录被删除。如果设置为0,可
重用部分就不会扩展,只要需要, records就可以被重用。


恢复目录(Recovery Catalog)

为了让备份信息保存更长的时间,Oracle还提供了恢复目录(Recovery Catalog)来
存放RMAN信息库。恢复目录由数据库里的多个表和存储过程组成,这些对象位于同
一个schema下。用表来存放RMAN备份的元数据,可以永久性的保存下去,而不用删
除历史记录来释放空间。恢复目录是可选的配置,不是必需的。

 

 

 


二, 恢复目录创建及测试 

我们使用下面的步骤创建恢复目录及测试 : 


1). 建立catalog數據庫(假设名称为rman)  
2). 建立用于恢复目录的表空间
    SQL> create tablespace rcat_tbs datafile 
      'D:\oracle\product\10.2.0\oradata\rman\rman_tbs01.dbf' size 200M;
3). 建立用户 
    SQL> create user rman_cat identified by oracle default tablespace
       rcat_tbs temporary tablespace temp ;
    SQL> alter user rman_cat quota unlimited on rcat_tbs;
    SQL> grant recovery_catalog_owner to rman_cat ;
    SQL> grant connect , resource to rman_cat ;
4). 创建恢复目录 (创建恢复目录都做了什么 ??? ) 
    C:\>rman  catalog  rman_cat/oracle@rman01 
     恢复管理器: Release 10.2.0.1.0 - Production on 星期一 5月 23 09:15:42 2011
     Copyright (c) 1982, 2005, Oracle.  All rights reserved.
     连接到恢复目录数据库 
   RMAN> create catalog tablespace rcat_tbs ; 
     恢复目录已创建
5). 通过RMAN连接到目标库和恢复目录后,将目标库注册到恢复目录中。
   C:\>rman  target sys/oracle@test01  catalog  rman_cat/oracle@rman01
    恢复管理器: Release 10.2.0.1.0 - Production on 星期一 5月 23 09:19:38 2011
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    连接到目标数据库: TEST01 (DBID=3556425887)
    连接到恢复目录数据库
  RMAN> register database;
   注册在恢复目录中的数据库
   正在启动全部恢复目录的 resync
   完成全部 resync

6). RMAN备份(测试) 

RMAN> backup device type disk format 'D:\rmanbak\%U' database plus archivelog;

启动 backup 于 23-5月 -11
当前日志已存档
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=138 devtype=DISK
通道 ORA_DISK_1: 正在启动存档日志备份集     -- RMAN首先备份归档日志
通道 ORA_DISK_1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =2 记录 ID=1 时间戳=749647947
输入存档日志线程 =1 序列 =3 记录 ID=2 时间戳=749647948
输入存档日志线程 =1 序列 =4 记录 ID=3 时间戳=749647948
输入存档日志线程 =1 序列 =5 记录 ID=4 时间戳=749985337
输入存档日志线程 =1 序列 =6 记录 ID=5 时间戳=750151960
输入存档日志线程 =1 序列 =7 记录 ID=6 时间戳=750930950
输入存档日志线程 =1 序列 =8 记录 ID=7 时间戳=751016900
输入存档日志线程 =1 序列 =9 记录 ID=8 时间戳=751275452
输入存档日志线程 =1 序列 =10 记录 ID=9 时间戳=751448005
输入存档日志线程 =1 序列 =11 记录 ID=10 时间戳=751462753
输入存档日志线程 =1 序列 =12 记录 ID=11 时间戳=751462820
输入存档日志线程 =1 序列 =13 记录 ID=12 时间戳=751534217
输入存档日志线程 =1 序列 =14 记录 ID=13 时间戳=751621423
输入存档日志线程 =1 序列 =15 记录 ID=14 时间戳=751887465
通道 ORA_DISK_1: 正在启动段 1 于 23-5月 -11
通道 ORA_DISK_1: 已完成段 1 于 23-5月 -11
段句柄=D:\RMANBAK\07MD1P3C_1_1 标记=TAG20110523T093747 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:17
完成 backup 于 23-5月 -11

启动 backup 于 23-5月 -11
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动全部数据文件备份集        -- 然后RMAN备份数据文件  
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST01\SYSTEM01.DBF
输入数据文件 fno=00003 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST01\SYSAUX01.DBF
输入数据文件 fno=00002 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST01\UNDOTBS01.DBF
输入数据文件 fno=00004 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST01\USERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 23-5月 -11
通道 ORA_DISK_1: 已完成段 1 于 23-5月 -11
段句柄=D:\RMANBAK\08MD1P3U_1_1 标记=TAG20110523T093805 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:45

通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件                -- 随后RMAN备份控制文件及spfile 
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 23-5月 -11
通道 ORA_DISK_1: 已完成段 1 于 23-5月 -11
段句柄=D:\RMANBAK\09MD1P5B_1_1 标记=TAG20110523T093805 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 23-5月 -11 

启动 backup 于 23-5月 -11
当前日志已存档
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动存档日志备份集      -- 最后备份备份过程中生成的归档日志
通道 ORA_DISK_1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =16 记录 ID=15 时间戳=751887534
通道 ORA_DISK_1: 正在启动段 1 于 23-5月 -11
通道 ORA_DISK_1: 已完成段 1 于 23-5月 -11
段句柄=D:\RMANBAK\0AMD1P5F_1_1 标记=TAG20110523T093855 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02
完成 backup 于 23-5月 -11

 

备注:

如果目标数据库是mounted状态,也可以备份,只是连接到目标库的时候
显示为未打开状态 (或者英文显示为mounted) 。 
C:\>rman  target sys/oracle@test01  catalog  rman_cat/oracle@rman01
恢复管理器: Release 10.2.0.1.0 - Production on 星期一 6月 13 13:43:35 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
已连接到目标数据库: TEST01 (DBID=3556425887, 未打开)
连接到恢复目录数据库
RMAN> backup device type disk format 'D:\rmanbak\%U' database plus archivelog; 

nomount状态下就不能做备份了,只能做RMAN恢复。

 


通过下面命令查看备份的内容:

RMAN> list backup ; 
RMAN> list backup of controlfile ;  列出备份的控制文件对应的备份集
RMAN> list backup of spfile ;       列出备份的spfile文件对应的备份集
RMAN> list backup of archivelog all;  列出备份的归档日志及对应的备份集
RMAN> list backup of database;    列出备份的数据文件及对应的备份集
RMAN> list backup of datafile 2;  列出某个数据文件(号码)所在的备份集合。

 


查看恢复目录中到底有哪些table及procedure或packages.

看到用户rman_cat下table名称(37个) :
AL
BCB
BCF
BDF
BP
BRL
BS
BSF
CCB
CCF
CDF
CKP
CONF
CONFIG
DB
DBINC
DF
DFATT
FB
NODE
OFFR
ORL
RCVER
RLH
ROUT
RR
RSR
RT
SCR
SCRL
TF
TFATT
TS
TSATT
XAL
XCF
XDF

 

看到用户rman_cat下有两个package,没有看到procedure :
DBMS_RCVCAT
DBMS_RCVMAN

 

看到用户rman_cat下有53个视图

RC_ARCHIVED_LOG
RC_BACKUP_ARCHIVELOG_DETAILS
RC_BACKUP_ARCHIVELOG_SUMMARY
RC_BACKUP_CONTROLFILE
RC_BACKUP_CONTROLFILE_DETAILS
RC_BACKUP_CONTROLFILE_SUMMARY
RC_BACKUP_COPY_DETAILS
RC_BACKUP_COPY_SUMMARY
RC_BACKUP_CORRUPTION
RC_BACKUP_DATAFILE
RC_BACKUP_DATAFILE_DETAILS
RC_BACKUP_DATAFILE_SUMMARY
RC_BACKUP_FILES
RC_BACKUP_PIECE
RC_BACKUP_PIECE_DETAILS 
RC_BACKUP_REDOLOG
RC_BACKUP_SET
RC_BACKUP_SET_DETAILS
RC_BACKUP_SET_SUMMARY
RC_BACKUP_SPFILE
RC_BACKUP_SPFILE_DETAILS
RC_BACKUP_SPFILE_SUMMARY
RC_CHECKPOINT
RC_CONTROLFILE_COPY
RC_COPY_CORRUPTION
RC_DATABASE
RC_DATABASE_BLOCK_CORRUPTION
RC_DATABASE_INCARNATION
RC_DATAFILE
RC_DATAFILE_COPY
RC_LOG_HISTORY
RC_OFFLINE_RANGE
RC_PROXY_ARCHIVEDLOG
RC_PROXY_ARCHIVELOG_DETAILS
RC_PROXY_ARCHIVELOG_SUMMARY
RC_PROXY_CONTROLFILE
RC_PROXY_COPY_DETAILS
RC_PROXY_COPY_SUMMARY
RC_PROXY_DATAFILE
RC_REDO_LOG
RC_REDO_THREAD
RC_RESYNC
RC_RMAN_BACKUP_JOB_DETAILS
RC_RMAN_BACKUP_SUBJOB_DETAILS
RC_RMAN_BACKUP_TYPE
RC_RMAN_CONFIGURATION
RC_RMAN_OUTPUT
RC_RMAN_STATUS
RC_STORED_SCRIPT
RC_STORED_SCRIPT_LINE
RC_TABLESPACE
RC_TEMPFILE
RC_UNUSABLE_BACKUPFILE_DETAILS

 

在recover.bsq文件包含的PL/SQL块中,主要调用了目标数据库中以下两个程序包:
DBMS_RCVMAN : 用来读取目标库的控制文件信息,将这些信息传给RMAN, 从而RMAN
可以获得要备份的文件列表以及其他所需的信息。
dbms_backup_restore :  完成具体的备份恢复工作,并在控制文件中写入备份的元
数据,比如创建备份的时间,路径,大小等。


在恢復目录库中也有两个packages :
DBMS_RCVMAN
DBMS_RCVCAT

 


恢復目錄是如何工作的 ?

恢复目录是可选的配置,不是必需的。其中的数据从目标库的控制文件那里同步过来。
RMAN 的元数据始终都必须要存放一份在目标数据库的控制文件中,并不会因为我们配置
了恢复目录,就不在控制文件中记录备份的元数据了,在使用RMAN完成备份恢复操作以后,
会将控制文件里的RMAN元数据同步到恢复目录里,只不过,默认情况下,controlfile中
的元数据只保留最近7天的信息,恢复目录中则可以保留更长时间的元数据。不仅如此,
恢复目录还可以同时为多个目标数据库服务。 因此我们可以在同一个恢复目录里保留多个
目标数据库相关的RMAN元数据。

备注: 可以这样理解,如果存在恢复目录,那么目标库的控制文件类似“联机日志文件”,
而恢复目录就类似“归档日志文件”, 恢复目录中的所有内容都是从目标库的控制文件
中同步过来的,而默认情况下,目标库中的控制文件只是记录7天的元数据信息,而恢复
目录可以保留更长时间的元数据 (像归档一样) 。

如果要使用恢复目录,则在使用RMAN时,除了要建立到目标库的连接之外,还必须建立到
恢复目录所在数据库的连接,并在恢复目录所在库中创建对应的服务器进程和session.

例如: C:\>rman target sys/oracle@test01  catalog  rman_cat/oracle@rman01


詳細參考: http://www.360doc.com/content/11/0522/09/2054285_118496253.shtml 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-704588/,如需转载,请注明出处,否则将追究法律责任。

下一篇: RMAN常用命令
请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    13470932