免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 975 | 回复: 0
打印 上一主题 下一主题

拥有RMAN全备(缺少后增文件),丢失全部数据文件,控制文件的恢复 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-22 14:25 |只看该作者 |倒序浏览
[color="#ff0000"]1.做一个RMAN的全备

E:\oracle\rman_scripts>rman catalog
[email=rman/rman@rman]rman/rman@rman[/email]
target
[email=sys/sys@orasjh]sys/sys@orasjh[/email]
恢复管理器: Release 10.2.0.1.0 - Production on 星期二 3月 10 14:52:50 2009
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
连接到目标数据库: ORASJH (DBID=2615173674)
连接到恢复目录数据库
RMAN> @full_back_db.sql
RMAN> # start backup database
2>
3> run {
4> allocate channel c1 type disk;
5> backup format 'E:\oracle\rman_backup\full%u_%s_%p' database
6> plus archivelog format 'E:\oracle\rman_backup\archive_%d_%T_%s' delete all in
put;
7> release channel c1;
8> }
分配的通道: c1
通道 c1: sid=143 devtype=DISK
启动 backup 于 10-3月 -09
当前日志已存档
通道 c1: 正在启动存档日志备份集
通道 c1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =235 记录 ID=13 时间戳=681062941
输入存档日志线程 =1 序列 =236 记录 ID=11 时间戳=681058773
输入存档日志线程 =1 序列 =237 记录 ID=12 时间戳=681062675
输入存档日志线程 =1 序列 =238 记录 ID=14 时间戳=681142722
输入存档日志线程 =1 序列 =239 记录 ID=15 时间戳=681144798
通道 c1: 正在启动段 1 于 10-3月 -09
通道 c1: 已完成段 1 于 10-3月 -09
段句柄=E:\ORACLE\RMAN_BACKUP\ARCHIVE_ORASJH_20090310_12 标记=TAG20090310T145320
注释=NONE
通道 c1: 备份集已完成, 经过时间:00:00:02
通道 c1: 正在删除存档日志
存档日志文件名 =E:\ORACLE\ORASJH\ARCHIVE\ARC00235_0679223338.001 记录 ID=13 时间
戳 =681062941
存档日志文件名 =E:\ORACLE\ORASJH\ARCHIVE\ARC00236_0679223338.001 记录 ID=11 时间
戳 =681058773
存档日志文件名 =E:\ORACLE\ORASJH\ARCHIVE\ARC00237_0679223338.001 记录 ID=12 时间
戳 =681062675
存档日志文件名 =E:\ORACLE\ORASJH\ARCHIVE\ARC00238_0679223338.001 记录 ID=14 时间
戳 =681142722
存档日志文件名 =E:\ORACLE\ORASJH\ARCHIVE\ARC00239_0679223338.001 记录 ID=15 时间
戳 =681144798
完成 backup 于 10-3月 -09
启动 backup 于 10-3月 -09
通道 c1: 启动全部数据文件备份集
通道 c1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=E:\ORACLE\ORASJH\SYSTEM01.DBF
输入数据文件 fno=00002 name=E:\ORACLE\ORASJH\UNDOTBS01.DBF
输入数据文件 fno=00003 name=E:\ORACLE\ORASJH\SYSAUX01.DBF
输入数据文件 fno=00004 name=E:\ORACLE\ORASJH\USERS01.DBF
通道 c1: 正在启动段 1 于 10-3月 -09
通道 c1: 已完成段 1 于 10-3月 -09
段句柄=E:\ORACLE\RMAN_BACKUP\FULL0DK9ISF4_13_1 标记=TAG20090310T145324 注释=NONE
通道 c1: 备份集已完成, 经过时间:00:00:45
完成 backup 于 10-3月 -09
启动 backup 于 10-3月 -09
当前日志已存档
通道 c1: 正在启动存档日志备份集
通道 c1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =240 记录 ID=16 时间戳=681144850
通道 c1: 正在启动段 1 于 10-3月 -09
通道 c1: 已完成段 1 于 10-3月 -09
段句柄=E:\ORACLE\RMAN_BACKUP\ARCHIVE_ORASJH_20090310_14 标记=TAG20090310T145412
注释=NONE
通道 c1: 备份集已完成, 经过时间:00:00:02
通道 c1: 正在删除存档日志
存档日志文件名 =E:\ORACLE\ORASJH\ARCHIVE\ARC00240_0679223338.001 记录 ID=16 时间
戳 =681144850
完成 backup 于 10-3月 -09
启动 Control File and SPFILE Autobackup 于 10-3月 -09
段 handle=C:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\C-2615173674-20090310-00 commen
t=NONE
完成 Control File and SPFILE Autobackup 于 10-3月 -09
释放的通道: c1
RMAN>
RMAN> # end
2> **文件结尾**
RMAN>

