DBA之路--RMAN备份与恢复01_RMAN体系架构

1、RMAN体系架构

1.1、服务器管理的恢复与RMAN实用程序:

RMAN目的时实现SMR(服务器管理恢复)的工具,依赖于oracel rdbms内部代码实现功能,是在出于减少用户操作针对越来越复杂的数据库脚本维护所提出。

RMAN属于oracle一个单独的应用程序,数据库即使处于nomount状态,rman包任然可以启用。

RMAN本质为命令解释程序,用于提交你输入的内容到数据库,具体完成备份主要是使用目标数据库本身的进程和程序

RMAN实用程序

如不使用RMAN需要在安装数据库是不选择Runtime clinet选项,RMAN主要包含如下内容 (以下使用$ORACLEHOME指代数据库缺省安装位置)

  • RMAN可执行代码,用于于客户端交互.

  • $ORACLEHOME/rdbms/admin/recover.bsq,用于针对rman发出的所有命令显示其调用的过程和相关信息.

    作为rman的神经中枢

  • $ORACLEHOME/rdbms/admin/dbmsrman.bsq,用于加载到数据库打包的dbms_rcvman头文件,该文件主要用于管理元数据

  • $ORACLEHOME/rdbms/admin/dbmsbkrs.bsq,用于加载dbms_backup_restore中于rman相关的所有注释内容,用于了解内部原理

  • 数据库存储过程dbms_backup_restore和dbms_rcvcat,属于被调用rman内部文件

RMAN的权限

c版本新增sysbackup权限,以该用户身份进行连接时,连接模式为sys但是会收到一些权限限制,限制内容不影响用户的使用。使用rman的基本要求,就是连接用户至少处于sysbackup权限以上,否则在使用过程中会报出各种错误。

1.2、RMAN网络拓扑结构:

与SQL*Plus 类似,如果要远程运行 RMAN,可使用TNS 服务连接到数据库。当通过TNS远程连接到诸如SYSDBA 的特权账户时,数据库必须拥有一个口令文件。如果使用的是 RMAN,情况同样如此。所有 RMAN 连接必须使用特权账户,因此要通过OracleTNS使用RMAN,数据库必须拥有口令文件。

#c版本由于插拔式数据库概念,需要指定连入得数据库名称
   rman target rmanpdb #此处指定连入数据库pdb名称
   rmantest #按照提示输入数据库创建时得密码口令

RMAN进行使用需要共享服务器,一般oracle进行安装后默认会进行创建,无需考虑

1.3、RMAN与控制文件的关系

数据库内部得控制文件中记录内容分为两类,循环重用记录与非循环重用记录,前者主要是归档日志记录等持续性产生的内容而后者主要是数据文件列表或关键日志文件,在控制文件空间无法扩展的情况下,数据库会优先进行循环重用记录的删除

而rman日志备份记录就是属于循环重用控制文件的一种,所以需要时刻关注控制文件的空间使用情况,及时清空或备份控制文件

如果控制文件没有任何rman备份文件记录,就算我们持有rman备份文件也不能执行恢复操作,否则很容易就会造成严重后果

control_file_record_keep_time#此参数指定控制文件不会致使记录过期。默认7,单位天
#快照控制文件
#针对执行rman备份操作时不能进行数据的检查点前移、日志切换和产生新日志文件这三个实际上等于锁定控制文件的特性,rman提出快照控制文件的方式来模拟锁定操作。
 #快照控制文件实际为控制文件的副本记录,只能在rman执行备份和同步操作时被使用,这样更新的就是副本记录而而不是数据库实际使用的控制文件,从而达到短暂锁定,副本记录只有在rman执行前才会进行刷新。
 configure snapshot controlfile name to '<location\file_name>' #修改快照文件位置和名称 默认名称 SNCF<oracle_sid>.ora
 
#快照文件在多个rman会话中执行备份作业的情况中会报出,下面内容错误,原因是这几个rman会话在执行备份操作时互相锁定了快照文件,后面需要执行语句进行接触
#RMAN-08512: waiting for snapshot controlfileenqueue
SELECT s.sid,username AS "User", program, module, action, logon _time "Logon",1.*
FROM vSsession s, v$enqueue lock 1
WHERE 1.sid =s.sid and 1.type = 'CF'AND 1.id1= 0 and 1.id2 = 2;
#rman同时支持手动重建控制文件
create control file

