ora-00494引起rac當機的分析處理
1、問題分析
12月1日早上8:20,客戶報障說資料庫無法連線上,使用sqlplus連線也無法連上。我本人,透過遠端工具連線上去,發現資料庫好的,並且檢查叢集如下:
[oracle@myrac1 ~]$ crs_stat -t
長時間沒有響應
[oracle@myrac1 cssd]$ ps -ef | grep pmon
oracle 3308 19190 0 11:41 pts/2 00:00:00 grep pmon
oracle 18254 1 0 09:35 ? 00:00:00 asm_pmon_+ASM1
oracle 18474 1 0 09:36 ? 00:00:00 ora_pmon_testdb1
但是進入資料庫,發現根據不可用
[oracle@myrac1 ~]$ sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.5.0 - Production on Fri Mar 7 10:25:15 2014
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, Real Application Clusters, Oracle Label Security, OLAP,
Data Mining Scoring Engine and Real Application Testing options
SQL> select status from v$instance;
一直無法響應。這種狀態,說明資料庫已經無法使用!
檢查alert日誌發現:
從6點24開始,系統出現報錯
Attempt to get Control File Enqueue by LGWR pid=17130 (mode=X, type=0, timeout=9
00) is being blocked by inst=2, pid=11498
Please check inst 2's alert log for more information on the blocker including a
possible ORA-00494 and related incident logs
出現資料庫ora-00494
[oracle@myrac1 cssd]$ oerr ora 494
00494, 00000, "enqueue%s held for too long%s by '%s'"
// *Cause: The specified process did not release the enqueue within
// the maximum allowed time.
// *Action: Reissue any commands that failed and contact Oracle Support
// Services with the incident information.
從這種報障情況來看,是由於叢集的第二個節點對控制檔案進行了鎖定,並且產生了阻塞超過了900秒。第一節點無法得到資源,主動查殺了後臺程式!而在第二個節點,這段時間沒有任何日誌!接到報錯後,第二節點可以ping通,但無法連線,到機房接上螢幕、鍵盤後,沒任任何顯示,說明系統已經掛死
在第一個節點,就出現要求instances離開
Waiting for instances to leave:
Waiting for instances to leave:
Waiting for instances to leave:
所以,最後的結論來看,應該是第二節點在系統掛死前,已經持有cf鎖,而第一節點無法申請到,進而引起當機。
最後,我們沒有辦法,只好重新啟動第二個節點,對第一個節點進行強制關閉資料庫
SQL> shutdown abort;
2、解決辦法
為避免因為某一個節點的原因,引資料庫叢集當機,oracle官方解決方案
CF eq超過900秒,會報ORA-00494,10.2.0.4對ORA-00494引進一種新的處理機制,當出現這個錯誤時,不管是不是後臺程式,只要是阻塞的,都會kill掉。因為cf 鎖的一直存在,lgwr因為需要申請cf鎖會一直等待,此時active session中有越來越多的log file sync,當cf eq超過900s,報ORA-00494的時候,先kill了ckpt,然後 lgwr也被kill,ckpt也被 kill掉,再在 11:57:35 將lgwr也kill了。同時在11:57:35 時,例項也crash了。設定_kill_controlfile_enqueue_blocker=false引數,可以不kill掉任何程式。(對於CF eq超過900s也不會處理)。
如果在init.ora中設定_kill_enqueue_blocker=1 ,可以阻止kill後臺程式,但是仍舊kill非後臺的程式。出現這種問題的原因應該去找,為什麼CF EQ會超過900s
SQL> select ksppinm,ksppstvl,ksppstdf from x$ksppi a,x$ksppcv b where a.indx = b.indx and ksppinm='_kill_controlfile_enqueue_blocker';
KSPPINM KSPPSTVL
----------------------------------------- ------
_kill_controlfile_enqueue_blocker TRUE
建議將這個值調整為false
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29371470/viewspace-1102951/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DRM特性引起的RAC節點當機
- rac當機分析
- ORA-00494 enqueue [CF] held for too long故障分析處理ENQ
- RedHat7.2的RemoveIPC設定主yes引起rac當機RedhatREM
- 【原創】Oracle RAC故障分析與處理Oracle
- Redis的KEYS命令引起當機事件Redis事件
- 人為操作不當引起電腦當機
- RAC 腦裂 處理機制 Oracle RAC Brain SplitOracleAI
- 記一次row cache lock引起的效能問題分析處理
- 聯機分析處理(OLAP)概述
- 一次oracle 10.2.0.4當機事故的處理Oracle
- java當中的批處理Java
- JDBC當中的批處理JDBC
- SQLServer mirror當機後error 9004異常處理SQLServerError
- Windows 2000藍屏當機故障處理Windows
- 記一次資料庫索引引起的當機。。。資料庫索引
- 【故障處理】佇列等待之TX - allocate ITL entry引起的死鎖處理佇列
- android的視窗機制分析------事件處理Android事件
- JVM當機分析JVM
- 【故障處理】一次RAC故障處理過程
- oracle rac修改ip的處理辦法Oracle
- ORACLE 從10G 單機 並升級到11G RAC時報錯分析處理Oracle
- 當 Vue 處理陣列與處理純物件的方式一樣Vue陣列物件
- ORA-00494: enqueue [CF] held for too long (more than 900 seconds) -RACENQ
- glogin.sql配置不當引起sqlplus hang的假象分析SQL
- 【故障處理】DBCA建庫詭異問題處理--rac環境不能建立rac庫
- DNS 引起經典RAC故障DNS
- RAC中unknown 狀態的處理方式
- Redis中的事務處理機制分析與總結Redis
- Oracle 10g RAC故障處理Oracle 10g
- rac 遭遇GC BUFFER BUSY 處理思路GC
- 原始碼分析:Android訊息處理機制原始碼Android
- Nginx支援.htaccess的分析處理Nginx
- 轉載was當機處理:WAS7叢集上傳下載問題分析及動靜分離
- RAC 環境Library Cache Lock的處理方法
- MHA高可用架構工作原理?主庫當機處理過程架構
- On AIX RAC中global cache cr rquest的的處理方法AI
- vue中當資料為空時的處理Vue