文档章节

RMAN学习过程之七,演练RMAN恢复

JAVA枪手
 JAVA枪手
发布于 2017/09/06 11:07
字数 1973
阅读 21
收藏 0
点赞 0
评论 0

      首先 注意:rman备份的时候并不会备份临时表空间的数据文件(想想也是,反正是临时的,备它干嘛),所以完全恢复之后, 如果临时表空间的数据文件也丢失, 需要手工重新创建临时表空间的数据文件。据消息灵通人士称,10G之后的版本会在恢复过程中自动创建临时表空间的数据文件,手头没有环境(11g都出了,俺还在学9i,落后啊。),未经尝试,有心的朋友如果落实该消息,也不妨通知俺一下:)

  其次需要了解:Oracle数据库的恢复实际上包含了两个概念:数据库修复(RESTORE)与数据库恢复(RECOVER):

  数据库修复(RESTORE): 是指利用备份的数据库文件来替换已经损坏的数据库文件或者将其恢复到一个新的位置。RMAN在进行修复操作时,会利用恢复目录(没有建立恢复目录的话就使用目标数据库的控制文件)来获取备份信息,并从中选择最合适的备份进行修复操作。选择备份时有两个原则(1、选择距离恢复目录时刻最近;2、优先选择镜像复制,其次才是备份集)

  数据库恢复(RECOVER): 是指利用重做日志或增量备份来重建丢失的数据。

  再然后需要明白:我们在对目标数据库做任何形式的修复或者恢复之前,目标数据库必须处于加载状态,恢复指定数据文件时,也可以在打开状态下恢复(什么,控制文件丢了,进不了加载状态?黑黑,麻烦了,不过也并非完全无可救药,接着往下看吧)。

一、对数据库进行完全介质恢复

  过程有三个步骤:

  1、启动数据库到加载状态

RMAN> SHUTDOWN IMMEDIATE;

RMAN> STARTUP MOUNT;

  2、执行恢复操作(记的我们刚说过的,恢复分两步,有先有后的。)

RMAN> RESTORE DATABASE;

RMAN> RECOVER DATABASE DELETE ARCHIVELOGS SKIP TABLESPACE TEMP;

  注意:DELETE ARCHIVELOGS和SKIP TABLESPACE两个参数是可选择的,作用如下:

  DELETE ARCHIVELOGS :表示RMAN将在完成恢复过程后自动删除那些在恢复过程中产生的归档日志文件,RMAN并不会删除restore命令之前的归档文件。

  SKIP TABLESPACE :跳过指定表空间,比如临时表,当然临时表空间即使你不跳过它也不会恢复的。

  3、打开数据库

RMAN> ALTER DATABASE OPEN;

  此处需要注意的一点是,如果你的数据库并非处于归档模式,那么必须使用ALTER DATABASE OPEN RESETLOGS来打开数据库,因为RMAN会认为在非归档模式下是一个不一致的备份,执行resetlogs之后,oracle将会把scn重新置为0。

二、恢复表空间

  同样也可以分成三个步骤:

  1、启动数据库到加载状态

RMAN> SHUTDOWN IMMEDIATE;

RMAN> STARTUP MOUNT;

  2 、进行恢复操作,在恢复之前,如果需要被恢复的表空间未处于脱机状态,需要通过alter tablespace ... Offline语句将其置为脱机:

RMAN> SQL ¨ALTER TABLESPACE jweb OFFLINE IMMEDIATE¨;

RMAN> RESTORE TABLESPACE jweb;

RMAN> RECOVER TABLESPACE jweb;

RMAN> SQL ¨ALTER TABLESPACE jweb ONLINE¨;

  3、打开数据库

RMAN> ALTER DATABASE OPEN;

三、恢复数据文件

  事实上,恢复表空间实际就是恢复其所对应的数据文件(一个表空间可能对应多个数据文件),所以步骤与上相似。

  1、启动数据库到加载状态

RMAN> SHUTDOWN IMMEDIATE;

RMAN> STARTUP MOUNT;

  2 、进行恢复操作,在恢复之前,如果需要被恢复的表空间未处于脱机状态,需要通过alter tablespace ... Offline语句将其置为脱机,操作数据文件时可以直接指定数据文件,也可以以数据文件序号代替:

RMAN>SQL ¨ALTER DATABASE DATAFILE 10 OFFLINE;

RMAN> RESTORE DATAFILE 10;

RMAN> RECOVER DATAFILE 10;

RMAN>SQL ¨ ALTER DATABASE DATAFILE 10 ONLINE;

  3、打开数据库

RMAN> ALTER DATABASE OPEN;

