知识大全 RMAN(备份与恢复管理器)

Posted 文件

篇首语:提兵百万西湖上,立马吴山第一峰!本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 RMAN(备份与恢复管理器)相关的知识,希望对你有一定的参考价值。

Oracle数据库备份与恢复之四:RMAN(备份与恢复管理器)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

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

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

   基本知识

   RMAN的组件 概念

     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= ) 控件文件中  RMAN  信息保存的最短时间

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

  RMAN Repository     (RMAN  恢复目录数据库)

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

  MML (媒体管理库)

  Media Management Layer (MML)是第三方工具或软件 用于管理对磁带的读写与文件的 跟踪管理 如果你想直接通过  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命令进行同步

  RMAN> resync catalog

  Incarnation  对应物

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

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

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

     使用不带恢复目录的 RMAN

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

     使用带恢复目录的RMAN

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

     命令行接口

   单个执行

  RMAN> backup database

   运行一个命令块

  RMAN> RUN > copy datafile to > /oracle/prod/backup/prod_ dbf >

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

  RMAN> RUN    EXECUTE SCRIPT backup_whole_db

   运行外部脚本

  $ 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/

  export ORACLE_SID=test

  export NLS_LANG= AMERICAN_AMERICA zhs gbk

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

     使用脚本

  创建或者取代脚本

  RMAN> create script alloc_disk

   > # Allocates one disk

   > allocate channel dev type disk

   > setlimit channel dev kbytes maxopenfiles readrate

   > RMAN> replace script rel_disk > # releases disk > release channel dev >

  删除脚本 RMAN> DELETE SCRIPT Level Backup

  查看脚本 RMAN> PRINT SCRIPT Level Backup

  运行脚本 RMAN> RUN EXECUTE SCRIPT backup_whole_db

     运行OS命令

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

     执行SQL语句

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

  

   RMAN 的配置

     建立Recovery Catalog恢复目录

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

  SQL> create tablespace rman_ts datafile /xxx/rman_ts dbf size M

  ( )  在目录数据库中创建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

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

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

  ( )  登记目标数据库

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

     查看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的默认设置

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

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

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

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

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

     配置默认 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

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

  RMAN> configure channel device type disk format

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

  RMAN> Run allocate channel cq type disk format= /u /backup/%u bak …

  

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

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

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

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

  备份策略保持    

  分为两个保持策略

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

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

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

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

  RMAN> configure datafile backup copies for device type disk to

  RMAN> configure archivelogbackup copies for device type disk to

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

  RMAN> configure channel device type disk format

   /u /backup/%U /u /backup/%U

  RMAN> backup datafile n format /u /backup/%U /u /backup/%U

     设置并行备份( ARALLELISM )

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

  还可以在 BACKUP命令中使用指定 FILESPERSET 或者指定(datafile    channel c tag=DF )(datafile channel c tag=DF )

     设置控制文件自动备份  (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

   /u /app/oracle/product/ /dbs/snapcf_U f

     设置备份优化选项  ( 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_ 的目的地

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

  set until time to_date( / / yyyy/mm/dd hh mi ss )

  set backup copies

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

  例

  RMAN> RUN

  set maxcorrupt for datafile to

  set backup copies =

  backup database

  

   Copy 镜像拷贝与恢复

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

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

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

  Oracle g开始 允许使用单条命令 backup as copy 进行数据库拷贝

     备份

  生成数据文件副本

  RMAN> copy datafile to d \\backup\\datafilecopy\\users dbf bak

  RMAN> copy datafile d \\oracle\\oradata\\ora i\\users dbf to

   d \\backup\\datafilecop y\\users dbf bak

  生成控制文件副本

  RMAN> copy current controlfile to …

  RMAN> CONFIGURE CONTROLFILE AUTOBACKUP is ON

  备份 ARCHIVELOG  副本

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

  RMAN> copy archivelog d \\oracle\\oradata\\arc\\ming_ arc to

   d \\oracle\\orabackup\\arc\\ming_ arc

  并行设置

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

     手工分配多个通道

     在命令中指定多个文件RMAN> cop y datafile xx to xx datafile yy to yy ……

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

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

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

     恢复

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

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

  

   Backup 备份与恢复

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

   BACKUP  备份命令选项

  设置标记(TAG)

  RMAN> backup database tag= test backup

  限制备份集大小

  RMAN> backup database maxsetsize= M

  只备份新增部分

  RMAN> backup incremental level database

  备份控制文件    同时备份SPFILE

  RMAN> backup current controlfile

  RMAN> configure controlfile autobackup on     //  默认是 off

  也可以在备份数据库或者文件的时候加上 include current controlfile 选项 例如

  RMAN> backup database include current controlfile

  备份时如果包含了 SYSTEM表空间 将自动备份控件文件和 SPFILE RMAN> backup file

  使用自动备份进行恢复

  RMAN> restore spfile/controlfile to /xx/xx from autobackup

  备份归档日志( i)

  RMAN> backup archivelog all

  RMAN> backup …… plus archivelog //  在备份其他时同时备份归档日志

  plus archivelog 隐含如下步骤

  运行一个 ALTER SYSTEM ARCHIVELOG CURRENT 命令

  运行  BACKUP  ARCHIVELOG  ALL  命令 注意如果备份优化被启用 RMAN只会备份未备份过的日志

  备份 BACKUP命令中定义的文件

  运行 ALTER SYSTEM ARCHIVE LOG CURRENT 命令   

  备份所有的剩下的归档日志

  备份完后删除归档日志RMAN> backup …… ARCHIVELOG all delete all input 修改备份集的保存策略例如 将备份设置为永久有效RMAN> backup database keep forever logs|nologs 设置为有效期    天RMAN> backup database keep until time= sysdate+ 重写configure exclude / noexclude通过  configure  exclude 可以配置  RMAN  不备份上次备份以来没有发生变化的数据文件 如果要确保 RMAN备份这些数据文件 可以在 backup命令中添加  noexclude  选项 例如 RMAN> backup database noexclude

  跳过脱机的 不可存取的或者只读的数据文件

  RMAN> backup database skip offline skipinaccessible skipreadonly

  强制备份只读的数据文件

  RMAN> backup database force

  备份指定周期内没有备份的数据文件

  RMAN> backup database not backed up

  RMAN> backup database not backed up since time= sysdate

  在备份操作期间检查逻辑讹误

  RMAN> backup check logical database     //在检查逻辑错误的同时进行备份RMAN> backup validate check logical database     //只检查建立压缩备份集RMAN> backup as pressed backupset tablespace users FORMAT= D \\BACKUP\\%d_%s dbf

   RESTORE/RECOVER恢复命令选项

  数据库恢复

  RMAN> restore/revover database

  表空间恢复

  RMAN> restore/revover tablespace xx

  只读表空间的恢复

  默认情况下 即使丢失了只读的数据文件 RMAN  也不会在执行完全数据库还原 操作时 候还原只读的数据文件 要 在完全恢复期间还 原只读的 数据文件 就必须在 RESTORE 命令中使用 CHECK READONLY 参数 RMAN> RESTORE DATABASE CHECK READONLY

  恢复SPFILE/控制文件

  使用自动备份恢复 SPFILE/控制文件

  RMAN> startup nomount

  RMAN> set dbid=

  RMAN> restore controlfile from autobackup

  RMAN> restore spfile/controlfile to /xx/xx from autobackup

  或

  RMAN> restore controlfile from /arch/ct_c

  联机状态 目标数据库 MOUNT 或 OPEN

  RMAN> restore controlfile to d \\temp\\control ctl

  归档重做日志的还原

  RMAN> RESTORE ARCHIVELOG ALL RMAN> RESTORE ARCHIVELOG FROM LOGSEQ= UNTIL LOGSEQ= RMAN> RESTORE ARCHIVELOG FROM LOGSEQ=

  也可以用  SET命令来指定归档日志的还原位置 例如

  RMAN> run

  

  set archivelog destination to d \\temp

  restore archivelog all

  

  数据文件副本还原

  RMAN> sql alter datafile offline RMAN> restore (datafile ) from datafilecop y RMAN> recover datafile RMAN> sql alter datafile online 请注意 上面的圆括号很重要

  还原检查与恢复测试

  与备份检查一样 还原操作也可以检查是否能正常  restore  或者是否该备份集是否有效 如

  RMAN> RESTORE DATABASE VALIDATE RMAN>VALIDATEBACKUPSET RMAN> RESTORE DATABASE VALIDATE CHECK LOGICAL

  从指定的tag恢复

  RMAN> RESTORE FROM tag= xxxx

  不完全恢复的还原

   set until time/SCN/ RMAN> restore database until scn RMAN>restore database to_date( / / yyyy/mm/dd hh mi ss ) RMAN> restore database until sequence thread

  块级别的恢复

  块恢复 Block Media Recovery (BMR) 块是恢复的最小单元 通过块可以减少恢复 时间 而且数据文件可以在线 恢复块的时候 必须指定具体的块号 如 RMAN> blockrecoverdatafile block 具体请见    块媒体恢复  Block Media Recovery (BMR)

     非归档模式下的  BACKUP  备份与恢复

  恢复目录     打开目标数据库 例程启动 数据库加载 mount  不能 open因为目标数据库不在归档模式下 所以当进行备份/恢复操作的时候数据库无法打开 目标数据库只能在  MOUNT 状态不能 Open 所以属于脱机备份

  非归档模式不备份 redo日志 只有完全备份和 readonly/offline表空间和数据文件 备份是有意义的 所以非归档模式最好不用 RMAN进行备份 备份语法与归档模式相 同 所以这里只做简单介绍

     全库备份

  例   使用默认的设置脱机全备份的语句

  RMAN> shutdown immediate RMAN> startup mount RMAN> backup database RMAN> startup

  例 不使用默认的设置执行脱机备份操作  在备份命令中指定备份选项

  RMAN> shutdown immediate

  RMAN> startup mount

  RMAN> run allocate channel c type disk format /xxx/ming_%U

  allocate channel c type disk format /xxx/ming_%U

  backup full tag full_db_backup format /backups/db_t%t_s%s_p%p (database)

  backup current controlfile

  release channel c

  release channel c

  在这个例子中 我们分配了两个通道 备份位置是在/xxx 默认情况下 如果备份数据文件 (SYSTEM  表空间) 控制文件和参数文件也会备份 可以通过下面的命令显示恢复目录中记载的备份集信息 RMAN> list backupset of database

     全库备份的恢复

  $ rman target /

  RMAN> startup mount

  RMAN> restore database

  RMAN> recover database

  RMAN> alter database open resetlogs

     表空间备份

  只有 readonly/offline表空间的备份才有意义

  RMAN> run

   > allocate channel dev type disk

   > backup

   > tag tbs_users_read_only

   > format /oracle/backups/tbs_users_t%t_s%s

   > (tablespace users)

   >

  使用下列命令来显示恢复目录中该表的备份信息 RMAN> list backupset of tablespace users

     表空间备份的恢复

  RMAN> RUN

  sql alter tablespace xx offline immediate

  restore tablespace xx

  recover tablespace xx

  sql alter tablespace xx online

     备份控制文件

  RMAN> run

   > allocate channel dev type SBT_TAPE

   > backup

   > format cf_t%t_s%s_p%p

   > tag cf_monday_night

   > (current controlfile)

   > release channel dev >

  注 数据库完全备份将自动备份控制文件 (或者备份时加 include current controlfile)

     归档模式下的BACKUP备份与完全恢复

  要用  RMAN  进行联机备份操作 数据库就必须位于  ARCHIVELOG  模式 恢复 目录必须打开 目标数据库例程必须启动 数据库加载或者打开

  这部分只介绍完全恢复 不完全恢复见下一节

     整库备份与恢复备份命令

  只备份数据文件  (如果 configure controlfile autobackup  on   将自动包括控件文件 SPFILE) RMAN> backup database 同时备份归档日志 然后将备份后的归档日志删除RMAN> backup database plus archivelog delete input 明确指定同时备份控件文件

  RMAN> run

  allocate channel c type disk

  sql alter system archive log current

  backup full database include current controlfile tag dbfull

  format /u /oracle/rmanback/full_%u_%s_%p

  sql alter system archive log current

  release channel c

  可以用 RMAN的 plus archvielog 选项简化数据库备份

  RMAN> run

   > backup database

   > format /xxfull%d_%T_%s

   > plus archivelog

   > format /xx/arch_%d_%T_%s

   > delete all input

   >

  完全恢复 目标数据库必须是 mount状态$ rman target / RMAN> startup mount RMAN> restore database RMAN> recover database RMAN> alter database open

     表空间的备份与恢复

  备份命令 RMAN> backup tablespace users

  例 RMAN> RUN

  allocate channel c type disk

  backup tablespace users tag ts_users format /oracle/rmanback/ts_%u_%s_%p

  release channel c

  

  恢复 如果我们只丢失了特定的表空间的数据文件 那么我们可以选择只恢复这个表空间 而 不是恢复整个数据库 表空间恢复可以在不关闭数据库的情况下进行 只需要将需要恢复的 表空间 offline

  RMAN> RUN

  sql alter tablespace xx offlineimmediate

  restore tablespace xx

  recover tablespace xx

  sql alter tablespace xx online

  

  恢复到一个不同的位置

  RMAN> RUN

  sql alter tablespace xx offline immediate

  SET NEWNAME for datafile to /xx

  restore tablespace xx

  switch datafile

  recover tablespace xx

  sql alter tablespace tbs online

  

     数据文件的备份与恢复

  备份命令

  RMAN> backup datafile

  RMAN> backup datafile D \\ORAC LE\\ORADATA\\TEST\\TEST DB

  恢复命令 数 据文件 恢复与表 空间恢 复类 似 假设数 据文件 号 为    的文件丢 失 文 件名 是 E \\ORACLE\\ORADATA\\USERS DBF   那么我们恢复的时候可以指定文件号 也可以指定文件名

  RMAN> run

   > allocate channel dev type disk

   > sql alter tablespace users offline immediate

   > restore datafile     ——或者  restore E \\ORACLE\\ORADATA\\USERS DBF

   > recover datafile

   > sql alter tablespace users online

   > release channel dev

   >

  恢复到一个不同的位置

  $ rman target /

  RMAN> startup mount

  RMAN> RUN

  sql alter tablespace users offline immediate

  SET NEWNAME for datafile to /xx/user dbf

  restore datafile

  switch datafile all

  recover datafile

  sql alter tablespace users online

  

     归档重做日志的备份与恢复

  备份 整库备份的同时 备份所有归档  (以及联机日志) RMAN> backup database plus archivelog

  备份所有归档 RMAN> backup archivelog all

  备份两天来的归档 RMAN> backup archivelog from time= sysdate [to time= xxx ]

  备份从 sequence   开始的归档 RMAN> backup archivelog from sequence [to sequence = n]

  备份没有三次备份的归档 RMAN> backup archivelog not backed up times

  备份所有归档 然后删除归档 RMAN> backup archivelog all delete input

  恢复 显示恢复目录中的归档日志 RMAN> list backupset of archivelog all

  一般情况下 在  RMAN  的普通恢复过程中 不必恢复归档的重做日志 不过偶尔也需 要恢复重做日志 例如我们用 Log Miner  来从归档中查找一些东西

  RMAN命令举例

  RMAN> RESTORE ARCHIVELOG ALL

  RMAN> RESTORE ARCHIVELOG FROM LOGSEQ= UNTIL LOGSEQ=

  RMAN> RESTORE ARCHIVELOG FROM LOGSEQ=

  可以用  SET命令来指定归档日志的还原位置 例如 RMAN> run set archivelog destination to d \\temp restore archivelog all 需要注意的是 即使新的归档日志目录不同于默认的归档日志目录 如果  Oracle 判定日志已存在 也不会恢复该归档日志文件

     联机日志的备份

  联机日志不能用  RMAN  来备份 可以先将其归档 再备份 为了实现这点 必须在 RMAN中执行归档命令语句

  RMAN> run

   > allocate channel dev type disk

   > sql alter system archive log current

   > backup (archivelog from time sysdate all delete input)

   > format /oracle/backups/log_t%t_s%s_p%p

   > release channel dev

   >

  

  上面的脚本可以在执行完一个完整的联机数据库备份后执行 确保所有的重做日志可以将数据库恢复到一个一致性的状态

  当然 也可以在全库备份时使用  plus archvielog  选项 将自动完成联机日志的备份

     控制文件和服务器参数文件的备份与恢复备份

  //  设置文件名格式RMAN> set controlfile autobackup format for device t ype disk to ctl_%F

   RMAN> configure controlfile autobackup on     // backup database 时将自动备份

   RMAN> backup current controlfile

   RMAN> backup …… include control file

   RMAN> backup file                 // system datafile 自动备份

  恢复SPFILE

  SPFILE(PFILE)的丢失/损坏 对数据库不会产生致命影响 可以从其他方式恢复 不过既然RMAN的备份计划中包括了SPFILE的备份 那么就可以使用RMAN来还原SPFILE了

  $ rman target / catalog rman/rman@db RMAN> set dbid=     // SET DBID 这个步骤是不能省略的 否则会报错

  RMAN> restore spfile from autobackup [MAXDAYS ]     //  或者 restore spfile

  RMAN> startup force

  或者从某个备份集恢复 RMAN> restore spfile from backupset bs_num 命令 使用dbms_backup_restore 包恢复服务器参数文件 在一些不常见的情况下 我们可能需要直接使用dbms_backup_restore  包来恢复spfile 当然这个包也可以用来恢复其它数据 是常规办法都没有用的时候的一个利器 这个包可以在数据库  NOMOUNT状态下使用 假设我们有一个自动备份文件C 我们需要从这里恢复数据 那么可以通过执行下面的脚本来完成

  SQL>

  DECLARE

  DEVTYPE VARCHAR ( )

  DONE BOOLEAN

  BEGIN

  DEVTYPE =DBMS_BACKUP_RESTORE deviceallocate(NULL)

  DBMS_BACKUP_RESTORE restoresetdatafile

  DBMS_BACKUP_RESTORE restorespfileto( /back/SPFILE ORA )

  DBMS_BACKUP_RESTORE restorebackuppiece( /back/C DONE=>done)

  DBMS_BACKUP_RESTORE devicedeallocate(NULL) END

  恢复控制文件

  RMAN> startup nomount RMAN> set dbid=

  RMAN> restore controlfile from autobackup

  或

  RMAN> restore controlfile from /arch/ct_c

  联机状态 目标数据库 MOUNT 或 OPEN

  RMAN> restore controlfile to d \\temp\\control ctl

  然后再执行恢复数据库的其他步骤 RMAN> restore database RMAN> recover database RMAN> alter database open resetlogs

  使用  dbms_backup_restore 包恢复控制文件

  SQL>

  DECLARE DEVTYPE VARCHAR ( )

  DONE BOOLEAN

  BEGIN

  DEVTYPE =DBMS_BACKUP_RESTORE deviceallocate(NULL)

  DBMS_BACKUP_RESTORE restoresetdatafile

  DBMS_BACKUP_RESTORE restorecontrolfileto( /back/CONTROL CTL )

  DBMS_BACKUP_RESTORE restorebackuppiece( /back/C DONE=>done)

  DBMS_BACKUP_RESTORE devicedeallocate(NULL) END /

     备份集的备份的备份与恢复

  备份 备份所有备份集 RMAN> backup backupset all 备份指定备份集 RMAN> backup backupset bs_num 恢复 (这种备份只是增加一个镜像 不用恢复)

  主要用于改变备份集的位置 或者创建多个镜像备份 比如将备份集从硬盘备份到磁带

     归档模式下的不完全恢复

  不完全恢复就意味着有数据的丢失 引起不完全恢复的原因有很多 如丢失了联机日志 或某个归档日志 另外如果出现了严重损害数据库的用户错误 比如某用户错误的删除了某 个重要的数据 那么数据库也要恢复到这个错误操作之前

  不完全恢复会影响整个数据库 需要在 MOUNT 状态下进行 在不完全恢复完成之后 通常需要使用  resetlogs  选项来打开数据库 resetlogs  表示一个数据库逻辑生存期的结束和 另一个数据库逻辑生存期的开始 数据库的逻辑生存期也被称为一个对应物(incarnation) 每次使用  resetlogs  选项来打开数据库后都会创建一个新的数据库对应物 这对于恢复操作 来说非常重要 每次使用  resetlogs  后 SCN计数器不会被重置 但是 Oracle会重置联机日 志序列号 同时还会重置联机重做日志内容 因此执行了  resetlogs  之后 应该立即重新备 份整个数据库 否则恢复起来相当麻烦 (注 Oracle g 中已经可以在  resetlogs 之后不备 份数据库 恢复的时候能够穿越 resetlogs)

  使用RMAN执行不完全恢复操作时需要完成的一个工作是建立恢复目标 恢复目标是要终止恢复进程的点 可以是时间点 指定的  SCN  或者一个日志序列号 我们可以在  run代码中使用 set  命令和 until time until scn until sequence 参数

  也可以选择在RESTORE 和RECOVER命令中直接使用UNTIL TIME UNTIL SCN 或者 UNTIL SEQUENCE 参数 这样就可以避免使用  run  代码 例如

  startup mount

  restore database to_date( / / yyyy/mm/dd hh mi ss ) recover database to_date( / / yyyy/mm/dd hh mi ss ) alter database open resetlogs

     基于SCN的恢复

  如果知道数据库出错前的 SCN 可以将数据库还原到指定  SCN  状态

  $ startup mount

  RMAN> run

  allocate channel d type disk

  restore database until scn           ——或者  set until scn

  recover database until scn

  sql alter database open resetlogs

  release channel d

  

     基于时间的恢复

  下面使用 set until time  命令为    年    月    日下午  点的恢复目标

  $ startup mount

  RMAN> run

  set until time to_date( / / yyyy/mm/dd hh mi ss )

  restore database

  recover database

  alter database open resetlogs

  

  执行上面的命令时 RMAN  会查找与恢复目标时间最近 但是不包含恢复目标时间及以后时间的备份集 并且从这个备份中还原数据库 如果数据库非归档模式 那么恢复操作 会在备份集的时间点停止 否则  RECOVER  命令会应用恢复目标之前的归档重做日志或需 要的增量备份

     基于日志序列的恢复

  RMAN  允许用户将数据库恢复到指定的归档重做日志序列号 如果归档的重做日志中 有间隙(某个归档日志文件或备份损坏或丢失)  使用这种方法就很方便 间隙通常意味 着我们只能将数据库还原到间隙开始的地方

  SQL> startup mount

  RMAN> restore database until sequence thread     ——not include RMAN> recover database until sequence thread

  SQL> alter database open resetlogs

  RMAN> RUN

   > SET UNTIL SEQUENCE THREAD

   > RESTORE DATABASE

   > RECOVER DATABASE     ——recovers through log not include

   > ALTER DATABASE OPEN RESESTLOGS

   >

   RMAN 查看信息List 与Report

     恢复目录相关视图

  恢复目录本身有一组视图 用于存放目标数据库与备份信息 可以用 RMAN用户登录数 据库进行查看 例 RC_DATABASE

  RC_DATAFILE RC_STORED_SCRIPT RC_STORED_SCRIPT_LINE RC_TABLESPACE RMAN  动态性能视图

  以下是目标数据库上与  RMAN  备份有关系的一些动态性能视图 可以用 SYS用户进行 查询

  V$ARCHIVED_LOG V$BACKUP_CORRUPTION V$COPY_CORRUPTION V$BACKUP_DEVICE V$CONTROLFILE_RECORD_SECTION V$BACKUP_DATAFILE      用于通过确 定各数 据文件中 的块数来创建大小 相同的备份集 通过它也可以找出数据文件中已损坏的块数 V$BACKUP_REDOLOG    显示在备份集中存储的归档日志 V$BACKUP_SET    显示已经创建的备份集 V$BACKUP_PIECE      显示为备份集创建的备份片

  这里还有一个视图 可以大致的监控到  RMAN  备份进行的程度 如通过如下的  SQL脚本 将获得备份的进度

  SQL> SELECT SID SERIAL# CONTEXT SOFAR TOTALWORK

   ROUND(SOFAR/TOTALWORK* ) %_PLETE

   FROM V$SESSION_LONGOPS

   WHERE OPNAME LIKE RMAN%

   AND OPNAME NOT LIKE %aggregate%

   AND TOTALWORK !=

   AND SOFAR <> TOTALWORK

  要在备份过程中将某一进程与一个通道关联起来 请

   启动恢复管理器并连接到目标数据库和恢复目录(与后者的连接是可选的)

  rmantarget / catalog rman/rman@rcat

   在分配通道后 设置 MAND ID 参数 然后复制所需的对象

  run

  allocate channel t type disk

  set mand id to rman

  copydatafile to /u /backup/df cpy

  release channel t

   查询 V$SESSION_LONGOPS 视图以获得复制的状态

  SELECT sid serial# context sofar totalwork

  round(sofar/totalwork* ) % Complete

  FROM v$session_longops

  WHERE opname LIKE RMAN %

  AND opname NOT LIKE RMAN aggregate%

   使用 SQL*Plus 并查询 V$PROCESS 和 V$SESSION 以获得 SID 和 SPID 然 后        使用操作系统实用程序来监视进程或线程

  SELECT sid spid client_info FROM v$process p v$session s WHERE p addr = s paddr

  AND client_info LIKE %id=rman%

   List

  List  命令是一种在数据库控制文件 或者恢复目录中查询备份的历史信息的方法 List提供了一组信息 可以提供各种备份的信息 如对应物 备份集 归档日志备份 控 制文件备份等等

  列出对应物 RMAN> list incarnation

  列出备份概要信息 RMAN> list backup summary

  按备份类型列出备份 RMAN> list backup by file

  获得备份的详细信息 包括备份片的物理文件名 RMAN> list backup RMAN> list backupset bs#

  或者按照TAG  来查 RMAN> list backup tag=tab_number

  列出过期的备份 RMAN> list expired backup

  按照表空间和数据文件来列出备份 列出USERS 表空间的备份 RMAN> list backup of tablespace USERS

  列出文件 的备份 RMAN> list backup of datafile

  列出文件  E \\ORACLE\\USERS DB  的备份 RMAN> list backup of datafile E \\ORAC LE\\USERS DB

  列出控制文件的备份 RMAN> list backup of controlfile

  列出归档日志的备份 RMAN> list archivelog all RMAN> list backup of archivelog all

  列出副本

  RMAN> list copy                                  列出所有的副本

  RMAN> list copy of controlfile       列出控制文件副本

  RMAN> list copy of archivelog all   列出所有归档日志副本

  RMAN> list copy of database           列出数据库所有数据文件的副本

   Report

  Report  命令被用于判断数据库的当前可恢复状态和提供数据库备份的特定信息 可 以检测哪些文件需要备份 哪些备份能被删除以及那些文件能不能获得的信息 可以报 告数据库的所有能备份数据文件对象 包括数据文件名 文件号 表空间 文件大小 是否含有回滚段等

  RMAN> report schema或者RMAN> REPORT SCHEMA AT TIME SYSDATE RMAN> REPORT SCHEMA AT SCN RMAN> REPORT SCHEMA AT SEQUENCE THREAD

  报告需要备份的数据文件RMAN> report need backup [ redundancy | days | incremental n] 报告过期了的数据文件或者不可用的备份与拷贝RMAN> Report obsolete [orphan]报告最近没有备份的数据文件RMAN> report need backup days=         //  恢复需要超过 天的归档日志RMAN> report need backup incremental= //  恢复时需要超过   增量的文件报表文件  增量 名称 E \\ORACLE\\ORADATA\\MING_RECOVER\\MINGDICT DB E \\ORACLE\\ORADATA\\MING_RECOVER\\MINGLOB DB

  这个报告中 列出的数据文件 在进行恢复的时候 需要从   个以上的增量备份文件中恢复 我们知道如果需要从很多文件中恢复 会影响恢复速度 可以根据情况来重新备份这些文件

  报告备份冗余或恢复窗口我们可以执行 report need backup redundancy  来确定为满足冗余备份策略而需要备份的 文件 例如 RMAN> report need backup redundancy=     //  文件冗余备份少于   个我们也可以按照恢复窗口来查找需要备份的文件 比如我们要求恢复窗口小于   天 那 么用下面的命令 RMAN> report need backup recovery window of days     //文件报表的恢复需要超过 天的归档日志

cha138/Article/program/Oracle/201311/17290

相关参考

知识大全 如何简单测试Rman的备份恢复功能?

如何简单测试Rman的备份恢复功能?  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文只是简单

知识大全 RMAN的备份及恢复-丢失所有控制文件

RMAN的备份及恢复-丢失所有控制文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  数据库基本

知识大全 完整的oracle rman备份恢复的例子

  建rman库作为repository  $morecreaterman_dbsh  setechoon  spoolmakedblog  createdatabaserman  datafile/

知识大全 rman备份方式半功略

  一RMAN是Oracle提供的一个数据库备份和恢复工具  特点  )备份和恢复数据库表空间控制文件数据文件和归档文件  )校验备份数据集  )通过备份检查损坏块  )增量备份  )脚本能力  )备

知识大全 数据库备份与恢复测试(6)

  [测试]数据库在非归档模式数据库MOUNT数据文件丢失有表空间备份  RMAN>backuptablespaceusers;  启动backup于月分配的通道:ORA_DISK_通道ORA_

知识大全 表的许多分区被意外drop用rman不完全恢复

  如果表的很多分区被意外drop需要利用带库上的备份集在测试机上做不完全恢复具体日期需要达到一个特定的时间那么我们可以参考下文  ◆首先需要用logminer查出删除语句    unpress/or

知识大全 初步尝试RMAN备份

初步尝试RMAN备份  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Rman备份命令  切换服务

知识大全 oraclerman命令

  从网络上找到rman命令集合  一list常用命令总结备忘  list命令列出控制文件RMAN恢复目录中备份信息是我们对所有可见的数据库备份文件的一个最直观的了解的方法  listincarnat

知识大全 清理RMAN备份中的过期数据

清理RMAN备份中的过期数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  查看过期备份  RM

知识大全 RMAN自动备份的脚本(windows环境)

RMAN自动备份的脚本(windows环境)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!自从推出