1、如果要尋求Oracle的支援人員,我們需要dump一下Oracle的systemstate,操作如下
SQL>conn / as sysdba;
SQL> alter session set events 'immediate trace name SYSTEMSTATE level 10';
需要等幾分鐘的時間,這時在init<SID>.ora中所設定的user_dump_dest所標識的位置就可以找到這個.trc檔案,一般比較大。
2、捕獲一些視圖的狀態值
SQL>conn / as sysdba;
SQL>set linesize 500
SQL>set pagesize 0
SQL>spool v_views.txt
SQL> SELECT * FROM v$parameter;
SQL>SELECT class, value, name FROM v$sysstat;
SQL>SELECT sid, id1, id2, type, lmode, request FROM v$lock;
SQL>SELECT l.latch#, n.name, h.pid, l.gets, l.misses, l.immediate_gets, l.immediate_misses, l.sleeps FROM v$latchname n, v$latchholder h, v$latch l WHERE l.latch# = n.latch# AND l.addr = h.laddr(+);
SQL>SELECT * FROM v$session_wait ORDER BY sid; --隔幾秒重複執行3次。
SQL>spool off
1、首先要到作業系統上去,用glance等工具進行一下觀察,看一下cpu、記憶體、交換區、磁碟的繁忙程度與平時是不是相似的,同時看一看有沒有占系統資源特別大的進程,有些時侯是這些進程引起的,通過v$process和v$session兩個視圖找到這Oracle進程的sid,serial#,把它用Alter system kill session ‘sid,serial#’;殺掉就行了。如果平時同樣的時段你的磁碟的繁忙程度是95%,而些時它為20%,當然是假設了,說明Oracle的庫沒準真的hang了。