死連線或不活動會話_DB處理機制
檢視僵死程式(process引數大於session,一個process可能對應1個或多個session)
select * from v$process where addr not in (select paddr from v$session) and pid not in (1,17,18)
Dead connections:死連線(處理方法SQLNET.EXPIRE_TIME)
These are previously valid connections with the database but the connection between the client and server processes has terminate abnormally.有些之前合法的連線,但是由於客戶端和伺服器程式的異常中斷,這種情況下,後臺程式跑在伺服器端,而會話在資料庫端不會中斷。當死連線啟動,NET8(服務端)會傳送一個包到客戶端。如果客戶端是活動的,這個包就被丟掉。如果客戶端已經被中斷,伺服器端將接收一個錯誤,將會中斷該會話。
INACTIVE Sessions:不活動會話(處理方法profile.IDLE_TIME)
These are sessions that remain connected to the database with a status in v$session of INACTIVE.
使用者開始一個會話,執行一段時間後,保持相當一段時間的空閒。會話與伺服器端保持連線,但是狀態為inactive.
DCD的具體原理:
DCD是Dead Connection Detectio縮寫,當一個新的資料庫連線建立後,SQL*Net讀取引數檔案的SQLNET.EXPIRE_TIME設定(如果設定了的話),在服務端初始化DCD,DCD會為這個連線建立一個定時器,當該定時器超過SQLNET.EXPIRE_TIME指定時間間隔後,就會向客戶端傳送一個probe package(偵測包),該包實質上是一個空的SQL*NET包,不包括任何有用資料,它僅在底層協議上建立了資料流。如果此時客戶端連線還是正常的話,那麼這個probe package就會被客戶端直接丟棄,然後Oracle伺服器就會把該連線對應的定時器重新復位。如果客戶異常退出的話,偵測包由客戶端的IP層交到TCP層時,就會發現原先的連線已經不存在了,然後TCP層就會返回錯誤資訊,該資訊被ORACLE服務端接收到後,ORACLE就會知道該連線已經不可用了,於是SQL*NET就會向作業系統傳送訊息,釋放該連線的相關資源。
select * from v$process where addr not in (select paddr from v$session) and pid not in (1,17,18)
Dead connections:死連線(處理方法SQLNET.EXPIRE_TIME)
These are previously valid connections with the database but the connection between the client and server processes has terminate abnormally.有些之前合法的連線,但是由於客戶端和伺服器程式的異常中斷,這種情況下,後臺程式跑在伺服器端,而會話在資料庫端不會中斷。當死連線啟動,NET8(服務端)會傳送一個包到客戶端。如果客戶端是活動的,這個包就被丟掉。如果客戶端已經被中斷,伺服器端將接收一個錯誤,將會中斷該會話。
INACTIVE Sessions:不活動會話(處理方法profile.IDLE_TIME)
These are sessions that remain connected to the database with a status in v$session of INACTIVE.
使用者開始一個會話,執行一段時間後,保持相當一段時間的空閒。會話與伺服器端保持連線,但是狀態為inactive.
DCD的具體原理:
DCD是Dead Connection Detectio縮寫,當一個新的資料庫連線建立後,SQL*Net讀取引數檔案的SQLNET.EXPIRE_TIME設定(如果設定了的話),在服務端初始化DCD,DCD會為這個連線建立一個定時器,當該定時器超過SQLNET.EXPIRE_TIME指定時間間隔後,就會向客戶端傳送一個probe package(偵測包),該包實質上是一個空的SQL*NET包,不包括任何有用資料,它僅在底層協議上建立了資料流。如果此時客戶端連線還是正常的話,那麼這個probe package就會被客戶端直接丟棄,然後Oracle伺服器就會把該連線對應的定時器重新復位。如果客戶異常退出的話,偵測包由客戶端的IP層交到TCP層時,就會發現原先的連線已經不存在了,然後TCP層就會返回錯誤資訊,該資訊被ORACLE服務端接收到後,ORACLE就會知道該連線已經不可用了,於是SQL*NET就會向作業系統傳送訊息,釋放該連線的相關資源。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2134380/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 死連線_linux_OS處理機制Linux
- active會話不斷增多案例處理會話
- tomcat連線處理機制和執行緒模型Tomcat執行緒模型
- 保持會話連線會話
- oracle 會話,連線Oracle會話
- 查詢處理死鎖會話的sql語句(轉貼)會話SQL
- db支援共享模式連線的話shutdown通常會很慢(dispatcher shutdown)模式
- Redis處理客戶端連線的內部實現機制RXRedis客戶端
- 在 SQL Server 中查詢活動連線和死鎖SQLServer
- Android後臺殺死系列之一:FragmentActivity及PhoneWindow後臺殺死處理機制AndroidFragment
- 異常處理機制
- 深入 Go 的錯誤處理機制,學會如何使用Go
- 監控並處理一直不釋放資源的會話會話
- SQL Server如何判斷哪些會話/連線是長連線?SQLServer會話
- 基於token的會話保持機制會話
- Java異常處理機制Java
- redis的事件處理機制Redis事件
- Java——事件處理機制概要Java事件
- Laravel Sessionid 處理機制LaravelSession
- C#事件處理機制C#事件
- 部分藍芽耳機 電腦 連線 不暢 的處理辦法藍芽
- 資料處理,會“說話”的大機器——資料資訊圖
- 處理方塊之間的連線線
- Oracle 死鎖處理Oracle
- Oracle死鎖處理Oracle
- 檢視當前pg會話連線數會話
- Weblogic Server連線池建立會話慢WebServer會話
- 程式、會話、連線之間的差異會話
- postgresql連線失敗如何處理SQL
- windows 處理bat連線本地mysqlWindowsBATMySql
- 行連線的處理方式指引
- [JS] Ajax請求會話過期處理JS會話
- oracle10g會話跟蹤處理Oracle會話
- php中關於會話機制的理解PHP會話
- 08.異常處理機制
- java中的垃圾處理機制Java
- C++異常處理機制C++
- java異常的處理機制Java