首页 > 代码库 > Oracle异常ORA-00210,ORA-00202故障处理
Oracle异常ORA-00210,ORA-00202故障处理
早上刚上班,跟往常一样,支起电脑支架,打开电脑,有种战争片里边,回归阵地,架起机关枪,准备迎敌的仪式感。
一切都那么熟悉,在启动测试环境的时候,开发的声音打破了办公室的清静:“公司XXX系统的数据库是不是挂了!!!”
听完习惯性的一身冷汗!囧!!!
赶紧打开相关工具,连上服务器确认情况:
[oracle@xxxxDb ~]$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Thu Jul 13 09:11:29 2017Copyright (c) 1982, 2013, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> select open_mode from v$database; select open_mode from v$database*ERROR at line 1:ORA-00210: cannot open the specified control fileORA-00202: control file:‘/home/oracle/u01/app/oracle/fast_recovery_area/orcl/control02.ctl‘ORA-27041: unable to open fileLinux-x86_64 Error: 2: No such file or directoryAdditional information: 3
果然数据库状态不正常,提示不能打开控制文件,找不到相关文件路径。
DBA就是这样,平常系统正常的时候,大家往往会忽略你的存在,但是一旦系统出现问题,又像是充当着救火队员!!!
回归正题,正常的处理流程,我们接下来需要去查看相关的告警日志,找出异常信息:
先查看alter日志:
一般告警日志的存放路径可以通过如下命令查询:
SQL> show parameter background_dump_dest
pwd
/home/oracle/u01/app/oracle/diag/rdbms/orcl/orcl/alert ---注:这里注释的敏感信息,参考的时候,以自己实际环境为准。
<msg time=‘2017-07-12T18:06:52.299+08:00‘ org_id=‘XXXX‘ comp_id=‘XXXX‘ type=‘UNKNOWN‘ level=‘16‘ host_id=‘xxxxDb‘ host_addr=‘这里是服务器IP地址‘> <txt> nt OS err code: 0 </txt></msg><msg time=‘2017-07-12T18:06:52.299+08:00‘ org_id=‘XXXX‘ comp_id=‘XXXX‘ type=‘UNKNOWN‘ level=‘16‘ host_id=‘xxxxDb‘ host_addr=‘这里是服务器IP地址‘> <txt> Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=远程客户端的IP地址,例如:192.168.1.111)(PORT=58310)) </txt></msg><msg time=‘2017-07-12T18:06:59.902+08:00‘ org_id=‘XXXX‘ comp_id=‘XXXX‘ client_id=‘‘ type=‘UNKNOWN‘ level=‘16‘ host_id=‘xxxxDb‘ host_addr=‘这里是服务器IP地址‘ module=‘MMON_SLAVE‘ pid=‘26750‘> <txt>Errors in file /home/oracle/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_m000_26750.trc:ORA-00210: 无法打开指定的控制文件ORA-00202: 控制文件: ‘‘/home/oracle/u01/app/oracle/fast_recovery_area/orcl/control02.ctl‘‘ORA-27041: 无法打开文件Linux-x86_64 Error: 2: No such file or directoryAdditional information: 3 </txt></msg>
从上述文件中,可以大概看到是在7月12日18:06的时候出现的“控制文件找不到的相关报错信息”
有趣的是,里边有一个客户端连接Client address 可以看到IP地址,这时候还有点兴奋:终于找到你了,是不是有人在恶意攻击,然后一查该IP地址,居然是公司的IP,
尴尬了,自己人啊,于是问开发,昨天下午6点的时候,有没有人对数据库进行过操作,得到的回复是,没有进行其他操作,只是进行了简单的查询和更新操作!!!
哎,不说了!!! 心想还是,抓紧处理故障吧!
再根据日志中提到的信息,查看trc文件:
/home/oracle/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_m000_22241.trc:ORA-00210: 无法打开指定的控制文件ORA-00202: 控制文件: ‘‘/home/oracle/u01/app/oracle/fast_recovery_area/orcl/control02.ctl‘‘ORA-27041: 无法打开文件
大概知道问题想象之后,首先需要尽快恢复业务,然后再寻找出现故障的原因!
根据日志报错信息,可以确定是控制文件的问题,那么,我们先查看一下数据库里边的控制文件有哪些:
SQL> show parameter control_fileNAME TYPE VALUE------------------------------------ ----------- ------------------------------control_file_record_keep_time integer 7control_files string /home/oracle/u01/app/oracle/oradata/orcl/control01.ctl, /home/oracle/u01/app/oracle/fast_recovery_area/orcl/control02.ctl
发现一个问题,之前没有记错的话,数据库的两个控制文件都是存放在相同的目录下,即:...oradata/orcl下,怎么第二个控制文件放在了...fast_recovery_area/orcl目录下?
奇怪了,该数据库之前没有开启闪回,为什么这个地方的控制文件存放路径发生了变化?
接着处理,确认一下当前环境是否开启闪回,
SQL> select flashback_on from v$database;select flashback_on from v$database *ERROR at line 1:ORA-00210: cannot open the specified control fileORA-00202: control file:‘/home/oracle/u01/app/oracle/fast_recovery_area/orcl/control02.ctl‘ORA-27041: unable to open fileLinux-x86_64 Error: 2: No such file or directoryAdditional information: 3
完了,还查看不了!!!
试着查看一下闪回相关的参数呢?
Oracle异常ORA-00210,ORA-00202故障处理