1.某一供电公司为方便内部管理及电费的收取,创建了一套供电收费及管理系统,此系统的操作系统环境为Windows nt 4.0双机热备;数据库版本为Oracle 8.1.6,数据库运行在归档模式下。在数据库中存储了大量电费收取的详细记录,这些信息对于供电公司来说是至关重要的。
2.但不知什么原因,发生两次连续的断电现象,造成数据库的宕机。而非常不幸的是用户没有任何备份。
3.根据如下错误信息,我们发现数据库只能启动实例,读控制文件时发生错误。在数据库设计的过程中,从安全的角度考虑,系统使用了三个径向的控制文件,现在三个控制文件version号不一致。
SVRMGRLstartup
oracle instance started
total system global area 222323980 bytes
fixed size 70924 bytes
variable size 78667776 bytes
database buffers 143507456 bytes
redo buffers 77824 bytes
ORA-00214: controlfile ‘d:\oracle\oradata\orcl\control01.ctl’ version 57460 inconsistent with file ‘d:\oracle\oradata\orcl\control02.ctl’ version 57452.
4.根据以上分析,我们试着修改参数文件。将参数文件中的control_file参数修改为一个控制文件,分别使用control01、control02、control03。但数据库都无法启动,说明三个控制文件都已损坏。
5.由于没有控制文件的备份,我们只能采取重建控制文件的做法。
D:\svrmgrl
Oracle Server Manager Release 3.1.6.0.0 - Production
版权所有 (c) 1997,1999,Oracle Corporation。保留所有权利。
Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production
With the Partitioning option
JServer Release 8.1.6.0.0 - Production
SVRMGR connect internal
连接成功。
SVRMGR shutdowm abort
已关闭 ORACLE 实例。
SVRMGR startup nomount
已启动 ORACLE 实例。
系统全局区域合计有 108475660个字节
Fixed Size 70924个字节
Variable Size 46116864个字节
Database Buffers 62210048个字节
Redo Buffers 77824个字节
SVRMGRcreate controlfile reuse database orcl noresetlogs archivelog
Logfile group 1 ‘d:\oracle\oradata\orcl\redo01.log’,
group 2 ‘d:\oracle\oradata\orcl\redo02.log’,
group 3 ‘d:\oracle\oradata\orcl\redo03.log’
datafile ‘d:\oracle\oradata\orcl\system01.dbf’,
‘d:\oracle\oradata\orcl\users01.dbf’,
‘d:\oracle\oradata\orcl\temp01.dbf’,
‘d:\oracle\oradata\orcl\tools01.dbf’,
‘d:\oracle\oradata\orcl\indx01.dbf’,
‘d:\oracle\oradata\orcl\dr01.dbf’,
‘d:\oracle\oradata\orcl\rbs01.dbf’;
语句已处理。
6.成功地重建控制文件后,我们尝试着打开数据库,但系统报错,提示需要进行介质恢复。
SVRMGRrecover datafile ‘d:\oracle\oradata\orcl\system01.dbf’;
介质已恢复。
SVRMGR recover datafile ‘d:\oracle\oradata\orcl\users0101.dbf’;
介质已恢复。
SVRMGR recover datafile ‘d:\oracle\oradata\orcl\temp01.dbf’;
介质已恢复。
SVRMGR recover datafile ‘d:\oracle\oradata\orcl\tools01.dbf’;
介质已恢复。
SVRMGR recover datafile ‘d:\oracle\oradata\orcl\indx01.dbf’;
介质已恢复。
SVRMGR recover datafile ‘d:\oracle\oradata\orcl\dr01.dbf’;
介质已恢复。
SVRMGR recover datafile ‘d:\oracle\oradata\orcl\rbs01.dbf’;
介质已恢复。
7.介质恢复后,重新打开数据库,提示日志文件也需恢复。
SVRMGR recover database until cancel;
日志已恢复。
8.控制文件、数据文件、日志文件全部恢复后,将三种文件同步,并打开数据库,成功地完成了数据库的恢复工作。
SVRMGR alter database open resetlogs;
数据库已更改。
9.立即关闭数据库,并进行数据库的冷备份,将数据库的数据完整地保存下来。