四、示例:归档模式下,假设某数据文件丢失,恢复该数据文件。

  我们来模拟一个过程,首先我们创建一份数据库的完全备份,然后在数据库中进行若干操作,之后删除该数据文件来模拟该文件意外丢失,最后我们通过rman来恢复该数据文件。

  还记的我们实战备份里写的备份脚本吗,ok,我们先执行该脚本,进行数据库备份。

  • E:\oracleScript\backup> database_backup_jssweb.bat

  千万别忘了执行完之后看一下输出的log,一定要确保你所有的操作都是正确执行的。

  Ok, 下面连接数据库模拟一些操作。

C:\Documents and Settings\Administrator>sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on  星期三 7月 18 10:17:44 2007

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

SQL> conn jss/jss

已连接。

SQL>  create table tmp3(col varchar2(50));

###### 创建一个临时表并插入一些数据

表已创建。

SQL> insert into tmp3 values (¨test1¨);

已创建 1 行。

SQL> insert into tmp3 values (¨test2¨);

已创建 1 行。

SQL> insert into tmp3 values (¨test3¨);

已创建 1 行。

SQL> select *from tmp3;

COL

--------------------------------------------------

test1

test2

test3

SQL> commit;

提交完成。

SQL>  conn / as sysdba     #### 以dba用户连接并关闭数据库

已连接。

SQL> shutdown immediate;

数据库已经关闭。

已经卸载数据库。

ORACLE  例程已经关闭。

SQL>  host del F:\OraHome1\oradata\jssweb\jweb.ora

###### 手动删除数据文件

SQL>  startup

ORACLE  例程已经启动。

Total System Global Area  143727516 bytes

Fixed Size                   453532 bytes

Variable Size             109051904 bytes

Database Buffers           33554432 bytes

Redo Buffers                 667648 bytes

数据库装载完毕。

ORA-01157:  无法标识/锁定数据文件 10 - 请参阅 DBWR 跟踪文件

ORA-01110:  数据文件 10: ¨F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA¨

####### 看看,启动报错了吧

SQL>  select instance_name,status from v$instance;

####### 看看当前数据库状态,应该是处于mount

INSTANCE_NAME    STATUS

---------------- ------------

jssweb           MOUNTED

OK, 下面该RMAN出马了。

SQL> exit

C:\Documents and Settings\Administrator>set oracle_sid=jssweb

C:\Documents and Settings\Administrator>rman target /

恢复管理器: 版本9.2.0.1.0 - Production

Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.

连接到目标数据库: JSSWEB (DBID=3391142503)

RMAN>  restore datafile ¨F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA¨;

#### 首先修复数据文件。是不是有疑问,为什么不像上面第三节讲的那样先将该数据文件置为脱机,笨啊你,数据库都没打开,脱什么机啊,整个数据库现在都是脱机的。

启动 restore 于 18-7月 -07

正在使用目标数据库控制文件替代恢复目录

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=11 devtype=DISK

通道 ORA_DISK_1: 正在开始恢复数据文件备份集

通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件

正将数据文件00010恢复到F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA

通道 ORA_DISK_1: 已恢复备份段 1

段 handle=D:\BACKUP\1AIN4JU5_1_1 tag=TAG20070718T092837 params=NULL

通道 ORA_DISK_1: 恢复完成

完成 restore 于 18-7月 -07

RMAN>  recover datafile ¨F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA¨;

######## 恢复数据文件

启动 recover 于 18-7月 -07

使用通道 ORA_DISK_1

正在开始介质的恢复

完成介质的恢复

完成 recover 于 18-7月 -07

RMAN>  alter database open;    ######## 看起来很顺利,打开数据库看看

数据库已打开

RMAN> host ;

Microsoft Windows [ 版本 5.2.3790]

(C)  版权所有 1985-2003 Microsoft Corp.

C:\Documents and Settings\Administrator> sqlplus jss/jss   #### 连到该用户

SQL*Plus: Release 9.2.0.1.0 - Production on  星期三 7月 18 10:33:50 2007

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

连接到:

Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

With the Partitioning, OLAP and Oracle Data Mining options

JServer Release 9.2.0.1.0 - Production

SQL>  select *from tmp3;      ###### 查询我们备份后创建的表

COL

--------------------------------------------------

test1

test2

test3

  yeah, 成功恢复,没有数据丢失。

  附个SQL:用来查询数据文件,临时文件与表空间对应及数据文件序号:

select  ts.tablespace_name, df.file_name, df.file_id, tf.file_name 
   from  dba_tablespaces ts, dba_data_files df, dba_temp_files tf 
  where  ts.tablespace_name = df.tablespace_name(+) 
    and  ts.tablespace_name = tf.tablespace_name(+)

 