1.4、RMAN服务器进程

rman在使用时产生的客户端连接会同时在创建两个服务器进程,

  • 主进程。主要面向sys模式下数据包调用进而进行备份和恢复操作。主进程还会协调信道进程工作。

  • 次要进程(影子进程)。 轮询rman中所有长事务,内部记录下可以看到具体执行情况(rman执行时分配的信道信息也会出现在这里)

    SELECT SID,SERIAL#,CONTEXT,SOFAR,TOTALWORK,ROUND(SOFAR/TOTALWORK*100,2) COMPLETE FROM V$SESSION_LONGOPS WHERE OPNAME LIKE 'RMAN%' AND OPNAME NOT LIKE '%aggregate%'AND TOTALWORK !=0 AND SOFAR <> TOTALWORK
    
  • 信道进程,RMAN会对每个执行备份或还原操作的信道单独创建一个进程,同时将该进程视为服务器进程。信道在执行备份时,备份只能写入磁盘或者磁带,这就引出了IO从属进程

1.5、RMAN使用的sys数据包

RMAN服务器进程在协调信道通道工作时会访问下面两个数据包,这两个数据包包含了rman的所有功能。(rman的恢复目录)

下述数据包会在创建数据库时默认安装,安装位置在oracle内核中所以即使数据库处于nomount状态,rman服务依旧可用

dbms_rcvman数据包

此数据包用来访问控制文件中的表然后将信息回传给rman,准许rman构建反应整个数据库结构的备份与还原操作。

在rman实际构建备份与还原命令前,会自动执行负载均衡与性能增强用以降低备份时的性能损耗。

dbms_backup_restore数据包

此包包含访问控制文件所需要校验必须信息,这些信息会回传给rman服务器进程,之后rman会基于recover.bsq rman实用程序创建包含此数据包调用的plsql块。

所谓调用,就是用数据包内容进程备份数据文件、控制文件和归档重做文件,此数据包实际为rman真正核心

v$session_longops 视图可以跟踪该数据包的使用情况

1.6、RMAN与块级别备份数据

rman由于是写入到oracle内核中进行的,所以与数据级别同级可以进行逻辑结构-块级别方式备份数据

去除开rman备份方式,数据库的备份方式多种多样。其中以文件级别备份方式最为常见简单,采取文件级别备份数据库基本不进行完整性检查,所以当数据文件内块结构受损,基本可断定备份文件同样受损,属于无法纠正修复的错误。

RMAN由于集成到rdbms中,基本与数据库同级别所以可以访问到最低级别逻辑结构块和实际os block逻辑结构。所以即便损坏也可以还原块

#块备份流程
 1、rman在共享内存段内创建内存缓冲区,一般在各个rman的pga区域执行
 2、通道(信道)服务器开始读取数据文件,在上述缓冲区中填充数据块
 32中每完成一个数据块,该数据块就会从输入缓冲区进入到输出缓冲区。进行内存对内存的写操作
 43中写操作会同时对块进行检测损坏,当输出缓冲区被填满,该区域内容就会被推送至备份区域(该内容成为备份集),直至备份区域达到一个备份片大小
 5、达到备份片大小后,rman就是写入控制文件备份片完成时间和名称
 
#块备份优点
 #1、空块压缩
  由于块的header是可以写入含有数据的信息的使用空间,所以当header内针对块大小的字段为0,rman在执行检查后就会丢弃空块。
  rman的空块压缩不存在删除空数据块的问题,由于实际rman在执行时为了不打开数据库,所以他只能读取文件头和数据块头去获取空间信息,如果目前备份的数据有存在一个被截断的表(或者说存在发生行迁移或行连接)#待定,