[color="#ff0000"]2.创建一个新的数据文件。

SQL> select name from v$datafile;
NAME
-----------------------------------------
E:\ORACLE\ORASJH\SYSTEM01.DBF
E:\ORACLE\ORASJH\UNDOTBS01.DBF
E:\ORACLE\ORASJH\SYSAUX01.DBF
E:\ORACLE\ORASJH\USERS01.DBF
SQL> create tablespace sjh datafile 'E:\ORACLE\ORASJH\sjh.dbf' size 2m;
表空间已创建。
SQL> create table test tablespace sjh as select * from dba_users;
表已创建。
SQL> select count(*) from dba_users;
  COUNT(*)
----------
        11
SQL> commit;
提交完成。
SQL> alter system switch logfile;
系统已更改。

[color="#ff0000"]3.模拟所有控制文件,数据文件的丢失。

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
手工删除所有的控制文件,数据文件。

SQL> startup
ORACLE 例程已经启动。
Total System Global Area  167772160 bytes
Fixed Size                  1247876 bytes
Variable Size              71304572 bytes
Database Buffers           88080384 bytes
Redo Buffers                7139328 bytes
ORA-00205: ?????????, ??????, ???????  [color="#ff0000"]--删除了控制文件,数据库无法mount。

[color="#ff0000"]4.恢复
[color="#ff0000"]4.1恢复控制文件
E:\oracle\rman_scripts>rman catalog
[email=rman/rman@rman]rman/rman@rman[/email]
target
[email=sys/sys@orasjh]sys/sys@orasjh[/email]
恢复管理器: Release 10.2.0.1.0 - Production on 星期二 3月 10 15:32:46 2009
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
连接到目标数据库: orasjh (未装载)
连接到恢复目录数据库
RMAN> restore controlfile to 'e:\contrl.bak' from autobackup;
启动 restore 于 10-3月 -09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20090310
通道 ORA_DISK_1: 已找到的自动备份: [color="#ff0000"]c-2615173674-20090310-01
通道 ORA_DISK_1: 从自动备份复原控制文件已完成
完成 restore 于 10-3月 -09

--因为RMAN的自动备份控制文件的选项已经打开,所以在创建数据文件的时候,控制文件自动备份了,这个备份不是全备时候的控制文件备份。为了模拟特定控制文件(没记录数据文件的创建),我们指定从全备中的备份集中恢复控制文件。

RMAN>  restore controlfile to 'e:\contrl.bak' from 'C:\ORACLE\PRODUCT\10.2.0\DB_
1\DATABASE\C-2615173674-20090310-00';
启动 restore 于 10-3月 -09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
通道 ORA_DISK_1: 正在复原控制文件
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:02
完成 restore 于 10-3月 -09

--将e:\contrl.bak copy到控制文件的所在目录并改名成:control1.ctl,control2.ctl,control3.ctl。

[color="#ff0000"]4.2恢复备份期间的归档日志
RMAN> restore archivelog sequence 240
2> ;
启动 restore 于 10-3月 -09
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动到默认目标的存档日志恢复
通道 ORA_DISK_1: 正在恢复存档日志
存档日志线程 =1 序列=240
通道 ORA_DISK_1: 正在读取备份段 E:\ORACLE\RMAN_BACKUP\ARCHIVE_ORASJH_20090310_14
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = E:\ORACLE\RMAN_BACKUP\ARCHIVE_ORASJH_20090310_14 标记 = TAG20090310T145
412
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:01
完成 restore 于 10-3月 -09

SQL> alter database mount;    --因为恢复了控制文件,所以数据库能mount。
数据库已更改。

[color="#ff0000"]4.3还原数据文件
RMAN> restore database;
启动 restore 于 10-3月 -09
释放的通道: ORA_DISK_1
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到E:\ORACLE\ORASJH\SYSTEM01.DBF
正将数据文件00002恢复到E:\ORACLE\ORASJH\UNDOTBS01.DBF
正将数据文件00003恢复到E:\ORACLE\ORASJH\SYSAUX01.DBF
正将数据文件00004恢复到E:\ORACLE\ORASJH\USERS01.DBF
通道 ORA_DISK_1: 正在读取备份段 E:\ORACLE\RMAN_BACKUP\FULL0DK9ISF4_13_1
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = E:\ORACLE\RMAN_BACKUP\FULL0DK9ISF4_13_1 标记 = TAG20090310T145324
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:45
完成 restore 于 10-3月 -09