© 著作权归作者所有

共有 人打赏支持
JAVA枪手
粉丝 7
博文 84
码字总数 15221
作品 0
东城
高级程序员
Oracle备份和恢复(RMAN篇)

前言:欢迎加QQ交流1445696451微博地址http://blog.51cto.com/13434336 ~ ~ ~ ~ ~ ~ ~分割 ~ ~ ~ ~ ~ ~ 数据库备份与恢复是数据库管理员必须掌握的。没有任何系统能免遭硬盘物理损坏、粗心用...

张晨chat ⋅ 06/03 ⋅ 0

Oracle 11g R2 Rman、数据泵、闪回备份与恢复

Oracle 11g R2 Rman备份 备份与恢复的定义及分类 备份的定义及分类: 从物理与逻辑的角度来分类: 从物理与逻辑的,备份可以分为物理备份和逻辑备份。 物理备份:对数据库操作系统的物理文件...

Love小敏 ⋅ 06/14 ⋅ 0

ORACLE不完全恢复的几种情况

ORACLE不完全恢复的几种情况 1、介绍 RMAN不完全恢复的三个标准模式:基于time、基于scn和基于sequence,与手工不完全恢复相比原理类似,语法稍有不同: 2、不完全恢复的几种情况 ### 1)不完...

持续高温 ⋅ 04/22 ⋅ 0

通过RMAN创建dataguard(原创)

环境介绍:数据库版本10G,两个节点分别是rednum1(192.168.212.128)和rednum2(192.168.212.130) 主库主机名称是rednum1,从库主机名称是rednum2 配置步骤如下: 1、在主库和从库配置tnsnames如...

denti ⋅ 06/04 ⋅ 0

RMAN 中delete exipired 和 delete obsolete 的区别

elete expired If you run CROSSCHECK, and if RMAN cannot locate the files, then it updates their records in the RMAN repository to EXPIRED status. You can then use the DELETE EXP......

1321385590 ⋅ 04/19 ⋅ 0

shell判断oracle主备数据库备份脚本

1. 脚本如下 说明:按照客户要求,在主备数据库上同时部署脚本,自动判断是否是主库,如果是主库则进行备份,备库不需要备份,记录日志为备份库即可,以下脚本仅供参考,可以进一步优化。 脚...

roidba ⋅ 05/24 ⋅ 0

ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案

(一)NOLOGGING操作引起的坏块(ORA-01578和ORA-26040)简介 如果只是错误ORA-01578,而没有伴随ORA-26040,那么这个坏块是由其它的原因引起的坏块,可以尝试使用RMAN的BMR(Block Media R...

lhrbest ⋅ 04/16 ⋅ 0

将过期或未注册到控制文件 RMAN 激活或注册到控制文件

RMAN备份集显示已过期 重新注册 CATALOG BACKUPPIECE '/backup/oraclebk/archivelog/archivelog.20180516.dft30rbg11.rman'; RMAN显示备份集为可用状态 注:CATALOG BACKUPPIECE 命令还可以往......

1321385590 ⋅ 05/18 ⋅ 0

举一反三:跨平台版本迁移之 XTTS 方案操作指南

跨平台跨版本迁移方案对比 针对跨平台跨版本的迁移,主要有以下三种方式:数据泵、GoldenGate / DSG、XTTS,针对停机时间、复杂度、实施准备时间,做了以下列表比对: 客户的需求都是最短停机...

技术小能手 ⋅ 04/23 ⋅ 0

非常规方法,轻松应对Oracle数据库危急异常

相信很多ORACLE DBA在职业生涯中或多或少都遇到过这样的情况:数据文件被误删了,存储坏了无法识别数据文件,最糟糕的是,竟然rman备份也是坏的…… 遇到问题凌乱慌张是没用的,而贸然动手也...

唐小丹、周凯 ⋅ 2016/04/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Docker Swarm的前世今生

概述 在我的《Docker Swarm集群初探》一文中,我们实际体验了Docker Swarm容器集群技术的魅力,与《Kubernetes实践录》一文中提到的Kubernetes集群技术相比,Docker Swarm没有Kubernetes显得...

CodeSheep ⋅ 今天 ⋅ 0

骰子游戏代码开源地址

因为阿里云现在服务器已经停用了,所以上面的配置已经失效。 服务端开源地址:https://gitee.com/goalya/chat4.git 客户端开源地址:https://gitee.com/goalya/client4.git 具体运行界面请参考...

算法之名 ⋅ 今天 ⋅ 0

设计模式--装饰者模式

装饰者模式 定义 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。 通用类图 意图 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比...

gaob2001 ⋅ 今天 ⋅ 0

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部