空块也会直接备份过来。
  空快压缩与备份期间备份数据总量无关,不会影响时间。
  除非是那种备份到位置的数据流较快,这种确实能有效节省时间
 #2、未使用的块压缩
  说人话是未使用的块不会备份,空块也不备份。在10版本后,使用过的块如果是null块也不会备份,(行链接和行迁移的null块也不会进行备份)。
  
 #3、二进制压缩11g中,可使用Oracle 高级压缩,它提供了三个不同级别的压缩方法,可让二进制压缩与你所在的环境相吻合。
  三个级别分别为高级、中级和低级。
  高级,用于限制带宽的环境中,在这种环境中限制对网络资源的访问权是优先的;
  中级,用于对CPU利用的压缩率的合并;
  低级,CPU的使用成为网络带宽或备份片总大小的限制因素。
 #4、块级别备份-性能提升
 采取老式热备份会生成大量的重做与归档日志(前提归档有开启),这回造成频繁的日志切换、故障的检查点对空间管理带来大量伤害。
 rman在备份时会要求使用归档模式,因为实际上rman不允许我们在open状态下进行数据文件备份,所以需要开启归档日志用作一个保险功能
  初次之外rman还有以下非常有用的恢复选项
    #块介质恢复
      简单处理恢复损坏数据块并进行执行
    #多段备份
      将大空间的数据文件分段,同时并行处理备份操作。这可以大大提高速度

1.7、RMAN与数据库内存

内存缓冲区概述

