1 问题描述 XX银行的一台数据库服务器上运行了6个数据库,机房突然断电,造成有5个库从客户端连接数据库失败,数据库版本为:Oracle10g,操作系统为:windows。从监听日志看,错误信息如下:
TNS-12528: TNS: 监听程序: 所有适用例程都无法建立新连接
21-2月 -2011 11:27:43 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))(SERVICE_NAME=test)) * (ADDRESS=(PROTOCOL=tcp)(HOST=xxx.xxx.xxxxx.xx(PORT=xxxx)) * establish
2 问题分析 从告警日志看,数据库仅仅启动到了nomount状态。使用sqlplus登陆数据库,启动到mount状态失败,报roa-00214的错误。如下:
SQL>alter database mount;
alter databas mount
*
ERROE at line 1:
ORA-00214:control file 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TLCB2\CONTROL_01.CTL' version 14400 inconsistent with file
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TLCB2\CONTROL03.CTL' version 14393
数据库服务器的突然断电关机,造成了数据库中的控制文件、日志文件和数据库文件的不一致。从处理的过程中遇到的错误提示和解决步骤来看,仅仅是多个控制文件之间的不一致。
3 操作步骤
1)5个出问题的数据库,一个一个的处理。
2)修改操作系统的环境变量oracle_sid为需要操作的数据库sid,然后使用sqlplus,以sysdba身份登录。
3)关闭无法启动的数据库,然后把数据文件、控制文件和日志文件备份。
4)把数据库启动到nomount状态下。
5)把控制文件调整为一致。根据错误提示,把version号低的控制文件用version号高的控制文件覆盖。
6)把数据库启动到open状态。
4 备注
操作步骤中第5步操作完成后,如果还无法正常启动数据库的话,可以把控制文件backup to trace,然后重建控制文件。