丢失全部数据文件的恢复
(不包括control和redo)
作者:张大鹏(Lunar)
Email: moonlunar@163.com
MSN: lunar52@hotmail.com
热备数据库
C:/>sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.1.0 - Production on 星期二 2月 5 17:39:48 2002
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> @D:/hot_backup/hotbackup_for_win
已复制 1 个文件。
已复制 1 个文件。
已复制 1 个文件。
已复制 1 个文件。
已复制 1 个文件。
已复制 1 个文件。
已复制 1 个文件。
已复制 1 个文件。
SQL> host copy E:/oracle/oradata/test/archive/*.* D:/hot_backup/archive
E:/oracle/oradata/test/archive/1_74.ARC
E:/oracle/oradata/test/archive/1_75.ARC
E:/oracle/oradata/test/archive/1_76.ARC
E:/oracle/oradata/test/archive/1_77.ARC
E:/oracle/oradata/test/archive/1_78.ARC
E:/oracle/oradata/test/archive/1_79.ARC
E:/oracle/oradata/test/archive/1_80.ARC
E:/oracle/oradata/test/archive/1_81.ARC
E:/oracle/oradata/test/archive/1_82.ARC
E:/oracle/oradata/test/archive/1_83.ARC
E:/oracle/oradata/test/archive/1_84.ARC
E:/oracle/oradata/test/archive/1_85.ARC
已复制 12 个文件。
SQL> host dir D:/hot_backup/archive
驱动器 D 中的卷是 PROGRAMS
卷的序列号是 A06D-D424
D:/hot_backup/archive 的目录
2002-02-04 13:59 <DIR> .
2002-02-04 13:59 <DIR> ..
2002-02-05 15:29 2,560 1_74.ARC
2002-02-05 15:29 1,024 1_75.ARC
2002-02-05 15:29 1,024 1_76.ARC
2002-02-05 15:33 45,056 1_77.ARC
2002-02-05 16:37 46,080 1_78.ARC
2002-02-05 16:38 1,536 1_79.ARC
2002-02-05 16:46 1,536 1_80.ARC
2002-02-05 16:54 142,848 1_81.ARC
2002-02-05 16:54 1,024 1_82.ARC
2002-02-05 16:54 2,560 1_83.ARC
2002-02-05 17:33 109,568 1_84.ARC
2002-02-05 17:43 177,152 1_85.ARC
12 个文件 531,968 字节
2 个目录 1,622,589,440 可用字节
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 e:/oracle/oradata/test/archive
最早的概要日志序列 83
下一个存档日志序列 86
当前日志序列 86
SQL>
模拟所有数据文件损坏的情况
SQL> host
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-2000 Microsoft Corp.
C:/>copy AdobeWeb.log E:/oracle/ora92/test/XDB01.DBF
已复制 1 个文件。
C:/>copy AdobeWeb.log E:/oracle/ora92/test/USERS01.DBF
已复制 1 个文件。
C:/>copy AdobeWeb.log E:/oracle/ora92/test/UNDOTBS01.DBF
已复制 1 个文件。
C:/>copy AdobeWeb.log E:/oracle/ora92/test/TOOLS01.DBF
已复制 1 个文件。
C:/>copy AdobeWeb.log E:/oracle/ora92/test/SYSTEM01.DBF
已复制 1 个文件。
C:/>copy AdobeWeb.log E:/oracle/ora92/test/RMAN01.DBF
已复制 1 个文件。
C:/>copy AdobeWeb.log E:/oracle/ora92/test/INDX01.DBF
已复制 1 个文件。
C:/>copy AdobeWeb.log E:/oracle/ora92/test/DRSYS01.DBF
已复制 1 个文件。
C:/>copy AdobeWeb.log E:/oracle/ora92/test/TEMP01.DBF
改写 E:/oracle/ora92/test/TEMP01.DBF 吗? (Yes/No/All): all
已复制 1 个文件。
C:/>
C:/>dir E:/oracle/ora92/test/*.dbf
驱动器 E 中的卷是 ORACLE
卷的序列号是 707A-C50C
E:/oracle/ora92/test 的目录
2002-01-15 19:02 0 DRSYS01.DBF
2002-01-15 19:02 0 INDX01.DBF
2002-01-15 19:02 0 RMAN01.DBF
2002-01-15 19:02 0 SYSTEM01.DBF
2002-01-15 19:02 0 TEMP01.DBF
2002-01-15 19:02 0 TOOLS01.DBF
2002-01-15 19:02 0 UNDOTBS01.DBF
2002-01-15 19:02 0 USERS01.DBF
2002-01-15 19:02 0 XDB01.DBF
9 个文件 0 字节
0 个目录 2,702,540,800 可用字节
C:/>exit
SQL>
写数据库时报错,检查点产生时数据库会crash
SQL> conn / as sysdba
已连接。
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 e:/oracle/oradata/test/archive
最早的概要日志序列 83
下一个存档日志序列 86
当前日志序列 86
SQL> conn lunar/lunar
已连接。
SQL> select * from test;
22
23
100
111
已选择4行。
SQL> insert into test values(222);
insert into test values(222)
*
ERROR 位于第 1 行:
ORA-01115: 从文件 6 读取块时出现 IO 错误 (块 # 35)
ORA-01110: 数据文件 6: 'E:/ORACLE/ORA92/TEST/USERS01.DBF'
ORA-27091: skgfqio: 无法进行 I/O 操作
ORA-27070: skgfdisp: 异步读取/写入失败
OSD-04006: ReadFile() 失败, 无法读取文件
O/S-Error: (OS 38) 到达文件结尾。
SQL> conn / as sysdba
已连接。
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 e:/oracle/oradata/test/archive
最早的概要日志序列 83
下一个存档日志序列 86
当前日志序列 86
SQL> alter system switch logfile;
系统已更改。
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 e:/oracle/oradata/test/archive
最早的概要日志序列 84
下一个存档日志序列 87
当前日志序列 87
SQL> alter system checkpoint;
alter system checkpoint
*
ERROR 位于第 1 行:
ORA-03113: 通信通道的文件结束
SQL> conn / as sysdba
已连接到空闲例程。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
ORA-01122: 数据库文件 1 验证失败
ORA-01110: 数据文件 1: 'E:/ORACLE/ORA92/TEST/SYSTEM01.DBF'
ORA-01251: 文件号1的未知文件标题版本读取
SQL>
恢复数据库
把热备的所有数据文件拷贝回来
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
ORA-01122: 数据库文件 1 验证失败
ORA-01110: 数据文件 1: 'E:/ORACLE/ORA92/TEST/SYSTEM01.DBF'
ORA-01251: 文件号1的未知文件标题版本读取
SQL> shutdown immediate;
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-2000 Microsoft Corp.
C:/>copy D:/hot_backup/*.dbf E:/oracle/ora92/test
D:/hot_backup/SYSTEM01.DBF
改写 E:/oracle/ora92/test/SYSTEM01.DBF 吗? (Yes/No/All): all
D:/hot_backup/UNDOTBS01.DBF
D:/hot_backup/DRSYS01.DBF
D:/hot_backup/INDX01.DBF
D:/hot_backup/TOOLS01.DBF
D:/hot_backup/USERS01.DBF
D:/hot_backup/XDB01.DBF
D:/hot_backup/RMAN01.DBF
已复制 8 个文件。
C:/>exit
SQL>
装载但不打开数据库
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL>
恢复数据库
SQL> recover database;
完成介质恢复。
SQL>
打开数据库
SQL> alter database open;
数据库已更改。
SQL>
验证恢复
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 e:/oracle/oradata/test/archive
最早的概要日志序列 85
下一个存档日志序列 88
当前日志序列 88
SQL> conn lunar/lunar
已连接。
SQL> select * from test;
22
23
100
111
已选择4行。
SQL>