时间:2021-07-01 10:21:17 帮助过:34人阅读
早上刚上班,跟往常一样,支起电脑支架,打开电脑,有种战争片里边,回归阵地,架起机关枪,准备迎敌的仪式感。
一切都那么熟悉,在启动测试环境的时候,开发的声音打破了办公室的清静:“公司XXX系统的数据库是不是挂了!!!”
听完习惯性的一身冷汗!囧!!!
赶紧打开相关工具,连上服务器确认情况:
- <code class="sql;collapse:false;;gutter:false;">[oracle@xxxxDb ~]$ 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</code>
果然数据库状态不正常,提示不能打开控制文件,找不到相关文件路径。
DBA就是这样,平常系统正常的时候,大家往往会忽略你的存在,但是一旦系统出现问题,又像是充当着救火队员!!!
回归正题,正常的处理流程,我们接下来需要去查看相关的告警日志,找出异常信息:
先查看alter日志:
一般告警日志的存放路径可以通过如下命令查询:
SQL> show parameter background_dump_dest
pwd
/home/oracle/u01/app/oracle/diag/rdbms/orcl/orcl/alert ---注:这里注释的敏感信息,参考的时候,以自己实际环境为准。
- <code class="html;collapse:false;;gutter:false;"><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></code>
从上述文件中,可以大概看到是在7月12日18:06的时候出现的“控制文件找不到的相关报错信息”
有趣的是,里边有一个客户端连接Client address 可以看到IP地址,这时候还有点兴奋:终于找到你了,是不是有人在恶意攻击,然后一查该IP地址,居然是公司的IP,
尴尬了,自己人啊,于是问开发,昨天下午6点的时候,有没有人对数据库进行过操作,得到的回复是,没有进行其他操作,只是进行了简单的查询和更新操作!!!
哎,不说了!!! 心想还是,抓紧处理故障吧!
再根据日志中提到的信息,查看trc文件:
- <code class="sql;collapse:false;;gutter:false;">/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: 无法打开文件</code>
大概知道问题想象之后,首先需要尽快恢复业务,然后再寻找出现故障的原因!
根据日志报错信息,可以确定是控制文件的问题,那么,我们先查看一下数据库里边的控制文件有哪些:
- <code class="sql;collapse:false;;gutter:false;">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</code>
发现一个问题,之前没有记错的话,数据库的两个控制文件都是存放在相同的目录下,即:...oradata/orcl下,怎么第二个控制文件放在了...fast_recovery_area/orcl目录下?
奇怪了,该数据库之前没有开启闪回,为什么这个地方的控制文件存放路径发生了变化?
接着处理,确认一下当前环境是否开启闪回,
- <code class="sql;collapse:false;;gutter:false;">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</code>
完了,还查看不了!!!
试着查看一下闪回相关的参数呢?
Oracle异常ORA-00210,ORA-00202故障处理
标签:流程 根据 打破 恶意攻击 信息 ase cli keep bsp