[color="#ff0000"]4.4用备份控制文件恢复数据库
SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 403337 (在 03/10/2009 14:53:24 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:\ORACLE\ORASJH\ARCHIVE\ARC00240_0679223338.001
ORA-00280: 更改 403337 (用于线程 1) 在序列 #240 中
指定日志: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 更改 403361 (在 03/10/2009 14:54:10 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:\ORACLE\ORASJH\ARCHIVE\ARC00241_0679223338.001
ORA-00280: 更改 403361 (用于线程 1) 在序列 #241 中
ORA-00278: 此恢复不再需要日志文件
'E:\ORACLE\ORASJH\ARCHIVE\ARC00240_0679223338.001'
[color="#ff0000"]ORA-00283: 恢复会话因错误而取消
ORA-01244: 未命名的数据文件由介质恢复添加至控制文件
ORA-01110: 数据文件 5: 'E:\ORACLE\ORASJH\SJH.DBF'
[color="#ff0000"]ORA-01112: 未启动介质恢复

SQL> select name from v$datafile;
NAME
-----------------------------------------------------------
E:\ORACLE\ORASJH\SYSTEM01.DBF
E:\ORACLE\ORASJH\UNDOTBS01.DBF
E:\ORACLE\ORASJH\SYSAUX01.DBF
E:\ORACLE\ORASJH\USERS01.DBF
[color="#ff0000"]C:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00005

[color="#ff0000"]--原来的控制文件中没有新加数据文件的记录,oracle自动生成一个缺省的文件名:UNNAMED00005

SQL> alter database create datafile 'C:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNA
MED00005' as 'E:\ORACLE\ORASJH\SJH.DBF';
数据库已更改。

[color="#ff0000"]--可以通过CREATE AS方式修改控制文件中记录。继续应用所有归档和日志文件可以完成恢复。

SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 403554 (在 03/10/2009 14:59:44 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:\ORACLE\ORASJH\ARCHIVE\ARC00241_0679223338.001
ORA-00280: 更改 403554 (用于线程 1) 在序列 #241 中
指定日志: {=suggested | filename | AUTO | CANCEL}
ORA-00279: 更改 403840 (在 03/10/2009 15:01:54 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:\ORACLE\ORASJH\ARCHIVE\ARC00242_0679223338.001
ORA-00280: 更改 403840 (用于线程 1) 在序列 #242 中
ORA-00278: 此恢复不再需要日志文件
'E:\ORACLE\ORASJH\ARCHIVE\ARC00241_0679223338.001'
指定日志: {=suggested | filename | AUTO | CANCEL}
ORA-00279: 更改 423851 (在 03/10/2009 15:18:57 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:\ORACLE\ORASJH\ARCHIVE\ARC00243_0679223338.001
ORA-00280: 更改 423851 (用于线程 1) 在序列 #243 中
ORA-00278: 此恢复不再需要日志文件
'E:\ORACLE\ORASJH\ARCHIVE\ARC00242_0679223338.001'
指定日志: {=suggested | filename | AUTO | CANCEL}
E:\oracle\orasjh\REDO01.LOG
ORA-00310: 归档日志包含序列 241; 要求序列 243
ORA-00334: 归档日志: 'E:\ORACLE\ORASJH\REDO01.LOG'
SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 423851 (在 03/10/2009 15:18:57 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:\ORACLE\ORASJH\ARCHIVE\ARC00243_0679223338.001
ORA-00280: 更改 423851 (用于线程 1) 在序列 #243 中
指定日志: {=suggested | filename | AUTO | CANCEL}
E:\ORACLE\ORASJH\REDO02.LOG
ORA-00310: 归档日志包含序列 242; 要求序列 243
ORA-00334: 归档日志: 'E:\ORACLE\ORASJH\REDO02.LOG'
SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 423851 (在 03/10/2009 15:18:57 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:\ORACLE\ORASJH\ARCHIVE\ARC00243_0679223338.001
ORA-00280: 更改 423851 (用于线程 1) 在序列 #243 中
指定日志: {=suggested | filename | AUTO | CANCEL}
E:\ORACLE\ORASJH\REDO03.LOG
已应用的日志。
完成介质恢复。
SQL> alter database open resetlogs;
数据库已更改。
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/79444/showart_1906763.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP