ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 备份和恢复 Oracle 11g - 学习笔记 4 -1

备份和恢复 Oracle 11g - 学习笔记 4 -1

原创 Linux操作系统 作者:kris3106 时间:2008-04-14 21:27:04 0 删除 编辑
B28270-01
第四部分 管理RMAN备份
  第十二章 管理恢复目录

第十二章 管理恢复目录
一、恢复目录概要
       这章解释恢复目录的基本概念。
(一)为什么使用恢复目录
           恢复目录:是一个数据库schema,用于RMAN存储关于一个或多个数据库元数据。
           恢复目录的优势:
           1. 是对于控制文件存储RMAN元数据库的冗余。恢复目录是作为次要元数据资料库存在的。
               如果目标数据库控制文件和备份丢失,那么恢复目录中仍然保存RMAN元数据。
           2. 恢复目录可以把所有目标数据库的元数据集中管理。这样使得管理备份更容易。
           3. 恢复目录可以存储比控制文件更长的历史元数据。

          #一些RMAN特性,只在恢复目录中被支持。Oracle Data Guard必须使用恢复目录。

(二)恢复目录的基本原理
           恢复目录包含每一个注册的目标数据库的RMAN操作信息。当RMAN连接到恢复目录时,RMAN只从
           它的目录中获得元数据。目录中包含下面这些信息:
               + 数据文件和归档重做日志的备份集和备份片
               + 数据文件拷贝
               + 归档重做日志和他的拷贝
               + 数据库结构(表空间和数据文件)
               + 存储脚本(被命名一系列RMAN的操作,类似批处理#个人理解)
               + 永久的RMAN配置设定
          
          1. 数据库注册
              在恢复目录中登记一个数据库叫做注册(registration)。
              推荐做法:把所有的目标数据库注册到一个恢复目录中。
 
          2. 基恢复目录(base recovery catalog)中元数据的集中化
              基恢复目录也就是被集中化的恢复目录,它的所有者可以赋予或回收对目录的访问权限给数
              据库的其它用户。每一个受限制的用户对他自己的元数据有读/写访问权限,这个元数据叫做
              虚拟私有目录(virtual private catalog)。基恢复目录的所有者可以决定哪个虚拟目录用户可
              以访问哪个对象。
    
              你可以在一个多数据库版本的环境中使用RMAN。也就是你的环境可以有不同版本的RMAN客
              户端,恢复目录数据库,恢复目录schema和目标数据库。

          3. 恢复目录的再同步
               对于RMAN操作(如备份,恢复,交叉验证)RMAN首先更新控制文件,然后把这些信息更新
               到恢复目录中,这个从被挂在(mount)控制文件传输元数据到恢复目录的过程叫做再同步。
               这样做是为了确保RMAN从最新的控制文件中获得元数据。
 
          4. 存储脚本
              存储脚本是对把一系列命令写到一个文件的替代方法。只不过脚本存储在恢复目录中而不是文件
              系统中。
              本地存储脚本:创建的脚本是和当前RMAN连接的目标数据库相关联的,也就是这样的脚本,只
                                        有连接到相应的目标数据库才能执行。
              全局存储脚本:可以运行在注册在恢复目录的任何数据库。虚拟私有目录用户对这样的脚本有只
                                       读权限。要想创建或更新全局存储脚本必须连接到基恢复目录。

          5. Data Guard 中恢复目录
              要管理Data Guard中的RMAN的元数据就必须使用恢复目录。包括主数据库和standby数据库。只
              有恢复目录中的元数据才是可信赖的。RMAN可以用恢复目录更新控制文件中的元数据。(反再同
              步)一般再同步是自动被执行。

(三)管理恢复目录的基本步骤
          1. 创建恢复目录
          2. 在恢复目录中注册目标数据
          3. 如果需要,收集那些已经在目标数据库控制文件过期的备份记录
          4. 如果需要,创建虚拟私有目录
          5. 通过在备份和恢复策略中考虑恢复目录来保护恢复目录
二、创建恢复目录
(一)配置恢复目录数据库
           当你使用一个恢复目录时,RMAN要求你维护一个恢复目录schema。这个恢复目录存储在这个schema
           的默认表空间上。注意SYS用户不能是恢复目录的所有者。
          1. 恢复目录schema的大小
              恢复目录schema的大小取决于这个目录监视数据库的个数。同样这个schema大小会随着每个数据库的
              归档重做日志和备份的增加而增加。最后如果在恢复目录中存有脚本,那么也要分配脚本的空间。

              举例,假设trgt数据库有100个文件,并且你一天做一次备份,产生50个备份集,每个备份集包含一个备
              份片。如果假设备份片表格中每行使用最大数量的空间,那么在每天的备份会消耗170KB。所以如果你   
              备份1年,就是62MB。假设对归档日志的数量也是相同的,那么最坏的情况一年产生120MB的元数据。
              对于一个更典型的例子,备份片中行的空间只有一部分会被使用,每年15MB。

              如果你计划注册多个数据库,用同样的方法考虑每个数据库。
          2. 为恢复目录数据库分配磁盘空间
              如果你使用已经存在的数据库,那么为恢复目录的默认表空间添加额外的空间。如果新创建数据库,那么
              添加恢复目录schema大小之外,考虑下面的文件:
              * SYSTEM 和 SYSAUX表空间
              * 临时表空间
              * Undo表空间
              * 在线重做日志文件

             典型的恢复目录空间要求(1年)
             -------------------------------------------------------------
             空间类型                             空间大小
            --------------------------------------------------------------
            SYSTEM表空间                   90MB
            Temp表空间                         5MB
            Rollback Or undo 表空间     5MB
            恢复目录表空间                   15MB(一个数据库)
            在线重做日志                       1MB
            ----------------------------------------------------------------

(二)创建恢复目录schema所有者
          目标数据库:target
          恢复目录数据库:catalog
          #注意和RMAN中的catalog和target关键字区分
         1. 创建用户和schema
             >SET ORACLE_SID=catalog
             >sqlplus /nolog
            SQL>conn /as sysdba
            SQL>create user rman identified by rman
                     temporary tablespace temp
                     default tablespace tools
                     quota unlimited on tools;

          2. 赋予权限
              SQL>grant recovery_catalog_owner to rman;

(三)执行CREATE CATALOG命名
           用create catalog命令创建目录表。
          1. 连接恢复目录数据库
              >rman catalog rman/rman@catalog
                #第一个catalog是rman的关键字

          2. 运行create catalog命令
              RMAN>create catalog;
             #当然这里也可以指定创建的表空间
             #create catalog tablespace tablespacename;
             #如果使用的表空间的名字是RMAN中的关键字,在使用的时候要用大写,并用单引号。

         3. 查看上步创建的表
             >sqlplus /nolog
             SQL>conn rman/rman@catalog
             SQL>select table_name from user_tables; 

三 、在恢复目录中注册数据库
(一)关于注册数据库
           在恢复目录中登记目标数据库叫做注册(registration)。如果目标数据库没有注册到恢复目录
           中 ,那么用RMAN对目标数据库的操作将不能存放到恢复目录中。注意:即使没有在恢复目录
           中注册数据库也可以使用RMAN对目标数据库惊醒备份。(因为RMAN存储元数据在控制文件
           中)如果现在在Data Guard环境中没有使用恢复目录,那么如果想把每一个数据库注册到恢复
           目录中,则每个数据库要有一个唯一的DBID。如果使用DUPLICATE或是create database创建
           的数据库,那么系统自动分配一个独一无二的DBID。如果用其它的方法如拷贝数据库,则原数
           据库和拷贝数据库可能有相同的DBID。你可以使用DBNEWID改变DBID。

          1. 关于standby数据库的注册
              在Data Guard环境中主数据库和standby数据库有相同的DBID和数据库名字。如果想注册到恢
              复目录中那么每一个数据库必须有一个不同的db_unique_name。db_unique_name初始化指定。

              在Data Guard环境中你只能注册主数据库。你可以用下面的技术注册standby数据库:
              a. 当你用TARGET连接standby数据库时,RMAN自动注册这个数据库。
              b. 当你为一个standby数据库运行CONFIGURE db_unique_name命令时,这件事恢复目录并不
                  知道。只要主数据库注册到恢复目录中RMAN将自动注册这个standby数据库。

(二)用register database命令注册数据库
          >rman target sys/password@target catalog rman/rman@catalog
          rman>register database;
          rman>report schema;

四、 在恢复目录中catalog备份
        控制文件中的RMAN操作信息应该是一个循环写的方式,也就是存在一部分很久以前的备份,
        可能备份文件还在但是控制文件对这个备份的记录已经被新的记录所覆盖。RMAN可以把这些
        备份文件重新记录到恢复目录中。
         catalog datafile '/disk/old_data/usero1.dbf';
         catalog archivelog '/disk/arch_logs/archive_731.dbf';
         catalog backuppiece 'disk/backups/backup_820.dbf';

        你也可以指定一个目录
        catalog start with '/disk/backups/';
        #注意这里的最后一个斜线不能省略,如果省略则Oracle会找所有以这个字符串开头的文件。

五 、创建管理虚拟私有目录
         虚拟私有目录是参照基恢复目录的一系列同意和视图(synonyms和views)
(一)关于虚拟私有目录
           默认情况下只有基恢复目录的所有者有权限访问元数据。作为基恢复目录的所有者可以把限
           制访问权限赋予数据库中的其它用户。当你赋予一个目录用户限制访问权限时,这个用户对
           它自己的RMAN元数据有完全的读/写权限,这里的元数据就是恢复目录。
           创建虚拟似有恢复目录的基本步骤:
           1. 创建数据库用户
           2. 创建虚拟私有目录

(二)创建虚拟私有目录所有者并赋予权限
           环境介绍
           目标数据库:pord1,pord2,pord3 (注册到了基恢复目录)
           基恢复目录所有者:catowner

          目标
          用户:vpc1
          可以访问目标数据库:pord1,prod2

         1. 创建用户
             >connect sys/password@catalog as sysdba
            SQL>create user vpc1 identified by vpc1
                     default tablespace vpcusers
                     quota unlimited on vpcusers;

          2. 赋予recovery_catalog_owner权限
              SQL>grant recovery_catalog_owner to vpc1;
              SQL>exit;

          3. 启动RMAN并连接到恢复目录数据库
              RMAN>connect catalog rman/rman@catalog;

          4. 赋予虚拟私有用户权限
              RMAN>grant catalog for database prod1 to vpc1;
              RMAN>grant catalog for database prod2 to vpc1;

              赋予注册数据库的权限
              RMAN>grant register database to vpc1;

(三)创建虚拟私有目录
           1. 连接恢复目录(作为私有用户)
               RMAN>connect catalog vpc1/vpc1@catalog;

            2. 创建虚拟目录
                RMAN>create virtual catalog;

            3. 如果是10.2以前的版本使用下面的脚本
                base_catalog_owner.DBMS_RCVAT_VIRTUAL_CATALOG

(四)从虚拟私有目录所有者中删除权限
          目标
          删除vpc1对prod1的访问权限

         1. 连接恢复目录(作为基恢复目录的所有者)
             RMAN>connect catalog rman/rman@catalog;

         2. 删除访问权限和注册数据库的权限 
             RMAN>revoke catalog for database prod1 from vpc1;
             RMAN>revoke register database from vpc1;

(五)删除虚拟私有目录
           注意这里只是删除了同意和视图,没有真正的删除基恢复目录的内容。

          1. 连接恢复目录(作为私有用户)
              RMAN>connect catalog vpc1/vpc1@catalog;

          2. 删除目录
              RMAN>drop catalog;

          3. 如果是10g或是更早的版本
              base_catalog_owner.DBMS_RCVCAT.CREATE_VIRTUAL_CATALOG

六、 保护恢复目录
        在备份和恢复策略中包括恢复目录数据库是很重要的。因为如果不备份这个数据库,当
        发生磁盘错误损坏恢复目录数据库,那么你将丢失存储在恢复目录中的元数据。没有了
        这些数据恢复目标数据库会变得更困难。

(一)备份恢复目录
           一个恢复目录可以存储多个数据库的元数据。所以如果丢失了恢复目录也将是灾难性的。
          你应该经常的备份恢复目录。

           1. 经常备份恢复目录
              恢复目录数据库和其它的数据库一样,也是你备份和恢复策略中的重要一部分。所以也
              要像保护其它数据库一样保护它。要用备份目标数据库相同频率备份恢复目录。

          2. 选择适当的物理备份方法
              下面是设计备份策略的指导意见
              *运行恢复目录数据库在归档模式下,这样可以做基于时间的恢复。
              *设置REDUNDANCY大于1的保存策略
              *备份数据库到不同的媒体
              *如果可以的话有规则运行backup database plus archivelog
             *不用使用其它的恢复目录作为备份的资料库
             *配置控制文件自动备份启动

          3. 恢复目录和目标数据库分离
              这个不用解释吧!

         4. 导出恢复目录数据(逻辑备份)
             作为物理备份的补充可以用数据泵导出恢复目录的逻辑数据。如果恢复目录数据库损
             坏可以使用通过导入这些数据快速重建恢复目录。

(二)恢复恢复目录
           恢复目录的恢复和重建和其它的恢复操作相同。这里只讨论那些最坏的情况,即不能用
           普通方法恢复。包括一些最坏的情况:
           *恢复目录数据库从来没有备份过
           *因为数据库文件备份或归档文件不可用使得恢复目录数据库不能被恢复
           可以用下面的方法恢复部分数据
           *使用RESYNC CATALOG命令从控制文件更新恢复目录,这个控制文件可以是当前目标数
            据库的也可以备份的。这样那些过期的元数据将丢失。
          *使用CATALOG START WITH 命令重新收集那些可用的备份信息。
七 、管理存储脚本
(一)关于存储脚本
   前面章节已经讲过存储脚本的概念这里再说一遍。

   1. 什么存储脚本
    它是把一系列命令写到文件的一种可选方式。只不过它不是把命名写到文件而是写到恢复目录中。

   2. 什么是本地存储脚本
    它和目标数据库相关联,只有连接到目标数据库才能执行这些脚本

   3. 什么是全局存储脚本
    它可以执行在任何的注册的目标数据库上。

(二)创建存储脚本
   1. 连接目标数据库和恢复目录
    RMAN>connect target sys/password@target catalog rman/rman@catalog 

   2. 创建脚本
     创建本地脚本
create script. full_backup
{
backup database plus archivelog;
delete obsolete;
}

    创建全局脚本
create global script. global_full_backup
{
backup database plus archivelog;
delete obsolete;
}

    脚本中追加注释
create global script. global_full_backup
comment 'user only whit archivelog mode database'
{
backup database plus archivelog;
delete obsolete;
}

   从文件创建脚本
create script. full_backup
 from file '/tmp/my_script_file.txt';

(三)更新存储脚本
   REPLACE关键字可以更新脚本,如果指定的脚本不存在则创建新的脚本。

   更新本地脚本
replace script. full_backup
{
backup database plus archivelog;
}

   更新全局脚本
replace global script. global_full_backup
{
backup database plus archivelog;
}

   从文件更新脚本
replace global script. global_full_backup
 from file '/tmp/my_script_file.txt';

(四)执行存储脚本
   执行关键字 execute script。

   执行本地脚本
RMAN>run{
execute script. full_backup;
}

   执行全局脚本
RMAN>run{
execute global script. full_backup;
}

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

上一篇: STARTUP
请登录后发表评论 登录
全部评论

注册时间:2008-04-07

  • 博文量
    93
  • 访问量
    188369