Oracle sqlplus失去響應解決方法/如何在數據庫失去響應時轉儲狀態信息(轉)

某雲平臺出現故障,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(恩墨的技術仍是能夠的,有興趣的同窗能夠多看看該處博文)

相關文章
相關標籤/搜索