網路問題或客戶端異常可能導致資料庫會話處於僵死狀態
最近一段時間,系統的網路不是很穩定,經常發現資料庫上出現一些異常的會話,會話佔用較大的系統資源。
簡單模擬了一下,在資料庫上建立了測試用表,然後在客戶端上執行一個時間較長的SQL:
SQL> CREATE TABLE T1 AS SELECT * FROM DBA_OBJECTS;
表已建立。
SQL> CREATE TABLE T2 AS SELECT * FROM DBA_TABLES;
表已建立。
SQL> SET TIMING ON
SQL> SELECT COUNT(*) FROM T1, T2;
COUNT(*)
----------
190307720
已用時間: 00: 00: 28.57
SQL> SELECT SID FROM V$MYSTAT WHERE ROWNUM = 1;
SID
----------
16
已用時間: 00: 00: 00.01
再次執行這個SQL語句,在SQL語句開始執行且未完成之前,斷開客戶端和伺服器直接的網路連線,並在伺服器端觀察資料庫中相應的SESSION的等待資訊:
SQL> select sid, seconds_in_wait, event from v$session_wait where sid = 16;
SID SECONDS_IN_WAIT EVENT
---------- --------------- ---------------------------------------
16 195 SQL*Net message from client
SQL> select sid, seconds_in_wait, event from v$session_wait where sid = 16;
SID SECONDS_IN_WAIT EVENT
---------- --------------- ---------------------------------------
16 224 SQL*Net message from client
SQL> select spid from v$session s, v$process p where s.paddr = p.addr and sid = 16;
SPID
------------
13741
從作業系統上檢查程式,也會看到這個程式:
$ ps -ef|grep 13741
oracle 13741 1 8 17:13 ? 00:00:26 oracletest2 (LOCAL=NO)
oracle 13881 13849 0 17:18 pts/4 00:00:00 grep 13741
這種僵死的會話會佔用資源,而且Oracle的pmon程式不會自動清除該程式,而且,如果這個會話在異常中止之前(比如客戶端異常關機或網路異常)還執行了DML操作,並且沒有回滾,那麼這個僵死會話可能對導致大量的其他會話因無法獲取資源而掛起。
DBA應該注意隨時監控系統,尤其是網路不穩定的情況下,檢查是否有類似的情況產生。在伺服器上的sqlnet.ora檔案中設定SQLNET.EXPIRE_TIME來檢測伺服器和客戶端的連線是否異常中止。不過這個設定可能會對網路效能帶來少量的下降。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-69181/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle僵死會話鎖住buffer,導致資料庫hang住Oracle會話資料庫
- 使用資料庫處理併發可能導致的問題資料庫
- 容器網路防火牆狀態異常導致丟包排查記錄防火牆
- Oracle資料庫導致效能問題的可能原因Oracle資料庫
- 資料庫升級造成的X_$BH狀態異常問題資料庫
- crontab導致CPU異常的問題分析及處理
- 資料庫恢復狀態可能導致JOB無法自動執行資料庫
- openssl客戶端程式設計:一個不起眼的函式導致的SSL會話失敗問題客戶端程式設計函式會話
- 序列異常導致災備端應用異常處理一則
- 專案分享九:客戶端的異常處理客戶端
- WCF服務端丟擲的異常會跑到客戶端服務端客戶端
- 電網會否因網路問題而異常?
- 資料庫主機名錯誤導致客戶端TNS-12541資料庫客戶端
- 客戶端無法連線資料庫的小問題客戶端資料庫
- HA異常導致oracle資料庫無法啟動Oracle資料庫
- SCN異常增長導致資料庫異常關閉風險的防範資料庫
- 作業系統Win7或Win8客戶端連線異常緩慢問題作業系統Win7客戶端
- 同事處理異常斷電資料庫狀態變為SUSPECT過程資料庫
- Oracle 資料庫不一致導致異常的恢復Oracle資料庫
- 華為交換機LLDP震盪導致網路異常
- LightDB/Postgresql 記錄客戶端啟動版本問題導致啟動失敗問題SQL客戶端
- 【YashanDB知識庫】資料庫審計shutdown immediate操作導致資料庫異常退出資料庫
- shutdown資料庫後提示資料庫處於running狀態資料庫
- 模態對話方塊可能導致程式崩潰
- ChromeHSTS異常導致無法訪問HTTPS網頁ChromeHTTP網頁
- 客戶端連不上資料庫客戶端資料庫
- 非歸檔模式下異常斷電導致的資料庫無法啟動的問題修復模式資料庫
- JPA 二級快取 網路多播協議導致的資料庫效能問題快取協議資料庫
- 網路爬蟲(三):異常的處理和HTTP狀態碼的分類爬蟲HTTP
- memlock過低導致的資料庫效能問題資料庫
- 關於go和資料庫連線,客戶端以及驅動的疑問?Go資料庫客戶端
- JAVA FTP客戶端問題JavaFTP客戶端
- crontab設定導致的伺服器程式異常問題伺服器
- MQTT 客戶端應用及常見問題(C#)MQQT客戶端C#
- 網路問題導致更多的資料中心中斷
- 升級可能導致資料庫不可用(二)資料庫
- 升級可能導致資料庫不可用(一)資料庫
- MySQL:MySQL客戶端快取結果導致OOMMySql客戶端快取OOM