今天一企业生产数据库系统出现问题,同事求助,windows平台,oracle版本8.1.7.0.0.,非归档模式,没有任何有效的备份,系统已经运行了几年,比较气愤这种情况,备份怎么强调也有人不执行啊!
首先在os层面备份oradata文件夹及参数文件、口令文件,然后开始进行处理。先清除非当前日志文件:
alter database clear unarchived logfile group 1;
alter database clear unarchived logfile group 3;
尝试清除当前日志,果然出现错误:
SQL> alter database clear logfile group 2;
alter database clear logfile group 2
*
ERROR 位于第 1 行:
ORA-01624: ??2?????????1
ORA-00312: ???? 2 ?? 1: 'C:\ORACLE\ORADATA\ORCL\REDO02.LOG'
因system01.dbf文件出现问题,故试图恢复该文件:
SQL> recover datafile 1;
ORA-00283: ??????????
ORA-00322: ?? 2 (?? 1) ??????
ORA-00312: ???? 2 ?? 1: 'C:\ORACLE\ORADATA\ORCL\REDO02.LOG'
仍然提示REDO02.LOG的问题,查看alert文件,提示:
ORA-00322: 日志 2 (线程 1) 不是当前副本
ORA-00312: 联机日志 2 线程 1: 'C:\ORACLE\ORADATA\ORCL\REDO02.LOG'
开始使用日志文件全部丢失的方式处理,未果,遂尝试使用backup controlfile进行恢复:
SQL> alter database recover database using backup controlfile;
alter database recover database using backup controlfile
*
ERROR 位于第 1 行:
ORA-00279: ?? 1177179 (? 11/16/2010 14:50:13 ??) ???? 1 ????
ORA-00289: ??: C:\ORACLE\ORA81\RDBMS\ARC00545.001
ORA-00280: ?? 1177179 ???? 1 ???? # 545 ???
再次恢复system01.dbf文件:
SQL> recover datafile 'c:\oracle\oradata\orcl\system01.dbf';
ORA-00275: ????????
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR 位于第 1 行:
ORA-01153: ????????? RMAN ????????
SQL> alter database backup controlfile to trace;
数据库已更改。
SQL> recover database;
ORA-00275: ????????
重新关闭数据库并启动到mount状态:
SQL> recover database;
ORA-00283: ??????????
ORA-01610: ?? BACKUP CONTROLFILE ??????????
使用recover controlfile继续恢复:
SQL> recover database using backup controlfile;
ORA-00279: ?? 1177179 (? 11/16/2010 14:50:13 ??) ???? 1 ????
ORA-00289: ??: C:\ORACLE\ORA81\RDBMS\ARC00545.001
ORA-00280: ?? 1177179 ???? 1 ???? # 545 ???
指定日志: {
ORA-00308: ???????? 'C:\ORACLE\ORA81\RDBMS\ARC00545.001'
ORA-27041: ??????
OSD-04002: N^7(4r?*ND<~
O/S-Error: (OS 2) O5M3UR2;5=V86(5DND<~!#
SQL> recover database using backup controlfile;
ORA-00279: ?? 1177179 (? 11/16/2010 14:50:13 ??) ???? 1 ????
ORA-00289: ??: C:\ORACLE\ORA81\RDBMS\ARC00545.001
ORA-00280: ?? 1177179 ???? 1 ???? # 545 ???
指定日志: {
输入:auto
ORA-00308: ???????? 'C:\ORACLE\ORA81\RDBMS\ARC00545.001'
ORA-27041: ??????
OSD-04002: N^7(4r?*ND<~
O/S-Error: (OS 2) O5M3UR2;5=V86(5DND<~!#
SQL> alter database open resetlogs;
数据库已更改。
语句执行成功,数据库已经成功打开!
SQL> select * from v$logfile;
GROUP# STATUS MEMBER
---------------------------------------------------------------------
1
C:\ORACLE\ORADATA\ORCL\REDO03.LOG
2
C:\ORACLE\ORADATA\ORCL\REDO02.LOG
3
C:\ORACLE\ORADATA\ORCL\REDO01.LOG
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- --- ----------
FIRST_CHANGE# FIRST_TIME
------------- ----------
1 1 0 1048576 1 YES UNUSED
0
2 1 1 1048576 1 NO CURRENT
1177180 06-12月-10
3 1 0 1048576 1 YES UNUSED
0
SQL> alter system switch logfile;
系统已更改。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup;
ORACLE 例程已经启动。
Total System Global Area 163735580 bytes
Fixed Size 75804 bytes
Variable Size 61124608 bytes
Database Buffers 102457344 bytes
Redo Buffers 77824 bytes
数据库装载完毕。
数据库已经打开。
SQL>
至此数据库已彻底恢复成功。
发现该同事在出现问题之后,数次使用abort关闭数据库,说是数据库无法关闭(实际完全可以正常关闭)。应该是本来比较简单的问题,结果因错误的处理越弄越复杂了。在此再次强调,千万不要随意使用abort选项强制关闭数据库,这相当于强制断电,会导致数据库来不得进行一致性处理,损坏数据库。本例就是系统数据字典出现问题了,不一致。在数据库打开后,曾经显示数据字典一致之类的提示信息。
建议给该企业重新创建数据库,重新导入数据:
RESETLOGS is being done without consistancy checks. This may result
in a corrupted database. The database should be recreated.
RESETLOGS after incomplete recovery UNTIL CHANGE 1177179
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7177735/viewspace-681069/ ,如需转载,请注明出处,否则将追究法律责任。