nainai1 发表于 2015-11-9 10:44:58

Oracle OCP笔记(27)RMAN备份

Oracle OCP笔记(27)RMAN备份


一.关于RMAN(Recovery Manager,恢复管理器)
    RMAN是用于备份(backup)、还原(restore)和恢复(recover)数据库的工具,只能用于Oracle8或更高的版本中。
    RMAN能备份整个数据库或数据库部件、如表空间、数据文件、控制文件、归档日志文件及spfile参数文件.
    RMAN可以在数据库处于打开或关闭状态时执行备份,也可以执行完整或局部备份,还可以执行全部和增量备份,RMAN允许进行增量数据块级别的备份,只备份自上次备份以来有变化的数据块。
    允许第三方软件(如veritas)通过rman提供的接口提供更强大的备份与恢复的管理功能
    通过RMAN可以使用更多功能: 克隆数据库,建立备用数据库,备份和移动裸设备上的文件等.
    RMAN备份称为服务器管理的备份,所有工作均由服务器进程完成。RMAN使用在目标数据库的控制文件中存储的仓库,此仓库包含执行的所有备份的详细信息,也可以创建一个Catalog数据库来管理此仓库.


二.RMAN的启动和连接
1.rman的命令的位置
    $ which rman
    /u01/app/oracle/product/12.1.0/db_1/bin/rman


2.rman连接数据库
    $ export ORACLE_SID=orcl;
    $ rman target /
    或
    $ rman target sys/oracle@orcl;
    或
    $ rman
    RMAN> connect target sys/oracle@orcl;


三.使用RMAN备份
1.使用rman备份的前提条件
    (1)数据库处于归档模式
    (2)数据库运行在mount/open阶段(rman需要读取控制文件,以便查找数据文件)


    如果在加载模式下尝试执行操作系统备份,则将失效(DBA在尝试还原后才会意识到这一点),因为在加载模式中,当复制控制文件时,可能对控制文件执行了写操作,这样一来,副本就变得不一致了,失去了作用。rman通过拍制控制文件的读一致性快照并进行备份,避免此问题发生。


2.备份的位置
    如果不指定备份位置,rman默认备份到闪回恢复区,涉及的初始化参数:
    db_recovery_file_dest               -- 闪回恢复区位置
    db_recovery_file_dest_size            -- 闪回恢复区大小


    rman备份时指定备份位置
    backup database format '/u02/oracle/sales/dbfull_%U';


3.rman备份的方式
    copy   -- 物理备份,备份的文件与源文件大小一样
    backup -- 逻辑物理备份,基于块级别的备份,只备份使用过的块。


4.backup备份命令
    backup database;                      -- 全库备份:只备份参数文件、控制文件、数据文件,不备份联机日志文件
    backup spfile;                        -- 备份参数文件(只能备份spfile)
    backup current controlfile;         -- 备份控制文件
    backup datafile 4;                  -- 备份数据文件
    backup tablespace tbsname;            -- 备份表空间
    backup archivelog all;                -- 备份归档日志
    backup archivelog all delete input;   -- 备份归档日志并删除源归档日志
    backup full database plus archivelog; -- 全库备份并包括归档日志
   
    增量备份
    backup database;
    backup incremental level 1 tablespace system;
    backup incremental level 1 tablespace sysaux;


    不备份某些对象
    backup database skip readonly;      -- 跳过只读的表空间
    backup database skip offline;         -- 跳过脱机的表空间


5.copy备份命令
    copy备份方式是物理备份,备份的文件与源文件大小一样,可直接用于手工还原.
    (1)备份数据文件
    copy datafile '/u01/app/oracle/oradata/sales/user01.dbf' to '/u02/oracle/backup/sales/user01.dbf';         
         
    与以下用户管理的备份方式等效
    alter alter tablespace tbs begin backup;
    host cp /u01/app/oracle/oradata/sales/user01.dbf /u02/oracle/backup/sales/user01.dbf;
    alter alter tablespace tbs end backup;


    (2)备份控制文件
    copy current controlfile to '/u02/oracle/backup/sales/controlfile.ctl';


    与以下用户管理的备份方式等效
    alter database backup controlfile to '/u02/oracle/backup/sales/controlfile.ctl';


