Oracle异常ORA-00210,ORA-00202故障处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle异常ORA-00210,ORA-00202故障处理相关的知识,希望对你有一定的参考价值。

早上刚上班,跟往常一样,支起电脑支架,打开电脑,有种战争片里边,回归阵地,架起机关枪,准备迎敌的仪式感。

一切都那么熟悉,在启动测试环境的时候,开发的声音打破了办公室的清静:“公司XXX系统的数据库是不是挂了!!!”

听完习惯性的一身冷汗!囧!!!

赶紧打开相关工具,连上服务器确认情况:

[[email protected] ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Thu Jul 13 09:11:29 2017
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select open_mode from v$database;  
select open_mode from v$database
*
ERROR at line 1:
ORA-00210: cannot open the specified control file
ORA-00202: control file:
‘/home/oracle/u01/app/oracle/fast_recovery_area/orcl/control02.ctl‘
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional 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 directory
Additional 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_file

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time	     integer	 7
control_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 file
ORA-00202: control file:
‘/home/oracle/u01/app/oracle/fast_recovery_area/orcl/control02.ctl‘
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

完了,还查看不了!!!
                                
试着查看一下闪回相关的参数呢?










以上是关于Oracle异常ORA-00210,ORA-00202故障处理的主要内容,如果未能解决你的问题,请参考以下文章

Oracle异常

oracle 存储过程异常处理

请教各位高手 oracle 存储过程 如何获得 捕获异常的内容

oracle存储过程报937错误

oracle异常(-)

Oracle存储过程的异常处理