zoukankan      html  css  js  c++  java
  • oracle 11g 数据库恢复技术 --rman catalog

    Oracle RMANcatalog并不是指标备份恢复操作的一个必要组件,但oracle推荐使用该组件。启用之后,归档日志、备份集、镜像复制等备份信息的保存地点是RMAN资料库(catalog),

    记录了所有的在DISKSBT设备上的各种备份的详细信息,rmancatalog是一个逻辑概念,物理保存点可以在两个不同的地方,目标数据库的控制文件中及catalog中,

    控制文件在默认情况下无须配置就可以保存rman资料库,而catalog需要创建、配置后才可以使用。

    SYS@ orcl >show parameter control_file_record_keep_time
    NAME                     TYPE     VALUE
    ------------------------------------ ----------- ------------------------------
    control_file_record_keep_time         integer     7

    默认情况下,控制文件能够保存多少短期性信息受制与参数control_file_record_keep_time

    是控制文件必须将归档日志、备份集合镜像复制等保存在rman资料库中的短期性信息至少保留7天,控制文件自动增长

    SYS@ orcl >select type,records_total,records_used from v$controlfile_record_section where type='ARCHIVED LOG';
    TYPE                 RECORDS_TOTAL RECORDS_USED
    ---------------------------- ------------- ------------
    ARCHIVED LOG                   308        200

    RECORDS_TOTAL308,说明现在控制文件中只能够保存308个归档日志的归档日志记录槽。

    SYS@ orcl >host ls -l /u01/app/oracle/oradata/orcl/control01.ctl
    -rw-r----- 1 oracle oinstall 10076160 Jun  4 17:35 /u01/app/oracle/oradata/orcl/control01.ctl

    参数 control_file_record_keep_time最大值365

    寻回一个控制文件的自动备份

    RMAN> catalog backuppiece '/u01/app/oracle/fra/ORCL/autobackup/2019_05_30/o1_mf_s_1009648986_ggzbltkq_.bkp';
    
    cataloged backup piece
    backup piece handle=/u01/app/oracle/fra/ORCL/autobackup/2019_05_30/o1_mf_s_1009648986_ggzbltkq_.bkp RECID=38 STAMP=1010135802

    寻回一个数据文件的备份--同上

    寻回归档日志

    RMAN> catalog archivelog '/u01/app/oracle/fra/ORCL/archivelog/2019_05_27/o1_mf_1_277_ggq5qlvl_.arc';
    
    cataloged archived log
    archived log file name=/u01/app/oracle/fra/ORCL/archivelog/2019_05_27/o1_mf_1_277_ggq5qlvl_.arc RECID=203 STAMP=1010136222

    将快速恢复区中的所有文件探测一遍,如果是rman资料库汇总没有记载的,则全部添加回资料库

    RMAN> catalog db_recovery_file_dest;

    为什么要使用catalog

    --1 保存比控制文件多得多的有关归档日志和备份的历史信息,使rman保存资料库信息不受参数control_file_record_keep_time的限制

    --2 使rman可以用run命令调用catalog中的存储脚本,由于catalog可以在另外一个服务器的db中,rman脚本自身也提供了高可用性

    --3列出任意时间点上的表空间和数据库文件结构,report schema 命令可以使用at子句查看某一时间点上的数据库结构

    --4 简化在丢失控制文件情况下的还原和恢复操作。恢复控制文件简化到只要执行restore controlfile即可,无须from子句,以及在命令上告知控制文件备份的位置。

    1 创建catalog

    --catalog所使用的db上创建catalogschema

    --catalog填充对象,包括表、索引、视图、PL/SQL包等

    虽然catalog的方案可以创建在目标db上,可是一旦目标db的控制文件损坏,由于db无法打开,导致catalog信息无法访问。所以应该只是将catalog的方案放到另外一个服务器的db上,为catalog dbtns连接别名

    --sqlplus sys/oracle@tns_name as  sysdba
    --在目标库上创建表空间,用户并赋予相应的权限
    SQL> create tablespace rc_data datafile '/u01/app/oracle/oradata/orcl/rc_data01.dbf' size 20m autoextend on next 4m;
    Tablespace created.
    SQL> create user rcowner identified by oracle 
    temporary tablespace temp
    default tablespace rc_data
    quota unlimited on rc_data;  2    3    4  
    User created.
    SQL> grant recovery_catalog_owner to rcowner;
    Grant succeeded.
    [oracle@DSI ~]$ rman catalog rcowner/oracle@orcl  ---这里在本机测试,正常的应该用目标库的tns_name
    connected to recovery catalog database
    RMAN> create catalog;
    recovery catalog created
    --登录数据库查看对象
    SQL> conn rcowner/oracle
    Connected.
    SQL> select object_type,count(*) objects from user_objects group by object_type;
    OBJECT_TYPE           OBJECTS
    ------------------- ----------
    SEQUENCE             1
    PACKAGE              2
    PACKAGE BODY             2
    TYPE BODY             1
    TRIGGER              3
    TABLE                44
    INDEX                96
    FUNCTION             2
    VIEW                98
    TYPE                 3
    10 rows selected.

    至此,rman catalog已经准备完成,可供目标数据库注册使用了。

    --使用catalog

    目标数据库必须在catalog中注册之后才能使用catalog

    --注册与同步

    [oracle@DSI ~]$ rman target sys/oracle@orcl catalog rcowner/oracle@orcl ##后者tns_name
    Recovery Manager: Release 11.2.0.4.0 - Production on Mon Jun 17 15:37:22 2019
    Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
    connected to target database: ORCL (DBID=1534031567)
    connected to recovery catalog database

    将目标数据库的注册信息写入catalog

    RMAN> register database;
    database registered in recovery catalog
    starting full resync of recovery catalog
    full resync complete---表名register命令还完成了第一次完全同步完成了

    --catalog中相应的表写入数据,比如在db的表发现目标数据的内容

    SQL> select * from rcowner.db;
        DB_KEY    DB_ID CURR_DBINC_KEY
    ---------- ---------- --------------
         1 1534031567           2

    --将目标数据库控制文件中的rman资料库上传到catalog的相关表中

    --最后同步控制文件与catalog

    从此以后,使用rman连接目标数据库时记得必须使用catalog子句同时连接catalog,这样才能尽量保证控制文件和catalog直接的信息同步,比如

    [oracle@DSI ~]$ rman target sys/oracle@orcl catalog rcowner/oracle@orcl

    信息同步--局部同步和完全同步

    --局部同步指同步归档日志信息、备份集信息和镜像复制信息。

    --完全同步则包括除了局部同步的所有信息之外,还要同步数据库表空间和数据文件物理结构的信息。

    发生完全同步时,RMAN会先创建一个当前目标控制文件的快照,(实际上就是当前控制文件的副本),然后RMAN会利用此快照与catalog进行比较,

    如有需要,rman就会将目标控制文件中的归档日志信息、备份信息、镜像复制进行以及数据库表空间和数据文件物理结构上传至catalog

    可以查看控制文件快照的路径。控制文件的快照,执行任务备份命令时都会生成一个快照文件

    RMAN> show snapshot controlfile name;
    RMAN configuration parameters for database with db_unique_name ORCL are:
    CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_orcl.f'; # default
    [root@DSI oracle]# ll /u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_orcl.f
    -rw-r----- 1 oracle oinstall 10076160 Jun 17 15:38 /u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_orcl.f

    也可以使用configure修改路径

    RMAN> configure snapshot controlfile name to '/home/oracle/snapshot.ctl'; ###如果路径设置错误,报错,请看上一篇。

    在同时连接到目标dbcatalog执行rman命令时,不论是局部同步还是全局同步,同步操作都能够由rman执行相关命令(backupconfigure)时自动判断、自动发起

    完全同步也可以通过”resync catalog”手动发起,一般没有必要这样做,但以下3种情况除外

    --1 使用rman执行了需要同步的操作(比如configure命令备份某个表空间),但是在执行此类命令时由于种种原因rman没有连接catalog,只连接了目标db

    --2 dba备份db的频率过低,很久不用一次rman,这样,由于control_file_record_keep_time参数的设置,catalog可能会遗忘某些归档日志信息

    --3 db物理结构发生变化之后,比如:添加数据文件,新建表空间等

    RMAN> resync catalog;
    starting full resync of recovery catalog
    full resync complete

    --rman能力的增强

    有了catalogrman保存历史的信息能力很强大,完全不受参数control_file_record_keep_time的限制,另外,catalog还补全了rman所有的功能

    --nomount状态下查看rman 资料库

    --查看数据库的物理结构历史

    --rman脚本保存在rman资料库中

    --将数据库恢复到以前的incarnation

    3个功能只用控制文件是无法提供的。

    RMAN> list backupset summary;

    有了catalog,数据库没有mount也不是问题,记得连接catalog模式

    第一个功能:没有catalog时执行restore命令还原控制文件时必须给出from 子句说明控制文件的备份在何处,而使用catalogfrom子句不是必要的

    第二个功能:report schema at命令能够显示数据库中数据文件的历史结构

    RMAN> report schema;
    Report of database schema for database with db_unique_name ORCL
    
    List of Permanent Datafiles
    ===========================
    File Size(MB) Tablespace           RB segs Datafile Name
    ---- -------- -------------------- ------- ------------------------
    1    780      SYSTEM               YES     /u01/app/oracle/oradata/orcl/system01.dbf
    2    720      SYSAUX               NO      /u01/app/oracle/oradata/orcl/sysaux01.dbf
    3    1250     UNDOTBS1             YES     /u01/app/oracle/oradata/orcl/undotbs01.dbf
    4    5        USERS                NO      /u01/app/oracle/oradata/orcl/users01.dbf
    5    500      TEST                 NO      /u01/app/oracle/oradata/orcl/test01.dbf
    6    50       ASSM                 NO      /u01/app/oracle/oradata/orcl/assm01.dbf
    7    50       MSSM                 NO      /u01/app/oracle/oradata/orcl/mssm01.dbf
    8    20       RC_DATA              NO      /u01/app/oracle/oradata/orcl/rc_data01.dbf
    
    List of Temporary Files
    =======================
    File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
    ---- -------- -------------------- ----------- --------------------
    1    59       TEMP                 32767       /u01/app/oracle/oradata/orcl/temp01.dbf
    2    1024     TEMP                 32767       /u01/app/oracle/oradata/orcl/temp03.dbf
    RMAN> report schema at time "sysdate - interval '1' day";
    Report of database schema for database with db_unique_name ORCL
    
    List of Permanent Datafiles
    ===========================
    File Size(MB) Tablespace           RB segs Datafile Name
    ---- -------- -------------------- ------- ------------------------
    1    780      SYSTEM               YES     /u01/app/oracle/oradata/orcl/system01.dbf
    2    720      SYSAUX               YES     /u01/app/oracle/oradata/orcl/sysaux01.dbf
    3    1250     UNDOTBS1             YES     /u01/app/oracle/oradata/orcl/undotbs01.dbf
    4    5        USERS                YES     /u01/app/oracle/oradata/orcl/users01.dbf
    5    500      TEST                 YES     /u01/app/oracle/oradata/orcl/test01.dbf
    6    50       ASSM                 YES     /u01/app/oracle/oradata/orcl/assm01.dbf
    7    50       MSSM                 YES     /u01/app/oracle/oradata/orcl/mssm01.dbf
    
    List of Temporary Files
    =======================
    File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
    ---- -------- -------------------- ----------- --------------------
    1    59       TEMP                 32767       /u01/app/oracle/oradata/orcl/temp01.dbf
    2    1024     TEMP                 32767       /u01/app/oracle/oradata/orcl/temp03.dbf

    第三个功能:保存rman脚本

    RMAN> create script recover_controlfile {
    2> startup force nomount;
    3> restore controlfile;
    4> mount database;
    5> recover database;
    6> alter database open resetlogs;
    7> }
    created script recover_controlfile
    也可以将现有的文本载入
    RMAN> create script backup_db from file '/home/oracle/backup_db.rman';
    script commands will be loaded from file /home/oracle/backup_db.rman
    created script backup_db
    RMAN> list script names;
    List of Stored Scripts in Recovery Catalog
        Scripts of Target Database ORCL
    
           Script Name
           Description
           -----------------------------------------------------------------------
           backup_db
           recover_controlfile
    RMAN> print script backup_db; ##print查看脚本内容
    printing stored script: backup_db
    run {
    allocate channel c1 device type disk;
    backup database;
    }
    使用rman连接目标库和catalog后,执行run {execute script ...}
    RMAN> run {execute script backup_db;}
  • 相关阅读:
    一些大牛的博客推荐,排名不分先后
    HTTP响应状态码
    myeclipse连接mysql数据库详细步骤
    widget使用与生命周期
    ExcelUtil
    POI 数据toEXCEL
    Android异步下载图片并且缓存图片到本地
    判断网络状态
    调节屏幕亮度
    spring的基本知识
  • 原文地址:https://www.cnblogs.com/yhq1314/p/11040852.html
Copyright © 2011-2022 走看看