Chinaunix首页 | 论坛 | 博客
  • 博客访问: 62836
  • 博文数量: 37
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 430
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-26 01:42
文章分类

全部博文(37)

文章存档

2011年(2)

2010年(20)

2009年(15)

我的朋友

分类: Oracle

2010-01-13 23:17:31

恢复过程

   为了测试恢复过程是否是完全恢复,在备份完以后,创建一张表jsjzx,往表里插入两条记录,提交。若恢复后,查看该表里的记录依然存在,说明该恢复是完全恢复。

1)创建表jsjzx,插入两条记录,提交,并对日志文件进行切换。命令如下:

D:\>set oracle_sid=ora2

D:\>sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 1 13 09:25:50 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

SQL> create table jsjzx(name varchar2(6));

表已创建。

SQL> commit;

提交完成。

SQL> insert into jsjzx values('hxy');

已创建 1 行。

SQL> commit;

提交完成。

SQL> insert into jsjzx values('cw');

已创建 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

当对日志文件进行切换后,发现在D:\oracle\product\10.2.0\flash_recovery_area\ORA2\

ARCHIVELOG\2010_01_13目录下多了两个归档日志文件01_MF_1_3_5NT8JRDP_.ARC

01_MF_1_4_5NT8MXOZ_.ARC

2)关闭数据库ora2,并且利用oracle自带的数据库配置助手删除该数据库,模拟宕机的情况。

SQL> shutdown abort;

ORACLE 例程已经关闭。

3)创建服务ora2

D:\>oradim -new -sid ora2

实例已创建。

发现服务里多了一个OracleServiceora2服务。并且已经启动。

4)创建密码文件。该密码文件只保存SYS用户的密码。

D:\>orapwd file=d:\oracle\product\10.2.0\db_1\database\pwdora2.ora password=oracle;

5)创建adump,bdump,cdump,dpdump,pfile,udump文件。

D:\oracle\product\10.2.0\admin\ora2目录下,手动创建adump,bdump,cdump,dpdump,pfileudump 文件。

6)连接到该sid,启动RMAN,连接到目标数据库,并且启动数据库到mount状态下。

D:\>set oracle_sid=ora2

D:\>rman target /

恢复管理器: Release 10.2.0.1.0 - Production on 星期三 1 13 09:38:49 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

已连接到目标数据库 (未启动)

RMAN> set dbid 1599628932

正在执行命令: SET DBID

RMAN> startup nomount;

Oracle 实例已启动

系统全局区域总计     612368384 字节

Fixed Size                     1250452 字节

Variable Size                176163692 字节

Database Buffers             432013312 字节

Redo Buffers                   2940928 字节

7)恢复参数文件。

将备份时保存在d:\ora\bak\spfile目录下的初始化参数文件initjpwl.ora复制到d:\oracle\product\10.2.0\db_1\database目录下,将参数文件spfilejpwl.ora复制到d:\oracle\product\10.2.0\db_1\dbs目录下。

8)修复控制文件,命令如下:

iRMAN> restore controlfile to 'D:\oracle\product\10.2.0\oradata\ora2\CONTROL01.CTL'

from 'd:\autobackup\cf\C-1599628932-20100113-01';

启动 restore 13-1 -10

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在复原控制文件

通道 ORA_DISK_1: 恢复完成, 用时: 00:00:01

完成 restore 13-1 -10

(ii) RMAN> restore controlfile to 'D:\oracle\product\10.2.0\oradata\ora2\CONTROL02.CTL'

from 'd:\autobackup\cf\C-1599628932-20100113-01';

启动 restore 13-1 -10

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在复原控制文件

通道 ORA_DISK_1: 恢复完成, 用时: 00:00:01

完成 restore 13-1 -10

(iii) RMAN> restore controlfile to 'D:\oracle\product\10.2.0\oradata\ora2\CONTROL03.CTL'

from 'd:\autobackup\cf\C-1599628932-20100113-01';

启动 restore 13-1 -10

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在复原控制文件

通道 ORA_DISK_1: 恢复完成, 用时: 00:00:01

完成 restore 13-1 -10

这时,发现在D:\oracle\product\10.2.0\oradata\ora2目录下已经存在三个控制文件CONTROL01.CTLCONTROL02.CTLCONTROL03.CTL

9)修复整个数据库,命令如下:

RMAN> alter database mount;

数据库已装载

释放的通道: ORA_DISK_1

RMAN> restore database;

启动 restore 13-1 -10

启动 implicit crosscheck backup 13-1 -10

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=156 devtype=DISK

已交叉检验的 6 对象

完成 implicit crosscheck backup 13-1 -10

 

启动 implicit crosscheck copy 13-1 -10

使用通道 ORA_DISK_1

已交叉检验的 1 对象

完成 implicit crosscheck copy 13-1 -10

 

搜索恢复区域中的所有文件

正在编制文件目录...

目录编制完毕

 

已列入目录的文件的列表

=======================

文件名: D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORA2\ARCHIVELOG\

2010_01_13\O1_MF_1_3_5NT8JRDP_.ARC

文件名: D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORA2\ARCHIVELOG\

2010_01_13\O1_MF_1_4_5NT8MX0Z_.ARC

 

使用通道 ORA_DISK_1

 

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

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

正将数据文件00001恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA2\

SYSTEM01.DBF

正将数据文件00002恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA2\

UNDOTBS01.DBF

正将数据文件00003恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA2\

SYSAUX01.DBF

正将数据文件00004恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA2\USERS01.DBF

通道 ORA_DISK_1: 正在读取备份段 D:\ORA\BAK\ORA2_20100113_5

通道 ORA_DISK_1: 已恢复备份段 1

段句柄 = D:\ORA\BAK\ORA2_20100113_5 标记 = TAG20100113T092244

通道 ORA_DISK_1: 恢复完成, 用时: 00:00:15

完成 restore 13-1 -10

此时,发现D:\oracle\product\10.2.0\oradata\ora2目录下已经存在4个数据文件,分别是SYSTEM01.DBFUNDOTBS01.DBFSYSAUX01.DBFUSERS01.DBF

10)恢复整个数据库,命令如下:

RMAN> recover database noredo;

启动 recover 13-1 -10

使用通道 ORA_DISK_1

完成 recover 13-1 -10

此时,发现D:\oracle\product\10.2.0\oradata\ora2目录下多了一个临时数据文件TEMP01.DBF

11)打开数据库,命令如下:

RMAN> alter database open resetlogs;

数据库已打开

此时,发现D:\oracle\product\10.2.0\oradata\ora2目录下多了三个重做日志文件REDO01.LOGREDO02.LOGREDO03.LOG

    到此,整个数据库恢复完成。

12)验证恢复的数据库是否是完全恢复,即验证数据库ora2中,是否存在表记录。命令如下:

D:\>set oracle_sid=ora2

D:\>sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 1 13 10:09:00 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

SQL> select * from jsjzx;

NAME

------

hxy

cw

由以上可知,备份后插入的两条表记录依然存在,说明恢复数据库成功!

阅读(414) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~