• 博客访问: 2859456
  • 博文数量: 335
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-30 13:07
个人简介

暂无介绍

文章分类

全部博文(335)

文章存档

2016年(1)

2012年(5)

2011年(38)

2010年(48)

2009年(70)

2008年(173)

分类: Linux操作系统

2008-06-04 08:25:14

/* 2008/06/04
*环境:Windows XP +Oracle10.2.0.1
*循序渐进oracle——数据库管理、优化与备份恢复
*第7章:备份与恢复之RMAN的简单备份与恢复
*/
7.7.3 RMAN的备份与恢复(丢失所有的controlfile,datafile,redofile)

1、启动控制文件自动备份
>rman target/
>show all;
>RMAN> configure controlfile autobackup on;

旧的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
已成功存储新的 RMAN 配置参数
RMAN> backup database tag=full20080604 plus archivelog;

2、模拟介质损坏
RMAN> shutdown immediate
删除$oracle_HOME\oradata\sid\下所有的文件,即删除controlfile,datafile,redofile

3、启动报错进行恢复
C:\>sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 6月 4 08:07:45 2008

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

已连接到空闲例程。

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  272629760 bytes
Fixed Size                  1248476 bytes
Variable Size             100664100 bytes
Database Buffers          163577856 bytes
Redo Buffers                7139328 bytes
ORA-00205: ?????????, ??????, ???????


C:\>rman target/

恢复管理器: Release 10.2.0.1.0 - Production on 星期三 6月 4 08:08:21 2008

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

连接到目标数据库: risenet (未装载)


先还原控制文件:
RMAN> restore controlfile to 'g:\control01.ctl' from autobackup;

启动 restore 于 04-6月 -08
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK

恢复区域目标: G:\oracle\product\10.2.0/flash_recovery_area
用于搜索的数据库名 (或数据库的唯一名称): RISENET
通道 ORA_DISK_1: 在恢复区域中找到自动备份
通道 ORA_DISK_1: 已找到的自动备份: G:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\
RISENET\AUTOBACKUP\2008_06_04\O1_MF_N_656496109_44CPVGG6_.BKP
通道 ORA_DISK_1: 从自动备份复原控制文件已完成
完成 restore 于 04-6月 -08


然后把改文件拷贝三份到$oracle_HOME\oradata\sid\下,分别为

control01.ctl,control02.ctl,control03.ctl

把数据库到mount状态下
RMAN> sql 'alter database mount';

sql 语句: alter database mount
释放的通道: ORA_DISK_1


然后还原所有的数据
RMAN> restore database;

启动 restore 于 04-6月 -08
启动 implicit crosscheck backup 于 04-6月 -08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
已交叉检验的 12 对象
完成 implicit crosscheck backup 于 04-6月 -08

启动 implicit crosscheck copy 于 04-6月 -08
使用通道 ORA_DISK_1
完成 implicit crosscheck copy 于 04-6月 -08

搜索恢复区域中的所有文件
正在编制文件目录...
目录编制完毕

已列入目录的文件的列表
=======================
文件名: G:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\RISENET\AUTOBACKUP\2008_06_
04\O1_MF_N_656496109_44CPVGG6_.BKP

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\SYSTEM01.DBF
正将数据文件00002恢复到G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\UNDOTBS01.DBF
正将数据文件00003恢复到G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\SYSAUX01.DBF
正将数据文件00004恢复到G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\USERS01.DBF
正将数据文件00005恢复到G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\RISE.DBF
正将数据文件00006恢复到G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\MZL.DBF
通道 ORA_DISK_1: 正在读取备份段 G:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\RIS
ENET\BACKUPSET\2008_06_04\O1_MF_NNNDF_FULL20080604_44CPRQHO_.BKP
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = G:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\RISENET\BACKUPSET\2008_06_
04\O1_MF_NNNDF_FULL20080604_44CPRQHO_.BKP 标记 = FULL20080604
通道 ORA_DISK_1: 恢复完成, 用时: 00:01:05
完成 restore 于 04-6月 -08

 

数据文件已经还原,进行恢复
RMAN> recover database;

启动 recover 于 04-6月 -08
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 6 已作为文件 G:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\RI
SENET\ARCHIVELOG\2008_06_04\O1_MF_1_6_44CPV4P0_.ARC 存在于磁盘上
存档日志文件名 =G:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\RISENET\ARCHIVELOG\
2008_06_04\O1_MF_1_6_44CPV4P0_.ARC 线程 =1 序列 =6
无法找到存档日志
存档日志线程 =1 序列=7

 

上面只恢复到归档日志6,日志7是联机重做日志,已经丢失。所以联机重做日志文件文件没有了,丢失了联

机重做日志的数据。
SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     5
下一个存档日志序列   7
当前日志序列           7


到目前为止,恢复了controlfile,datafile,还差redo文件
RMAN> sql 'alter database open resetlogs';

sql 语句: alter database open resetlogs


用“alter database open resetlogs”语句则重新生成redofile,日志序列重新复位。
SQL> select instance_name,status from v$instance;

INSTANCE_NAME    STATUS
---------------- ------------------------
risenet          OPEN

SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     0
下一个存档日志序列   1
当前日志序列           1

 

用"alter database open resetlogs"最好重新进行备份.
这样简单恢复了一次不完全恢复。

阅读(1698) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册