本章阐述如何管理RMAN恢复目录。Catalog是一个数据库模式,它包含一个或多个目标数据库的RMAN仓库数据。
1.RMAN恢复目录概述
本节阐述与管理恢复目录相关的基本概念。
1.1.RMAN恢复目录的目的
恢复目录是一个数据库模式,RMAN使用它来存储关于一个或多个Oracle数据库的元数据。一般来说,在一个专门的数据库中存储目录(catalog)。
恢复目录提供以下好处:
1)恢复目录为存储在每个目标数据库的控制文件中的RMAN仓库创建冗余。恢复目录充当一个次要的元数据仓库。如果目标控制文件和所有备份丢失,那么RMAN元数据仍然存在恢复目录中。
2)恢复目录集中化所有目标数据库的元数据。存储元数据在一个单一的位置让报告和管理任务更容易执行。
3)恢复目录可以比控制文件存储更长久的元数据历史。如果必须执行一个在时间上比控制文件中的历史更往后的恢复,这个能力是有用的。增加的管理恢复目录数据库的复杂度可以被具有可用的扩展的备份历史的方便性所抵销。
某些RMAN特性只有当使用恢复目录的时候才可用。例如,可以存储RMAN脚本在恢复目录中。存储脚本的主要优点是对于任何连接到目标数据库和恢复目录的RMAN客户端都是可用的。命令文件只有RMAN客户端可以访问存储它们的文件系统时才是可用的。
当在Data Guard环境中使用RMAN,恢复目录是必需的。通过为所有主备数据库存储备份元数据库,目录让你可以卸载备份任务到一个备数据库,同时让你还原备份到环境中的其它数据库。
1.2.RMAN恢复目录的基本概念
恢复目录包含关于每个注册目标数据库的RMAN操作的元数据。当RMAN连接到恢复目录,RMAN从目录仅仅获取它的元数据。
目录包括以下类型的元数据:
1) 数据文件和归档redo日志备份集和备份片
2) 数据文件副本
3) 归档redo日志和它们的副本
4) 数据库结构(表空间和数据文件)
5) 存储脚本,它们是用户创建的命名的RMAN命令序列
6) 持久的RMAN配置设置
1.2.1.关于在RMAN恢复目录中的数据库注册
将数据库登记(enrolling)在恢复目录中为RMAN使用的过程称为注册(registration)。
建议的实践是注册环境中的每个目标数据库在一个单一的恢复目录中。例如,可以注册数据库prod1,prod2和prod3在一个单一的目录,目录由数据库catdb中的用户rco拥有。
1.2.2.关于在基础RMAN恢复目录中的元数据集中化
集中化的恢复目录(也称为基础恢复目录)的属主,可以授予或撤销其它数据库用户对目录的限制性访问。
每个限制性用户对它自己的元数据有完整的读写访问权限,这些元数据称为虚拟私有目录。RMAN元数据存储在虚拟私有目录的属主的模式中。基础恢复目录的属主决定每个虚拟私有目录用户可以访问哪个对象。
可以在使用或已经使用Oracle数据库不同版本的环境中使用恢复目录。作为结果,环境可以有不同版本的RMAN客户端,恢复目录数据库,恢复目录模式和目标数据库。“导入和移动恢复目录”章节阐述了如何合并多个恢复目录模式到一个模式。
1.2.3.关于RMAN恢复目录的重新同步
对于比如备份,还原和交叉检查的RMAN操作,RMAN总是首先更新控制文件,然后传播元数据到恢复目录。从挂载的控制文件到恢复目录的元数据流动被称为恢复目录重新同步,确保RMAN从控制文件获取的元数据是当前的。
1.2.4.关于存储的脚本(Stored Script)
可以使用存储的脚本作为命令文件的替代选项来管理频繁使用的RMAN命令序列。脚本存在恢复目录中而不是文件系统中。
**本地存储的脚本(local stored script)与当脚本创建时RMAN连接的目标数据库相关,只有当连接到目标数据库时才能够执行。**全局存储的脚本(global stored script)可在注册在恢复目录中的任何数据库上运行。虚拟私有目录用户对全局脚本只有只读权限。必须连接到基础恢复目录时才能创建或更新全局脚本。
1.2.5.Data Guard环境中的恢复目录
必须使用恢复目录来管理Data Guard环境中的所有物理主备数据库的RMAN元数据。RMAN使用恢复目录作为Data Guard环境的一个单一的数据源。
在相反的重新同步中,RMAN可以使用恢复目录来更新主备控制文件。在这种情况中,元数据从恢复目录流向控制文件而不是从相反方向。RMAN在大部分需要的情况下自动执行重新同步。因此,不需要经常使用RESYNC命令来手动重新同步。
1.3.管理恢复目录的基本步骤
管理恢复目录包括创建恢复目录,然后使用目录注册目标数据库。
设置恢复目录给RMAN使用的基本步骤如下所示:
1) 创建恢复目录。
2) 在恢复目录中注册目标数据库。这个步骤让RMAN存储目标数据库的元数据在恢复目录中。
3) 如果需要,登记任何更旧的记录不再存储在目标控制文件中的备份。
4) 如果需要,为特定的用户创建虚拟私有目录,决定它们允许访问的元数据。
5) 通过包含它在备份和恢复策略中来保护恢复目录。
2.创建恢复目录
2.1.配置恢复目录数据库
当使用恢复目录时,RMAN要求你维护一个恢复目录模式。恢复目录存储在模式的缺省表空间中。特权用户如SYS不能是恢复目录的属主。
决定将使用哪个数据库来安装恢复目录模式和如何备份数据库。同样,决定是否使目录数据库在ARCHIVELOG模式运行,这是建议的。
注:不要使用要备份的目标数据库作为恢复目录的数据库。如果目标数据库丢失,恢复目录必须受到保护。
2.1.1.规划恢复目录模式的大小
你必须分配空间给目录模式使用。恢复目录模式的大小取决于由目录监控的数据库数量。
模式随着归档redo日志文件和每个数据库的备份的数量的增加而增长。最后,如果你使用存储在目录中的RMAN存储脚本,某些空间必须分配给这些脚本。
例如,假设数据库trgt有100个文件,每天备份数据库1次,产生50个只包含1个备份片的备份集。如果假设备份片表中的每行使用最大数量的空间,那么每天的备份在恢复目录中消耗小于170KB。因此,如果备份1年,那么这段时间的总存储是大约62M。假设大约相同数量的归档日志,那么最差的情况是每年消耗大约120MB的元数据存储。对于更典型的情况,只有一部分备份片行空间被使用,每年15MB是更实际的。
如果规划注册多个数据库在恢复目录中,那么记得基于之前的计算累加每个数据库需要的空间来达成恢复目录模式的缺省表空间的总大小。
2.1.2.为恢复目录数据库分配磁盘空间
如果在现有的数据库中创建恢复目录,那么增加足够的空间来保存恢复目录模式的缺省表空间。
如果创建一个新的数据库来保存恢复目录,那么除了恢复目录模式本身的空间之外,为恢复目录数据库的其它文件分配空间:
1) SYSTEM和SYSAUX表空间
2) 临时表空间
3) Undo表空间
4) 在线redo日志文件
恢复目录数据库中使用的大部分空间用于支持表空间,例如,SYSTEM,临时和undo表空间。下表描述了典型的空间要求。
| 空间类型 | 空间要求 |
|---|---|
| SYSTEM表空间 | 90MB |
| 临时表空间 | 5MB |
| 回滚或undo表空间 | 5MB |
| 恢复目录表空间 | 在恢复目录中注册的每个数据库使用15MB |
| 在线redo日志 | 每个1MB(3组,每组有2个成员) |
2.2.创建恢复目录模式属主
在选择了恢复目录数据库和创建必要的空间之后,准备创建恢复目录的属主和授予用户必要的权限。
为以下部分中的指令假设以下背景信息:
1)在恢复目录数据库CATDB的表空间TOOLS存储恢复目录。如果使用RMAN关键字作为表空间名称,那么必须将它们包含在引号中和使用大写字母。
2)表空间TEMP存在恢复目录数据库中。
在恢复目录数据库中创建恢复目录模式:
1) 启动SQL*Plus,使用管理员权限连接到包含恢复目录的数据库。在这个示例中,数据库是catdb。
2) 为恢复目录数据用户和模式。
CREATE USER rco IDENTIFIED BY password
TEMPORARY TABLESPACE temp
DEFAULT TABLESPACE tools
QUOTA UNLIMITED ON tools;
3) 授予RECOVERY_CATALOG_OWNER角色给模式属主。这个角色给用户提供所有需要维护和查询恢复目录的权限。
GRANT RECOVERY_CATALOG_OWNER TO rco;
4)(可选地)通过运行dbmsrmanvpc.sql脚本和-vpd选项为恢复目录启用VPD模式。
以下命令为用户rco拥有的恢复目录启用VPD模式:
SQL> @/$ORACLE_HOME/rdbms/admin/dbmsrmanvpc.sql -vpd rco;
2.3.执行CREATE CATALOG命令
在创建目录属主之后,使用RMAN的CREATE CATALOG命令创建目录表。命令在目录属主的缺省表空间中创建目录。
注:从Oracle 12c Release 1(12.1.0.2)开始,恢复目录数据库必须使用Oracle数据库企业版。
创建恢复目录:
1) 为恢复目录数据库启用Oracle分区(Partitioning)。
2) 启动RMAN,使用恢复目录属主连接到包含目录的数据库。
$ rman catalog rco
3)运行CREATE CATALOG命令来创建目录。目录的创建要花费几分钟。如果目录表空间是用户的缺省表空间,那么运行以下命令:
RMAN>CREATE CATALOG;
可以在CREATE CATALOG命令中为目录指定表空间名称。例如:
RMAN> CREATE CATALOG TABLESPACE cat_tbs;
注:如果恢复目录的表空间的名称是RMAN关键字,那么它必须是大写字母和包含在引号中。例如:
RMAN> CREATE CATALOG TABLESPACE ‘CATALOG’;
4)使用SQL*Plus查询恢复目录来检查结果查看创建了哪些表:
SQL>SELECT TABLE_NAME FROM USER_TABLES;
3.在恢复目录中注册数据库
在恢复目录中注册目标数据库以便在恢复目录中维护数据库的记录。
3.1.关于在恢复目录中注册数据库
在恢复目录中登记(enrolling)目标数据库的过程称为注册(registration)。
如果目标数据库没有注册在恢复目录中,那么RMAN不能使用目录为数据库上的操作存储元数据。你仍然可以在没有注册的数据库上执行RMAN操作:RMAN总是存储它的元数据在目标数据库的控制文件中。
如果在Data Guard环境中没有使用恢复目录,那么使用REGISTER命令来注册每个数据库。每个数据库必须具有唯一的DBID。如果使用RMAN的DUPLICATE命令或在SQL语句CREATE DATABASE,那么数据库自动分配一个唯一的DBID。如果通过其它方式创建数据库,那么复制的数据库可能像它的源数据库一样含有相同的DBID。可以使用DBNEWID工具来更改DBID这样就可以在相同的目录中注册源和复制的数据库。
可以使用UNREGISTER命令来从恢复目录中取消注册数据库。
3.1.1.关于备数据库注册
在Data Guard环境中,主备数据库共享相同的DBID和数据库名称。为了符合在目录中注册的条件,在Data Guard环境中的每个数据库必须具有不同的DB_UNIQUE_NAME值。
数据库的DB_UNIQUE_NAME参数在初始化参数文件中设置。如果在Data Guard环境中使用RMAN,那么只可以为主数据库使用REGISTER DATABASE命令。
可以使用以下技术来注册备数据库到恢复目录中:
1) 当作为TARGET连接到备数据库时,RMAN自动注册数据库到恢复目录中。
2) 当为恢复目录未知的备数据库运行CONFIGURE DB_UNIQUE_NAME命令时,如果主数据库已经注册,RMAN自动注册这个备数据库。
3.2.使用REGISTER DATABASE命令注册数据库
为目标数据库使用恢复目录的第一步是在恢复目录中注册目标数据库。如果在Data Guard环境中使用目录,只能以这种方式注册主数据库。
使用以下步骤:
1)启动RMAN,连接到目标数据库和恢复目录。恢复目录数据库必须处于打开状态。
例如,执行以下命令使用网络服务名称catdb和用户rco(目录模式的属主)连接到目录数据库:
% rman TARGET / CATALOG rco@catdb;
2)如果目标数据库没有挂载,那么挂载或打开它:
STARTUP MOUNT;
3)注册目标数据库到连接的恢复目录:
REGISTER DATABASE;
RMAN在目录表中创建行来包含关于目标数据库的信息,然后从控制文件复制所有关于目标数据库的相关数据到目录,与控制文件同步目录。
4)确认注册已经成功。
RMAN> REPORT SCHEMA;

本文介绍如何管理Oracle RMAN恢复目录,包括创建、注册数据库、存储脚本等内容,并阐述了目录的重要性和维护方法。
最低0.47元/天 解锁文章
1020

被折叠的 条评论
为什么被折叠?



