文档章节

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

JAVA枪手
 JAVA枪手
发布于 2017/09/06 11:07
字数 1973
阅读 22
收藏 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(+)

 

本文转载自:http://www.5ienet.com/note/html/rman/rman-bakcup-recover-script.shtml

共有 人打赏支持
JAVA枪手
粉丝 7
博文 95
码字总数 15221
作品 0
东城
高级程序员
RMAN简明教程之七——恢复目录与恢复目录的使用

Oracle版本9因为控制文件的自动备份,可以很大程度成不需要使用恢复目录,但是使用恢复目录的也有如下好处 ·有些命令只被恢复目录支持(对于9i来说,也就是专门操作恢复目录的语句而已) ·...

晨曦之光
2012/03/09
0
0
catalog恢复目录介绍和配置

2.1、nocatalog介绍 nocatalog方式 就是用control file作为catalog,每一次备份都要往控制文件里面写好多备份信息,控制文件里面会有越来越多的备份信息。因此,当使用rman nocatalog方式备份...

PengChonggui
06/28
0
0
rman report list crosscheck delete -rman常用命令

一、REPORT 1、报告目标数据库的物理结构 RMAN>REPORT SCHEMA 2、报告需要备份的数据文件 在执行备份之前,常常需要取得需要备份的数据文件信息,通过执行REPORT NEED BACKUP命令,可以列出需...

zhailibao
2014/02/28
0
0
oracle 12c pdb 恢复

备份数据库 [oracle@12cr2 ~]$ rman target / RMAN> backup database; RMAN> list backup summary; 数据库open状态,系统表空间损坏 -----故障模拟 [oracle@12cr2 ~]$ sqlplus / as sysdba ......

lych528
08/25
0
0
Oracle9i rman备份恢复总结

Recovery Manager(RMAN)是一种用于备份(backup)、还原(restore)和恢复(recover)数据库的Oracle 工.RMAN只能用于ORACLE8或更高的版本中。它能够备份整个数据库或数据库部件,如表空间、数据...

♂.Cent
2010/12/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

原型模式

1、原型模式-定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 克隆(浅度克隆->拷贝值类型或者引用,深度克隆->创建新的对象,开辟新的内存) 例如客户端知道抽象Pro...

阿元
今天
52
0
awk命令扩展使用操作

awk 中使用外部shell变量 示例1 [root@centos01 t1022]# A=888[root@centos01 t1022]# echo "" | awk -v GET_A=$A '{print GET_A}'888[root@centos01 t1022]# echo "aaaaaaaaaaaaa" | aw......

野雪球
今天
47
0
深入解析MySQL视图VIEW

Q:什么是视图?视图是干什么用的? A:视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。   通过视图,可以展现基表的部分数据;...

IT--小哥
今天
50
0
虚拟机学习之二:垃圾收集器和内存分配策略

1.对象是否可回收 1.1引用计数算法 引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时候计数器值为0的对象就是不可能...

贾峰uk
今天
50
0
smart-doc功能使用介绍

smart-doc从8月份底开始开源发布到目前为止已经迭代了几个版本。在这里非常感谢那些敢于用smart-doc去做尝试并积极提出建议的社区用户。因此决定在本博客中重要说明下smart-doc的功能,包括使...

上官胡闹
昨天
50
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部