6.使用backup as copy命令
    backup as copy database;


    与以下用户管理的备份方式等效
    alter database begin backup;
    ho cp /u01/app/oracle/oradata/sales/* /u02/oracle/backup/sales/
    alter database end backup;


7.使用run{}制作备份脚本
    备份等rman指令可以放在run{}中执行.


    (1).使用rman脱机完整全备脚本(offline_full_whole.rman):
    run {
      shutdown immediate;
      startup mount;
      allocate channel d1 type disk;
      backup as backupset database format '/u02/oracle/backup/sales/offline_full_whole.bus';
      alter database open;
    }
   
    channel: 通道 type:disk|sbt_tape
    backupset: 备份集,rman专用结构,可以将多个输入文件组合成一个输出文件,具有压缩功能
    format: 将包含备份集的文件


    启动rman运行备份脚本offline_full_whole.rman
    rman target / @offline_full_whole.rman;


    (2).使用rman联机备份脚本(online_full.rman)
    run {
      allocate channel t1 type sbt_tape;
      allocate channel t2 type sbt_tape;
      backup as compressed backupset filesperset 4 database;
      backup as compressed backupset archivelog all delete all input;
    }
    rman target / @online_full.rman;


四.管理RMAN备份
    RMAN仓库:
    rman使用仓库来存储所有备份操作的详细信息,此仓库是实现自动还原和恢复的关键,也是备份报告的来源。
    默认方式下,rman将数据库备份到闪回恢复区,rman将尝试管理闪回恢复区域中的空间。
    在执行恢复期间,RMAN必须确定从最近一次备份(全部备份或级别0备份)中提取文件,此后执行恢复,rman必须确定可用的增量备份(如果有),然后提取和应用他们,此后,它必须确定需要的归档日志文件,如果无法从磁盘上获取,也可以从备份中还原他们,并加以应用。最后,它应用来自联机日志文件的更改矢量,将已还原的文件推进到最新状态。
    仓库是rman需要的信息的来源,不管做什么,它都会查看仓库,仓库存储在控制文件中,包含执行的所有备份的详细信息。
    控制文件中的rman仓库信息会过期,使用初始化参数control_file_record_keep_time设置保持时间.
    rman仓库总是存储在目标数据库的控制文件中,不过可以创建一个称为Recovery Catalog的独立数据库,或在众所周知的位置创建控制文件的自动备份.


    (1).备份的报告
    ·list backup;
    ·list copy;
    ·list backup of database;      -- 列出已经执行并记录在仓库中的所有备份
    ·list backup of datafile 1;      -- 列出数据文件的所有备份
    ·list backup of archivelog all;-- 列出归档的重做日志文件的所有备份


    ·report need backup;             -- 需要备份的所有内容(根据rman的配置保留策略)
    ·report obsolete;                -- 不再需要的所有备份(根据rman的配置保留策略)


    (2).管理备份
    4个关键命令:
    ·crosscheck                      -- 强制rman将仓库与实际要求对比,所丢失内容标记为EXPIRED.
    ·delete expired                  -- 从仓库删除对过期备份的引用
    ·delete obsolete               -- 从磁盘或磁带中删除所有不再需要的备份,并从仓库删除备份的引用。
    ·catalog                         -- 将用户管理的备份的位置包含在仓库中.


    归档日志被移走后v$archived_log仍存在的处理:
    rman target /
    RMAN> crosscheck archivelog all;
    RMAN> delete expired archivelog all
    RMAN> exit         版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: Oracle OCP笔记(27)RMAN备份