某雲平臺出現故障,sqlplus鏈接Oracle數據庫,發現沒有響應。數據庫版本:12.1.0.2.0html
查找、借鑑前人經驗,成功處理此問題,參考網址:如何在數據庫失去響應時轉儲狀態信息 - Oracle Life - 雲和恩墨,成就所託! http://www.eygle.com/archives/2007/10/sqlplus_prelim.htmlsql
以下內容摘自恩墨博文:數據庫
「」在某些狀況下,數據庫失去響應,sqlplus也沒法鏈接,此時一般只能經過殺掉進程來解決。session
可是咱們仍然但願可以得到此時的數據庫狀態信息,以便用於過後診斷。
從Oracle10g開始,sqlplus提供了一個參數選項-prelim,能夠在一般sqlplus沒法鏈接的狀況下進行鏈接。
經過如下步驟能夠獲取系統信息:oracle
sqlplus -prelim / as sysdba oradebug setmypid oradebug unlimit; oradebug dump systemstate 10
這種方法很是有用:app
$ sqlplus -prelim / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Thu Oct 25 09:42:20 2007 Copyright (c) 1982, 2005, Oracle. All rights reserved. SQL>
可是須要注意的是,在Oracle 10.2.0.1中,使用如上方法會出現一個錯誤:工具
$ sqlplus -prelim / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Thu Oct 25 09:38:14 2007 Copyright (c) 1982, 2005, Oracle. All rights reserved. SQL> oradebug setmypid Statement processed. SQL> oradebug unlimit Statement processed. SQL> oradebug dump systemstate 10 ORA-03113: end-of-file on communication channel ORA-24323: value not allowed
此時在alert文件中會記錄以下錯誤提示:spa
Thu Oct 25 09:38:32 2007 System State dumped to trace file Thu Oct 25 09:38:32 2007 Errors in file /opt/oracle/admin/test201/udump/test201_ora_1402.trc: ORA-07445: exception encountered: core dump [kgldmp()+1360] [SIGSEGV] [Address not mapped to object] [0x000000030] [] []
這是因爲一個Bug致使的,Bug號爲5730231,該Bug在10.2.0.3中修正。「.net
-------------------------------------------------------------------------------------------------------摘錄內容結束debug
經過上述文檔,並對prelim參數信息查詢後瞭解到:sqlplus -prelim是Oracle 10G新增的一個特性,它使得Oracle掛起時依然能使用sqlplus,從而能得到數據庫狀態。此時,並不會建立新的session,而是鏈接到SGA區。
對於Oracle hang住這種狀況,prelim是一個比較有力的工具。
參考網址:
Oracle sqlplus prelim 參數介紹 - CSDN博客 http://blog.csdn.net/tianlesoftware/article/details/4980545
如何在數據庫失去響應時轉儲狀態信息 - Oracle Life - 雲和恩墨,成就所託! http://www.eygle.com/archives/2007/10/sqlplus_prelim.html(恩墨的技術仍是能夠的,有興趣的同窗能夠多看看該處博文)