笔者在打开Oracle数据库准备做东西得时候,突然电脑蓝屏,系统崩溃了。重启后,启动实例,准备连接Oracle数据库继续使用,却发现无法连接,一直报:

    SQL>connsystem/test@test ERROR: ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务

一开始以为数据库还没启动完毕,于是重启了数据库服务,依然不能成功连接,当时没有怀疑数据库有问题,因为之前也遇到过多次在打开oracle数据库的情况下系统崩溃的情况,重启系统后还是能正常使用的。

多次连接不上之后,才想起来去看下alter文件,一看果然出现问题了:

    SunJul1713:26:152011 RecoveryofOnlineRedoLog:Thread1Group2Seq3Readingmem0 Mem#0errs0:D:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\TEST\REDO02.LOG SunJul1713:26:152011 Errorsinfiled:\oracle\product\10.2.0\db_1\admin\test\bdump\test_dbw0_2904.trc: ORA-07445:exceptionencountered:coredump[ACCESS_VIOLATION][_kcbzdh+583][PC:0x4A41AF][ADDR:0xECDC0214][UNABLE_TO_READ][]

在这个地方看到重做日志文件Group 2的REDO02.LOG需要恢复。

这里,因为是新库,没什么重要数据,所以只要数据库能恢复就OK了。采取以下措施:

删掉这个文件,重启打开数据库:

    SQL>startupmount ORACLE例程已经启动。 TotalSystemGlobalArea167772160bytes FixedSize1247876bytes VariableSize71304572bytes DatabaseBuffers88080384bytes RedoBuffers7139328bytes 数据库装载完毕。

接着执行以下代码:

    SQL>alterdatabaseopen; alterdatabaseopen * 第1行出现错误: ORA-00313:无法打开日志组2(用于线程1)的成员 ORA-00312:联机日志2线程1: ‘D:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\TEST\REDO02.LOG’ ORA-27041:无法打开文件 OSD-04002:无法打开文件 O/S-Error:(OS2)系统找不到指定的文件。 SQL>selectgroup#,sequence#,statusfromv$log; GROUP#SEQUENCE#STATUS ———-———-—————- 12INACTIVE 31INACTIVE 23CURRENT

因为刚刚我删除了当前的日志文件,所以报错无法自动恢复打开了。

    SQL>alterdatabasedroplogfilemember‘D:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\T EST\REDO02.LOG’; alterdatabasedroplogfilemember‘D:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\TEST\R EDO02.LOG’ * 第1行出现错误: ORA-00361:无法删除最后一个日志成员 D:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\TEST\REDO02.LOG(组2)

无法删除,但又不想rename log,把刚刚删除的REDO02.LOG恢复回去。

    SQL>alterdatabaserecover; 数据库已更改。 SQL>alterdatabaseopen; 数据库已更改。 SQL>shutdownimmediate; 数据库已经关闭。 已经卸载数据库。 ORACLE例程已经关闭。 SQL>startup ORACLE例程已经启动。 TotalSystemGlobalArea167772160bytes FixedSize1247876bytes VariableSize71304572bytes DatabaseBuffers88080384bytes RedoBuffers7139328bytes 数据库装载完毕。 数据库已经打开。 SQL>

这样Oracle数据库又可以恢复使用了。

注意:上述方法只能适用于本机的测试环境或者不重要的测试环境,在对丢失数据没有任何担忧的情况,千万不要对生产库这么操作,以免造成数据的丢失。

【编辑推荐】

    Oracle数据库中Rank等函数的比较与选择利用Sql Server将Excel中的数据导入OracleOracle跟踪文件分析工具TKPROF使用简介如何配置Oracle 10g oem中的主机身份证明环境变量导致ASP.Net无法连接Oracle的一个案例