Oracle数据库备份与恢复之RMAN

转载**

RMANORACLE提供的一个备份与恢复的工具,可以用来备份和还原数据库文件、归档日志和控制文件。它也可以用来执行完全或不完全的数据库恢复。

RMAN可以由命令行接口或者 OEM Backup Manager GUI 来控制。

4.1 基本知识

4.1.1 RMAN的组件、概念

1.  RMAN  主要包括以下组件:

    Target Database:(目标数据库)

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

    Server Session:(服务器会话)

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

    服务器进程

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

    Channel    (通道)

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

    通道控制命令可以用来:

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

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

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

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

    recovery catalog:(恢复目录)

    用来保存备份与恢复信息的一个数据库,不建议创建在目标数据库上。RMAN  利用恢 复目录记载的信息去判断如何执行需要的备份恢复操作。

    如果不采用恢复目录,备份信息可以存在于目标数据库的 control file 中。

    如果存放在目标数据库的  control  file  中,控件文件会不断增长,不能保存  RMAN  Script. CONTROL_FILE_RECORD_KEEP_TIME  default=7):控件文件中  RMAN  信息保存的最短时间。

    使用恢复目录的优势:  可以存储脚本,记载较长时间的备份恢复操作。

    RMAN Repository    RMAN  恢复目录数据库)

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

    MML: (媒体管理库)

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

2.概念述语

    Backup Sets (备份集合)

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

    Backup Pieces (备份片)

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

    Image Copies 镜像备份

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

    Full backup Sets 全备份集合

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

    Incremental backup sets 增量备份集合

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

    File multiplexing

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

    Recovery catalog resyncing  恢复目录同步

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

    RMAN> resync catalog

    Incarnation  对应?SPAN lang=EN-US>

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

    4.1.2 RMAN的使用:命令行接口与脚本

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

    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 dev15> }

    删除脚本: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.

   

4.2 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_tsSQL> 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                                                 //  备份的优化

4.2.3  配置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  为该数据库的 DBIDYYYYMMDD  为日期,QQ  是一个  1-256 

    序列%n  数据库名称,向右填补到最大八个字符%u  一个八个字符的名称代表备份集与创建时间%p  该备份集中的备份片号,从开始到创建的文件数%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,那么最早的那个备份将被废弃。下面的命令将 备份策略设置为  3RMAN> 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  145  channel c1 tag=DF1)(datafile 236 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;如果优化设置打开,将对备份的数据文件、归档日志或备份集运行一个优化算法。

 

4.2.4 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 130000''yyyy/mm/dd hh24miss'"

    set backup copies

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

    例:

    RMAN> RUN{

    set maxcorrupt for datafile 3 to 10

    set backup copies = 2

    backup database

    }

 

4.3 Copy 镜像拷贝与恢复

    Copy镜像拷贝命令可以创建数据库数据文件、归档重做日志或者控制文件的精确副本。 RMAN  副本与这些文件的区别仅在于名称和(或)位置的区别。功能相当于用户管理的备 份恢复中的热备份。备份副本的好处是恢复比较快,恢复时可以不用拷贝,指定新位置即可。

    Copy镜像拷贝至少要在mount 状态下运行。

    Copy镜像拷贝可作为增量备份的  Level 0

    Oracle10g开始,允许使用单条命令"backup as copy"进行数据库拷贝。

 4.3.1  备份

    生成数据文件副本:

    RMAN> copy datafile 3 to 'd\backup\datafilecopy\users01.dbf.bak'

    RMAN> copy datafile 'd\oracle\oradata\ora9i\users01.dbf' to

    'd\backup\datafilecop y\users01.dbf.bak'

    生成控制文件副本:

    RMAN> copy current controlfile to …

    RMAN> CONFIGURE CONTROLFILE AUTOBACKUP is ON

    备份 ARCHIVELOG  副本:

    //  只能一个一个的来备份,而不能指定一个范围

    RMAN> copy archivelog 'd\oracle\oradata\arc\ming_351.arc' to

    'd\oracle\orabackup\arc\ming_351.arc'

    并行设置:

    1. RMAN> configure device type …… parallelism = 3//only 2 channel one for writting data to disk

    2.  手工分配多个通道

    3.  在命令中指定多个文件RMAN> cop y datafile 'xx' to 'xx2' datafile 'yy' to 'yy2' ……

    块检查:CHECK LOGICAL  选项MAXCORRUPT参数 V$COPY_CORRUPTION在复制操作中,Oracle 服务器进程对每个块执行校验和计算以检测是否有块损坏。 RMAN 在还原副本时也要核对校验和. 该过程称为物理损坏检测. 可以使用NOCHECKSUM  选项取消校验和操作,从而加快复制进程。如果数据库已在维护块校验和,则此选项无效。缺省情况下,禁用逻辑损坏的错误检查。

    可以使用  CHECK LOGICAL  选项测试通过了物理损坏检查的数据和索引块,查看 它们是否存在逻辑损坏,如行片或索引条目损坏。如果检测到任何块存在逻辑损坏,则将该块记录到服务器进程的警报日志和跟踪文件中。

    可以使用  MAXCORRUPT  参数设置逻辑和物理损坏的阈值。只要在某个文件中检 测到的逻辑和物理损坏总和低于该值,则  RMAN  命令完成,同时  Oracle 将损坏块的范围植入到  V$COPY_CORRUPTION  视图。如果超出  MAXCORRUPT,则该命令终 止,并且不植入视图。  当并行度比较高时,占用的计算机资源较多,但备份操作完成速度较快。缺省情况下将启用对物理损坏的错误检查。有关在备份过程中遇到的损坏数 据文件块的信息将记录在控制文件和警报日志中。

4.3.2  恢复

    查看所有的 Copy镜像拷贝:RMAN> list copy;数据文件副本还原:还原时可以 offline 数据文件所属表空间,然后利用 OS拷贝命令恢复副本。

    还可以用  restore  datafile  num  from  datafilecop y  命令来从数据文件副本中还原数 据文件,然后再用  recover  命令来恢复。例如:RMAN> sql "alter database datafile 5 offline" RMAN> restore datafile 5 from datafilecop y RMAN> recover datafile 5RMAN> sql "alter database   datafile 5 online";注意,上面的圆括号很重要,如果没有,restore 命令就会执行失败。

   

4.4 Backup 备份与恢复

    Backup  备份命令生成 Backup sets (备份集合),以 oracle 专有的格式保存,由一个完全的所有的备份片集合构成,构成一个完全备份或增量备份。

    4.4.1 BACKUP  备份命令选项

    设置标记(TAG

    RMAN> backup database tag='test backup'

    限制备份集大小

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

转载于:http://blog.itpub.net/16486600/viewspace-522835/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值