zoukankan      html  css  js  c++  java
  • Oracle Rman恢复

    (转自:http://blog.chinaunix.net/uid-14779297-id-1988309.html)

    RMAN的基本概念

    Target Database:就是需要RMAN对其进行备份与恢复的数据库,RMAN 可以备份数据文件,控制文件,归档日志,spfile.(注意:RMAN不能用于备份联机日志、初始化参数文件和口令文件)。

    recovery catalog:用来保存备份与恢复信息的一个数据库,不建议创建在目标数据库上。RMAN 利用恢复目录记载的信息去判断如何执行需要的备份恢复操作。如果不采用恢复目录,备份信息可以存在于目标数据库的 control file 中。如果存放在目标数据库的 control file 中,控件文件会不断增长,不能保存 RMAN 的Script. CONTROL_FILE_RECORD_KEEP_TIME (default=7):控件文件中 RMAN 信息保存的最短时间。 使用恢复目录的优势: 可以存储脚本,记载较长时间的备份恢复操作。

    RMAN Repository:存放 recovery catalog(恢复目录)的数据库。建议为恢复目录数据库创建一个单独的数据库。

    RMAN的基本组件

     Server Session:RMAN启动数据库上的Oracle服务器进程,将建立一个与目标数据库的会话。由目标数据库上的服务器进程进行备份、还原、恢复的实际操作。

     Server Process:RMAN的服务进程是一个后台进程,用于与RMAN工具与数据库之间的通信,也用于RMAN工具与磁盘/磁带等I/O设置之间的通信,服务进程负责备份与恢复的所有工作,在如下情况将产生一个服务进程:当连接到目标数据库分配一个新的通道

      Channel:(通道)一个通道是 RMAN和目标数据库之间的一个连接,"allocate channel"命令在目标数据库启动一个服务器进程,同时必须定义服务器进程执行备份或者恢复操作使用的 I/O类型。

        通道控制命令可以用来:

        控制 RMAN使用的 O/S资源,影响并行度

        指定 I/O带宽的限制值(设置 limit read rate 参数)

        定义备份片大小的限制(设置 limit kbytes)

        指定当前打开文件的限制值(设置 limit maxopenfiles)

    MML: (媒体管理库) Media Management Layer (MML)是第三方工具或软件,用于管理对磁带的读写与文件的 跟踪管理。如果你想直接通过 RMAN 备份到磁带上,就必须配置媒体管理层,媒体管理层 的工具如备份软件可以调用 RMAN来进行备份与恢复。

    RMAN的概念术语

    Backup Sets (备份集合)备份集合的特性:包括一个或多个数据文件或归档日志,以oracle专有的格式保存,有一个完全的所有的备份片集合构成,构成一个完全备份或增量备份。

    Backup Pieces (备份片)一个备份集由若干个备份片组成。每个备份片是一个单独的输出文件。一个备份片的大 小是有限制的;如果没有大小的限制, 备份集就只由一个备份片构成。备份片的大小不能 大于使用的文件系统所支持的文件长度的最大值。

    Image Copies 镜像备份,镜像备份是独立文件(数据文件、归档日志、控制文件)的备份。它很类似操作系统级 的文件备份。它不是备份集或备份片,也没有被压缩。

    Full backup Sets 全备份集合,全备份是一个或多个数据文件中使用过的数据块的的备份。没有使用过的数据块是不被备份的,也就是说,oracle 进行备份集合的压缩。

    Incremental backup sets 增量备份集合,增量备份是指备份一个或多个数据文件的自从上一次同一级别的或更低级别的备份以来被修改过的数据块。 与完全备份相同,增量备份也进行压缩。

    File multiplexing 多个数据文件可以在一个备份集中。

    Recovery catalog resyncing 恢复目录同步使用恢复管理器执行 backup、copy、restore 或者 switch 命令时,恢复目录自动进行更 新,但是有关日志与归档日志信息没有自动记入恢复目录。需要进行目录同步。使用 resync catalog命令进行同步。

    Incarnation 对应物在不完全恢复完成之后,通常需要使用 resetlogs 选项来打开数据库。resetlogs 表示一个 数据库逻辑生存期的结束和另一个数据库逻辑生存期的开始。数据库的逻辑生存期也被称为 一个对应物(incarnation)。每次使用 resetlogs 选项来打开数据库后都会创建一个新的数据库 对应物。

    RMAN的使用

    数据库状态:RMAN恢复目录数据库: 必须OPEN目标数据库: 根据不同情况,必须MOUNT或OPEN

        1. 使用不带恢复目录的 RMAN

        设置目标数据库的 ORACLE_SID ,执行:$ rman nocatalog RMAN> connect target RMAN> connect target user/pwd>@db

        2. 使用带恢复目录的RMAN

        $ rman catalogrman/rman RMAN> connecttarget    //连接本地数据库作为目标数据库RMAN> connecttarget user/pwd>@db //连接远程数据库或$ rman catalogrman/rman targetuser/pwd>@db

        3. 命令行接口

        1、单个执行

        RMAN> backup database;

        2、运行一个命令块

        RMAN> RUN { 2> copy datafile 10 to 3> '/oracle/prod/backup/prod_10.dbf';4> }

        3、运行存储在恢复目录中的脚本:

        RMAN> RUN    { EXECUTE SCRIPT backup_whole_db };

        4、运行外部脚本:

        $ rman catalog rman/rman target / @backup_db.rman

        $ rman cmdfile=backup.rman msglog=backup.log

        RMAN> @backup_db.rman ]

        RMAN> RUN    { @backup_db.rman }

        如果在cron中执行,注意在脚本中设置正确的环境变量,例:

        #set env export ORACLE_HOME=/opt/oracle/product/9.2

        export ORACLE_SID=test

        export NLS_LANG="AMERICAN_AMERICA.zhs16gbk"

        export PATH=$PATH:$ORACLE_HOME/bin rman cmdfile=backup_db.rman

        4. 使用脚本

        创建或者取代脚本:

        RMAN> create script alloc_disk {

        2> # Allocates one disk

        3> allocate channel dev1 type disk;

        4> setlimit channel dev1 kbytes 2097150 maxopenfiles 32 readrate 200;

        5> } RMAN> replace script rel_disk { 2> # releases disk 3> release channel dev1;5> }

        删除脚本:RMAN> DELETE SCRIPT Level0Backup;

        查看脚本:RMAN> PRINT SCRIPT Level0Backup;

        运行脚本:RMAN> RUN { EXECUTE SCRIPT backup_whole_db };

        5. 运行OS命令

        RMAN支持通过执行 host命令暂时退出 RMAN的命令提示符而进入到操作系统的命令环境。

        6. 执行SQL语句

        在 RMAN 的命令提示符后输入 SQL 命令,然后在一对单引号(双引号亦可)中输入要执行的 SQL 语句,例如:RMAN> SQL 'ALTER SYSTEM CHECKPOINT';对于 SELECT语句,无法得到结果。可以先执行 host再用 SQLPLUS.

    RMAN的配置

    4.2.1 建立Recovery Catalog恢复目录

        (1) 在目录数据库中创建恢复目录所用表空间:

        SQL> create tablespace rman_ts datafile '/xxx/rman_ts.dbf' size 20M;

        (2) 在目录数据库中创建RMAN 用户并授权:

        SQL> create user rman identified by rman default tablespace rman_ts temporary tablespace temp quota unlimited on rman_ts;SQL> grant connect, resource, recovery_catalog_ownerto rman;

        (3) 在目录数据库中创建恢复目录

        $ rman catalog rman/rman RMAN> create catalog tablespace rman_ts;

        (4) 登记目标数据库:

        一个恢复目录可以注册多个目标数据库,注册目标数据库的命令为:$ RMAN catalog rman/rman target user/pwd @rcdb; RMAN> register database;

     

        4.2.2 查看RMAN的默认设置SHOW命令

        必须连接目标数据库RMAN> show all

        RMAN> show channel;                              // 通道分配 RMAN> show device type;    // IO 设备类型

        RMAN> show retention policy;               // 保存策略

        RMAN> show datafile backup copies;     // 多个备份的拷贝数目

        RMAN> show maxsetsize; // 备份集大小的最大值

        RMAN> show exclude;    // 不必备份的表空间

        RMAN> show backup optimization;                                                 // 备份的优化

     

        配置RMAN的默认设置

        1. 配置备份集文件的格式 (format)

        RMAN> configure channel device type disk format'/u05/oracle/rmanback/%U';备份文件可以自定义各种各样的格式,如下%c 备份片的拷贝数%d 数据库名称%D 位于该月中的第几天 (DD)

        %M 位于该年中的第几月 (MM)

        %F 一个基于 DBID 唯一的名称,这个格式的形式为 c-IIIIIIIIII-YYYYMMDD-QQ,其中 IIIIIIIIII 为该数据库的 DBID,YYYYMMDD 为日期,QQ 是一个 1-256 的

        序列%n 数据库名称,向右填补到最大八个字符%u 一个八个字符的名称代表备份集与创建时间%p 该备份集中的备份片号,从 1 开始到创建的文件数%U 一个唯一的文件名,代表%u_%p_%c %s 备份集的号%t 备份集时间戳%T 年月日格式(YYYYMMDD)

     

        2. 配置默认 IO设备类型         ( device type )

        IO 设备类型可以是磁盘或者磁带,在默认的情况下是磁盘,可以通过如下的命令 进行重新配置。

        RMAN> configure default device t ype to disk; RMAN> configure default device t ype to sbt;注意,如果换了一种 IO 设备,相应的配置也需要做修改,如RMAN> configure device type sbt parallelism 2;

     

        3. 配置自动分配的通道    ( Chanel )

        RMAN> configure channel device type disk format

        '/U01/ORACLE/BACKUP/%U在运行块中,手工指定通道分配,这样的话,将取代默认的通道分配。

        RMAN> Run { allocate channel cq type disk format='/u01/backup/%u.bak';…

        }

        通道的一些特性:读的速率限制                                     Allocate channel ……rate = integer 最大备份片大小限制         Allocate channel …… maxpiecesize = integer 最大并发打开文件数(默认 16) Allocate channel …… maxopenfile = integer

     

        4. 配置默认的保存策略 ( Retention Policy)

        保存策略是管理备份与副本有效期或者是否有效的一种方法。恢复数据库的时候Oracle 不 考 虑 失效 的 备 份。我们可以定义两种保存策略:

        恢复窗口备份保存策略(recovery window backup retention policy )和冗余备份保存策略(redundancy backup retention policy )

        备份策略保持   

        分为两个保持策略:

        一个是时间策略,决定至少有一个备份能恢复到指定的日期

        一个冗余策略,规定至少有几个冗余的备份。 恢复窗口备份保存策略这种保存策略类型的使用基于数据库可能恢复到的最早的日期。 例如,假设今天 是星期一,此前存在 3 个备份。第一个备份在昨天生成的,第二个备份是上星期四生 成的,而最后一个备份是 10 天前备份的。假如恢复窗口是 7 天,那么昨天和上星期 四的备份是有效备份,而 10 天前的备份会成为废弃备份。下面的命令将恢复窗口配置为 7 天:RMAN> configure retention policy to recovery window of 7 days;冗余备份保存策略使用这种保存策略,RMAN    会从最新备份开是保留 N 个数据备份,其余的废弃。 例如,如果有四个备份,而冗余数是 3,那么最早的那个备份将被废弃。下面的命令将 备份策略设置为 3:RMAN> configure retention policy to redundancy3;设置 NONE可以把使备份保持策略失效,Clear 将恢复默认的保持策略RMAN> configure retention policy to none;例:保 证 至 少有一 个 备份 能 恢复 到 Sysdate-5     的时 间点 上, 之 前 的备份将 标 记 为Obsolete RMAN> configure retention policy to recovery window of 5 days;至少需要有三个冗余的备份存在,如果多余三个备份以上的备份将标记为冗余RMAN> configure retention policy to redundancy 5;

     

        5. 配置多个备份的拷贝数目( backup copies )

        如果觉得单个备份集不放心,可以设置多个备份集的拷贝,如:

        RMAN> configure datafile backup copies for device type disk to 2;

        RMAN> configure archivelogbackup copies for device type disk to 2;

        如果指定了多个拷贝,可以在通道配置或者备份配置中指定多个拷贝地点:

        RMAN> configure channel device type disk format

        '/u01/backup/%U', '/u02/backup/%U';

        RMAN> backup datafile n format '/u01/backup/%U', '/u02/backup/%U';

     

        6. 设置并行备份( ARALLELISM )

        RMAN支持并行备份与恢复,也可以在配置中指定默认的并行程度。如:RMAN> configure device type disk parallelism 4;指定在以后的备份与恢复中,将采用并行度为 4,同时开启 4个通道进行备份与恢 复,当然也可以在 RUN的运行块中手工分配多个通道来决定备份与恢复的并行程度。 并行的数目决定了开启通道的个数。如果指定了通道配置,将采用指定的通道,如果没 有指定通道,将采用默认通道配置。

        还可以在 BACKUP命令中使用指定 FILESPERSET 或者指定(datafile 1,4,5 channel c1 tag=DF1)(datafile 2,3,6 channel c2 tag=DF2)

     

        7. 设置控制文件自动备份 (autobackup on)

        通过如下的命令,可以设置控制文件的自动备份RMAN> configure controlfile autobackup on;对于没有恢复目录的备份策略来说,这个特性是特别有效的,控制文件的自动备份发生在任何 backup 或者 copy 命令之后,或者任何数据库的结构改变之后。

        可以用如下的配置指定控制文件的备份路径与格式RMAN> configure controlfile autobackup format for type disk to '%f';

        在备份期间,将产生一个控制文件的快照,用于控制文件的读一致性,如下配置:

        RMAN> configure snapshot controlfile name to

        '/u01/app/oracle/product/9.0.2/dbs/snapcf_U02.f';

     

        8. 设置备份优化选项 ( optimization )

        可以在配置中设置备份的优化,如RMAN> configure backup optimization on;如果优化设置打开,将对备份的数据文件、归档日志或备份集运行一个优化算法。

     

        RMAN 会话的设置

        set 命令与configure命令很相似,但是set命令设置不是永久的。set 命令定义只应用于当前 RMAN会话的设置。

        可以用于RUN代码之外的命令有:set echo on | off             // 显示或关闭 RMAN显示set DBID dbidn            // 指定一个数据库的数据库标识符。

        下面的set 命令只能在 RUN代码中使用:set newname:用于TSPITR或者数据库复制操作,指定新的数据库文件名,将数据库移动到新的系统中并且文件名不同的时候可以用此命令。

        set maxcorrupt for datafile:用于定义 RMAN操作失败之前允许的数据块讹误的数量set archivelog destination:可以修改存储归档的重做日志 archive_log_dest_1 的目的地。

        set命令和until 子句:可以定义数据库时间点恢复操作所使用的具体的时间点、SCN或者日志序列号,例:

        set until time "to_date('2005/08/01 13:00:00','yyyy/mm/dd hh24:mi:ss')";

        set backup copies:

        使用该命令可以定义为备份集的每个备份片创建的镜像副本数。

        例:

        RMAN> RUN{

        set maxcorrupt for datafile 3 to 10;

        set backup copies = 2;

        backup database;

        }

     

    设定参数

    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/arch/rman/controlfile%F.ctnl';
    CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT   '/arch/rman/full%t.bak';
     
    数据库rman 全备
    rman>backup database plus archivelog delete input;
    备份产生的三个文件
    -rw-r----- 1 oracle oinstall   7143424 Jan 28 18:05 controlfilec-2719028776-20100128-01.ctnl
    -rw-r----- 1 oracle oinstall  41074688 Jan 28 18:03 full709495428.bak
    -rw-r----- 1 oracle oinstall 763379712 Jan 28 18:05 full709495432.bak
    -rw-r----- 1 oracle oinstall     17920 Jan 28 18:05 full709495518.bak
     
     
    rman恢复
    ------------------
    1、启动数据库到 nomount 状态
    $sqlplus / as sysdba
    SQL> startup nomount
     
    2、spfile 恢复
    $rman nocatalog
    rman> connect target /
    run {
    allocate channel c1 DEVICE TYPE DISK format '/arch/rman/controlfile%F.ctnl';
    restore spfile to pfile '/arch/pfile.ora' from '/arch/rman/controlfilec-2719028776-20100128-01.ctnl';
    release channel c1;
    }

    3、控制文件恢复
    run {
    allocate channel c1 DEVICE TYPE DISK format '/arch/rman/controlfile%F.ctnl';
    restore controlfile from '/arch/rman/controlfilec-2719028776-20100128-01.ctnl';
    release channel c1;
    }

    4、全库恢复
    在恢复控制文件的情况下,可以修改数据到 mount状态,进行全库的恢复
    rman> alter database mount;
    run {
    allocate channel c1 device type disk format '/arch/rman/full%t.bak';
    restore database;
    release channel c1;
    }

    5、恢复archivelog
    run {
    allocate channel c1 device type disk format '/arch/rman/full%t.bak';
    restore archivelog all;
    }
    run {
    allocate channel c1 device type disk format '/arch/rman/full%t.bak';
    restore archivelog from logseq=72 until logseq=73;   
    }

    6、redolog 恢复
    SQL>recover database using backup controlfile until cancel;
    SQL>alter database open resetlogs;  //现在有redolog 产生了,还有temp表空间文件也生成了或者分开两步执行   
       
    SQL>select * from dual;
    全库成功恢复
  • 相关阅读:
    Jenkins pipeline 流水线部署 并自定义 buildName 和 buildDescription 显示信息
    Jenkins中插件 pipeline 中声明式流水线的语法
    Linux 发送https POST请求sample ===Slack 频道中发送消息通知
    Jenkins pipline
    jenkins pipeline中获取shell命令的输出
    Chrome浏览器对标签进行整理和分组
    MacBook 对rar后缀的文件进行加压
    Macbook中Docker一栏的应用程序图标不见了,怎么找出来?
    [Pytest]运行指定的case
    软考 高项 重点知识点
  • 原文地址:https://www.cnblogs.com/FindSelf/p/4169347.html
Copyright © 2011-2022 走看看