分类: Oracle
2010-01-13 23:17:31
三 恢复过程
为了测试恢复过程是否是完全恢复,在备份完以后,创建一张表jsjzx,往表里插入两条记录,提交。若恢复后,查看该表里的记录依然存在,说明该恢复是完全恢复。
(1)创建表jsjzx,插入两条记录,提交,并对日志文件进行切换。命令如下:
D:\>set oracle_sid=ora2
D:\>sqlplus "/as sysdba"
SQL*Plus: Release
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database
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\
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\
(5)创建adump,bdump,cdump,dpdump,pfile,udump文件。
在D:\oracle\product\
(6)连接到该sid,启动RMAN,连接到目标数据库,并且启动数据库到mount状态下。
D:\>set oracle_sid=ora2
D:\>rman target /
恢复管理器: Release
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\
(8)修复控制文件,命令如下:
(i)RMAN> restore controlfile to 'D:\oracle\product\
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\
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\
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\
(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\
2010_01_13\O1_MF_1_3_5NT8JRDP_.ARC
文件名: D:\ORACLE\PRODUCT\
2010_01_13\O1_MF_1_4_5NT8MX0Z_.ARC
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:\ORACLE\PRODUCT\
SYSTEM01.DBF
正将数据文件00002恢复到D:\ORACLE\PRODUCT\
UNDOTBS01.DBF
正将数据文件00003恢复到D:\ORACLE\PRODUCT\
SYSAUX01.DBF
正将数据文件00004恢复到D:\ORACLE\PRODUCT\
通道 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)恢复整个数据库,命令如下:
RMAN> recover database noredo;
启动 recover 于 13-1月 -10
使用通道 ORA_DISK_1
完成 recover 于 13-1月 -10
此时,发现D:\oracle\product\
(11)打开数据库,命令如下:
RMAN> alter database open resetlogs;
数据库已打开
此时,发现D:\oracle\product\
到此,整个数据库恢复完成。
(12)验证恢复的数据库是否是完全恢复,即验证数据库ora2中,是否存在表记录。命令如下:
D:\>set oracle_sid=ora2
D:\>sqlplus "/as sysdba"
SQL*Plus: Release
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database
With the Partitioning, OLAP and Data Mining options
SQL> select * from jsjzx;
NAME
------
hxy
cw
由以上可知,备份后插入的两条表记录依然存在,说明恢复数据库成功!