由1.6我们可知道,rman在实际使用时会在SGA或PGA构筑缓冲区,同时通过1这些缓冲区将数据文件写入到块。这种缓冲区有实际分为两种

  • 输入缓冲区,填充从备份文件中读取的数据块

    #输入内存缓冲区
     备份数据库时,输入内存缓冲区大小和数目取决于实际执行的备份命令,或者说时一个备份中多路复用的文件数量。每个信道通道的缓冲区总和计算是单独独立的
       1、备份集内文件数少于4,则rman为每个文件分配41mb缓冲区,缓冲区总和小于等于16mb
       2、备份集内文件数多于4少于8,贼每个文件分配4512kb,还是不超过16mb
       3、多路复用文件数量大于8个,则每个文件最多128kb大小,保证每个要备份文件占用512缓冲区内存
       
    SELECT set_count, device_type,type,filename,buffer_size,buffer_count,open_time,close_time FROM v$backup_async_io ORDER BY set_count,type, open_time,close_time;
    #监控备份运行时基于每个控制文件产生的缓冲区大小
    
  • 输出缓冲区,执行内存对内存的写操作中备份数据块

    #1、被分到磁盘时的内存缓冲区
     rman根据输出源分配缓冲区,磁盘情况,rman将用缓冲区接收数据溢出到备份片前的输入区的缓冲数据块
    #2、备份到磁带时的内存缓冲区
     由于磁带设备io缓慢,
    #3、用于还原的内存缓冲区
     rman进行备份还原时,rman也会创建输出内存缓冲区,每个信道标准四个输出缓冲区(128)和输入缓冲区(256#4、多节备份和内存
     此处指的是单个大文件的多通道备份。按理还是每个信道四个输入四个输出
    
RMAN对SGA与PGA的利用

RMAN在实际使用时会同时使用SGA与PGA,使用pga内存空间充当备份缓冲区,sga的大池充当内存缓冲区的数据加载

站在PGA与SGA角度审视RMAN

pga内存空间用于作为备份缓冲区同时用于通道进程的内存分配,当rman有设置参数dbwr_IO_slaves时,oracle才会对其分配四个从属IO来协调内存缓冲区内的数据块加载。而数据块加载这一过程必须要用到一个共享内存加载区,所以处理数据加载这一过程的内存缓冲区,如果sga有大池优先推到大池,没有默认推送到sga共享池

一般建议有设置rman或后续有使用到rman的邮箱创建大池,大池专门用户为备份分配通道总数

show parameter backup_tape_io_slaves
#此参数关联rman是否会为每个通道创建一个从属进程区协助备份工作(对内存缓冲区的数据进行加载加快备份进度),默认为false,需要设置为true。
#涉及到内存分配推入sga区域,是协调备份工作的参数

show parameter dbwr_IO_slaves
#该参数用于设置填充内存中输入缓冲区的异步IO从属,默认为0则不会分配从属进程协调进行块数据加载。
#设置为非0值,oracle才会配合rman自动生成四个io从属进程协调数据块加载工作

1.8、RMAN与恢复目录

恢复目录存储的是与RMAN相关的备份元数据,可以视为RMAN备份恢复所需要的控制文件的关键副本信息。(恢复目录不是FRA,两个东西)

一般情况下使用rman前都会先创建恢复目录,恢复目录包含以下内容

  • 数据包、表、索引、视图以及控制文件
#使用恢复目录,需要连接到目标库里尽心创建
 #g版本有server_name直接连入主库即可
 rman> connect target / #依照登录用户名密码,创建恢复目录
 rman> connect catalog rman/password@rcat
 #一个恢复目录允许存储多个目标库的信息,实现集中管理多个不同数据库的备份
 #恢复目录一旦被链接,就可以进行手动同步回复目录,允许隐性或采取调用目标库中的控制文件内容刷新恢复目录中表内信息

rman恢复目录中的含有dbms_backup_restore与dbms_rcvman之前介绍过的两个数据包,

由于目录数据库(包含恢复目录的数据库)也是潜在的目标数据库,所以这种目录数据库实际上是含有两种模式的dbms_rcvman数据包,一个是oracle数据库安装由catproc.sql创建的,另外一则是目录数据库普通用户下创建的,有本质区别,所以实际不会产生错误

处于恢复目录的保护作用,恢复目录中表实际并不重要,oracle本身创建了一堆RC开头的视图,这些视图会自动从恢复目录中获取信息,所以实际操作的是这些RC视图。而所有直接针对恢复目录对象的dml语句都是非常危险的

1.9、RMAN辅助数据库与RMAN兼容性问题

辅助数据库

辅助数据库(auxiliary database)指在进行表空间时间点恢复(TSPITR)、复制操作(克降数据库)或使用 RMAN 备份创建备用数据库时,为了还原目标数据库的文件而临时生成的实例。

另外也将辅助数据库用于Oracle Database 12c中的新功能,如从备份提取单独的表。

执行下面任何操作都需要对目标库和辅助库进行连接(包含后续介绍的12c新功能)

  • 表空间时间点恢复
  • 复制操作(克降数据库)
  • 用 RMAN 备份创建备用数据库
  • 备份提取单独的表(12c新功能)

执行上述任何一种任务时,我们都要在 RMAN 中同时连接目标数据库和辅助数据库,这样就可以利用目标数据库控制文件中的备份信息在辅助数据库位置调整这些备份的还原。下面所示的是连接到目标数据库(本地)和辅助数据库(使用Oracle Net连接)的连接:

connect target /
connect auxiliary sys/pwd@auxl
#辅助库一般创建时默认就是sysdba
#执行该命令后,rman会同时生成到每个数据库的连接,要求访问目标库与辅助数据库的dbms_backup_restore与dbms_rcvman两个数据包。
兼容性问题

RMAN兼容性分为五部分,每个部分各组有版本号

  • rman可执行版本
  • 目标数据库
  • 恢复目录模式
  • 恢复目录数据库
  • 辅助数据库

RMAN兼容性规则

  • rman客户端版本必须与目标数据库版本、辅助数据库版本、恢复目录版本保持一致
  • oracle任意版本都可以还原有oracle早期创建的备份集或映像副本

1.10、RMAN备份的实际流程(整合)

  1. rman生成连接到目标数据库,同时在该实例上生成一个服务器连接此时对数据库内部而言我们会被识别为sys用户,同时跟随一个用于执行备份操作信道进程。

  2. rman调用sys.dbms_rcvman数据包,获取数据库(主要为目标库)的结构信息与版本信息,收集目标库的控制信息与控制文件本身、类型、序号、创建时间用于后续使用其快照文件。

  3. rman获取目标库所有数据文件信息,判断离线在线文件,用于将注意力集中到需要创建成备份集的文件列表中

  4. 上述步骤结束后,rman开始执行备份进程,使用2中获取信息构建快照控制文件(准确说是更新原本快照文件,没有才会构建)。

  5. 之后rman会依照读取数据文件数量和通道数量对其分配内存缓冲区,默认一个文件四个输出缓冲四个输入缓冲,总和不会超过16mb

  6. rman使用dbms_backup_restore数据包调用创建备份片,存放在 o r a c l e h o m e / d b s 或者 oracle_home/dbs或者 oraclehome/dbs或者oracle_home/database。一边进行初始化备份片、一边对输入到备份片的数据块增量分配空间一次50mb。

    进行到此处时,rman已经不会对可使用空间进行检查,如果不够会自动报错,结束初始化进行

    6过充中除了对数据块的处理,同时还会对服务器参数文件spfile对文件备份。

  7. 当6中持续性插入块直至输出缓冲区被填满后,输出缓冲区的内容就会转存到备份文件位置处。

    通道上进行的这一步操作称为预读,在这个操作过程中,一般情况下多个数据块会一起写入到内存,紧随其后会进行输入缓冲区到输出缓冲区的写操作—判断块头信息是否完整或者为0或者损坏,0的会被抛弃损坏的则会终止后续操作

  8. rman获取到所有备份片构成一个备份集,产生多个转储文件。rman结束后生成的转储文件实际为无序状态,也叫储存桶buket。

    只有在执行rman还原时,这些无序数据才会被RMAN影子进程恢复到原来的正确位置(影子进程通过轮询方式检查状态信息)

#rman影子进程回怼目标库进行远程调用,将信息传递给v$session_longops视图中,用于检查每个信道(通道)完成的百分比
SELECT SID,SERIAL,CONTEXT,SOFAR,TOTALWORK,ROUND(SOFAR/TOTALWORK*1002) "%_COMPLETE" FROM V$SSESSION_LONGOPS 
WHERE OPNAME LIKE 'RMAN%' and opname not like '%aggregate%' and totalwork !=0 and sofar <> totalwork;

下一章:DBA之路–RMAN备份与恢复02_RMAN配置、备份和恢复操作基础

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
RMAN学习测试整理1 20121219 by Apollo 一、 Oracle数据库备份分为物理备份和逻辑备份。今天测试整理下物理备份Rman,也就是oracle的恢复管理器(Recovery Manager)。 毕竟逻辑备份是不能实现时间点恢复的,所以生产数据库肯定用物理备份来保证灾难时能够恢复。 二、 Rman备份的前提条件:数据库需要运行在归档模式下 (1) 查看oracle数据库的archivelog mode的方式 sqlplus / as sysdba ##需要as sysdba登录,不然即使有dba权限也fail archive log list ##方式一 select name,log_mode from v$database; ##方式二 (2) 由非归档切换到归档模式 shutdown immediate startup mount alter database archivelog; alter database open; (3) 反之由归档切换到非归档模式 shutdown immediate startup mount alter database noarchivelog; ##切换到非归档 alter database open; (4) 其实oracle安装好后会默认运行在非归档模式下(安装时有开关勾选),其配置文件为init.ora,可以通过修改init.ora来调整。 sqlplus oracle/oracle show parameter spfile ##spfile和init.ora一般在一个路径下 exit cd $ORACLE_HOME/dbs vi init.ora (5) init.ora关于archive的参数 log_archive_start = true 启动自动归档 log_archive_dest = disk$rdbms:[oracle.archive] 归档日志路径 log_archive_format = “T%TS%S.ARC” 归档日志格式 三、 启用数据库备份模式 (1) 查看当前情况 select * from v$backup; select * from v$log select * from v$datafile_header (2) 整库开启备份模式alter database begin backup; 哦,忘记开启归档了。奔3的人老了呀。(非一致性备份必须开启归档) (3) 指定某个表空间开启备份模式 alter tablespace tablespace_name begin backup; 先建个tbs_apollo_backup的表空间吧: 靠,/opt下剩余只有649M,先给个200M吧,回头再从根目录划分一些出来。 create tablespace tbs_apollo_backup datafile '/opt/oracle/oradata/orcl/tbs_apollo_backup.dbf' size 200M 因为之前做了database begin backup,所有表空间都处于backup状态了。将database的backup停掉重新指定tablespace备份。 再次查看各个tablespace的backup情况 select a.tablespace_name,b.status as backup_status,a.file#, a. ts#,a.recover,a.status as on_off_status,a.name from v$datafile_header a ,v$backup b where a.file# = b.file# 四、 RMAN相关使用 1、 RMAN连接到Target Database (1) 分步进行 rman nocatlog(nocatalog会将相关备份信息即元数据放在Contronfile里面) connect target / (不像DB2那样connect to,就connect就OK了) (2) 一步到位 rman nocatlog target system/manger 权限不足,使用rman连接target的话需要sysdba权限而不是dba。 I 查看是否拥有sysdba权限 select * from v$pwfile_users; 备注:常用的查看权限视图 select * from dba_users where username='SYSTEM' select * from dba_role_privs where grantee='SYSTEM'; select * from v$pwfile_users; ii 用sys用户授予system用户sysdba权限(其实是一个角色) iii 用system用户再次连接target database (3) 可以在rman里面停起数据库(停库状态需要隐式登录,不能带网络服务名) (4) DataFile tbs_apollo_backup.dbf异常了,先解决下 alter database datafile ‘datafile_name’ offline; recover datafile ‘datafile_name’ alter database datafile ‘datafile_name’ online; alter database open; 再次在Rman里面操作停起数据库(sql_statement用单引号或双引号括起) 2、 List命令查看备份集(在数据库控制文件或恢复目录中查询备份的历史信息的方法) (1) 查看数据库所有的备份集合 list backupset; (2) 查看指定TableSpace的备份 list copy of tablespace “TBS_APOLLO_BACKUP” list backupset of tablespace "TBS_APOLLO_BACKUP"; (3) 查看指定DataFile的备份 list backupset of datafile "/opt/oracle/oradata/orcl/users01.dbf"; (4) 查看备份汇总 list backup summary; (5) 3、 Report命令报告备份情况(判断数据库当前可恢复状态和提供数据库备份的信息) (1) report schema;(报告数据库结构) (2) report need backup;(报告需要备份的内容) (3) report obsolete(Which backups can be deleted ?)报告过期备份 (4) report unrecoberable(Which files are unrecoverable ?) 4、 CONFIGURE配置Rman参数 (1) show all命令查看所有配置 (2) CONFIGURE命令修改配置 ControlFile太重要了,一般都设置备份它 五、 准备下数据库对象 1、 临时表空间 create temporary tablespace apollo_temp tempfile ‘/opt/app/oracle/oradata/orcl_apollo/Apollo_temp.dbf’ size 200m autoextend on next 50m maxsize 2048m extent management local; 2、 创建数据表空间 create tablespace apollo_data logging datafile ‘/opt/app/oracle/oradata/orcl_apollo/apollo_data.dbf’ size 1g autoextend on next 50m maxsize 4096m extent management local; 备注:引用的字符串如这里的单引号在copy时异常。 3、 创建用户并指定表空间 create user rman identified by rman default tablespace apollo_data temporary tablespace apollo_temp; 4、 给用户授权 grant connect ,resource to rman; 5、 其他如table、index、function、procedure、view、sequence等。 六、 Rman备份的对象(主要包括Database、Tablespace、Datafile、Controlfile和Archivelog) Rman不能备份口令文件和初始化参数文件(也就是前面提到的init.ora)。 1、 备份DataBase backup database; backup database是一次全备份,其实省略的很多参数,相当于用的默认的。而备份好的备份集放在哪里呢? 在sqlplus里面执行show parameter db_recovery_file_dest; 查看备份后情况: list backupset; 2、 备份Tablespace backup tablespace apollo_data; RMAN-06554: WARNING: file 5 is in backup mode 该警告提示file5也就是这个表空间的备份其实已经存在了,因为刚做过full backup了嘛。 查看备份集合新增了3和4两个备份集 3、 备份Datafile backup datafile '/opt/app/oracle/oradata/orcl_apollo/system01.dbf'; 也可backup datafile 4 这里的4对应第四个datafile,可由report schema报告得知是:user01.dbf 测试备份的有点多,那么可以删除一些过期的备份。 (1) 通过删除备份集删除 (2) 通过删除备份片删除 (3) 当然直接删除全部过期更加直接 delete obsolete; (4) 删除后无过期备份存在 4、 备份Controlfile (1) 自动备份控制文件如前面示例show all后修改的参数 CONFIGURE CONTROLFILE AUTOBACKUP ON; 那么每次备份会自动备份控制文件。 (2) 手动备份控制文件 backup current controlfile; (3) 列出备份过的controlfile list backup of controlfile; 有14、15、16三个备份集里面有,那么肯定有过期的了,再验证下 report obsolete; 14和15作为过期的报告出来,16为最新的备份。 5、 备份Archivelog (1) 备份数据库时使用参数plus archivelog自动备份 backup database plus archivelog;(我们清空所有备份delete backup后重头来) (2) 手工备份 backup archivelog all; 6、 备份spfile (1) 备份时自动备份spfile CONFIGURE CONTROLFILE AUTOBACKUP ON在备份控制文件时页备份spfile (2) 手动备份 备份的spfile同样放到backupset目录下面 7、 七、 恢复数据库 1、 模拟datafile丢失或损坏进行恢复 cd $ORACLE_BASE/oradata/orcl_apollo mv ./apollo_data.dbf /home/oracle/backup/apollo_data.dbf 重启数据库看看 看来破坏了datafile正常停库都不行,需要abort才行。 起库就更不用说了 那么开始真正恢复吧,思路是这样的:由报错可见起库的实例nomount和控制文件的mount都成功了,但是在open database时报错,就需要在mount和open之间恢复。先将datafile置于offline状态,restore和recover后在online,最后在open database就OK了。 (1) 将数据库处于mount模式 (2) 将datafile 1 (即system01.dbf)置于offline (3) restore和recover(所有的铺垫都是为了这两步) restore datafile 1; recover datafile 1; (4) 将datafile 1 置于online (5) alter database open; alter database datafile 2 offline; 2、 模拟tablespace丢失或损坏进行恢复 (1) backup tablespace apollo_data (2) drop tablespace apollo_data 提示表空间非空,查看下里面的内容,是建的一些测试表。 select * from dba_segments where tablespace_name='APOLLO_DATA' and segment_name=’ AMIS_IC_MEMBER’ ; 没关系那就加上including contents选项删除吧 (3) 停库起到mount模式 (4) 进入sqplus将表空间offline alter tablespace apollo_data offline; (5) 进入rman使用restore和recover恢复表空间 restore tablespace apollo_data; recover tablespace apollo_data; 备注:从(4)、(5)开始的执行都没有成功,因为drop表空间后即使在系统表里 面也不再有改表空间的信息,模拟失败待后续研究! (1) 在rman里面备份表空间apollo_data (2) 模拟表空间里面的对象破坏进行恢复吧 select * from dba_segments where tablespace_name='APOLLO_DATA' and (3) alter tablespace apollo_data offline; (4) restore tablespace apollo_data; (5) recover tablespace apollo_data (6) alter tablespace apollo_data online; (7) apollo_data.已经恢复 备注:其实datafile和tablespace的恢复步骤是一样的。 3、 模拟controlfile丢失或损坏进行恢复 (1) 丢失controlfile (2) startup nomount; (3) restore controlfile from $BACKUP_CONTROLFILE_PATH; 如果开启CONFIGURE CONTROLFILE AUTOBACKUP ON;就可以 restore controlfile from autobackup; (4) alter database mount; (5) recover database; (6) alter database open resetlog; 4、 模拟spfile丢失或损坏进行恢复 (1) startup nomount; (2) set dbid 1330128391; (3) store spfile from autobackup; (4) shutdown immediate; (5) set dbid 1330128391; (6) startup; 5、 模拟整个database恢复 (1) startup nomount; (2) restore controlfile form autobakcup; (3) alter database mount; (4) restore database; (5) recover database; (6) alter database open resetlogs 6、 模拟redolog file恢复(其实下面操作在sqlplus里面,不在rman执行) (1) shutdown immediate; (2) startup mount; (3) recover database until cancel; (4) alter database resetlog;

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值