我的會話(session)在做什麼? (轉)
原文作者:John Weeg
當一個坐在的終端前的提交了一個查詢卻等不出結果,這很是讓人恢心的。他們很希望語句執行正常,但他們卻不知道實際上是怎麼樣的。因些讓我們找出一個辦法來消除他們的擔心。
你是誰?
第一個問題當然指的是我們正在提及的是哪個會話?使用者可以在做其它事情前用如下的語句得它:
sid from v$mystat where rownum=1;
實際上,直到你提交的語句執行很正常時這個問題才不會被提出,如果使用者有一個唯一的使用者名稱,那麼你可以用如下語句得到那個SID,比如查使用者JOHN的SID.
select sid,machine,osuser,module from v$session where username='JOHN';
SID MACHINE OSUSER MODULE
----- -------------------- ------------------------------ ----------
150 MSHOMEJOHN-LAPTOP John?Weeg *Plus
我用其它的一些資訊校驗這恰恰是我的會話
糟糕一點的是共享使用者名稱被使用的狀況,因些我們將需要看一下哪些會話正在執行:
break on sid sk1
column sid format 99999
column sql_text foa64
select a.sid, a.last_call_et ,b.sql_text
from v$session a
,v$sqltext b
where a.username is not null
and a.status = 'ACTIVE'
and a.sql_address = b.address
order by a.last_call_et,a.sid,b.piece;
這給出了我們正在目前正在執行的語句和多長時間,你應該就能能夠看出哪一個會話你需要檢查一下。
因些,接著應做什麼?
我們知道通常在語句這段時間伴隨著等待,正在執行操作,或正在執行IO操作。透過v$sessstat,v$sessio,v$session_wait這三張表我們可以得到我們想知道的一些資訊,可以透過SID去單查我們觀注的一個表,但我發現很被容易把這些資訊結合在一起。
Column event format a30
Column sid format 9999
Column session_cpu heading "CPU|used"
Column physical_reads heading "physical|reads"
Column consistent_gets heading "logical|reads"
Column seconds_in_wait heading "seconds|waiting"
select a.sid, a.value session_cpu, c.physical_reads,
c.consistent_gets,d.event,d.seconds_in_wait
from v$sesstat a,v$statname b, v$sess_io c, v$session_wait d
where a.sid=150
and b.name = 'CPU used by this session'
and a.statisti = b.statistic#
and a.sid=c.sid
and a.sid=d.sid;
我執行這個語句幾次,因為我們需要找出哪些項在變化。
CPU physical logical seconds
SID used reads reads EVENT waiting
--- ----- --------- -------- ------------------------------ ----------
150 1159 0 117476 SQL message from client 5
/
CPU physical logical seconds
SID used reads reads EVENT waiting
--- ----- --------- -------- ------------------------------ ----------
150 1970 0 204484 SQL*Net message from client 4
因些我們可以看到這個會話在我們檢查時正在等待客戶端的資訊。在我們兩次檢查的期間它執行了邏輯讀的操作並消耗了CPU資源,這說明會話執行是正常的。
什麼情況下我們需要進一步檢查?
通常有這麼幾個事件(event)標識潛在存在問題:'buffer busy waits',' file sequential read','db file scattered read','free buffer waits','latch free',對於前4上事件,我們可以找出相關的是哪個,如下語句:
select owner,segment_name,segment_type
from (select p1 file#, p2 block# from v$session_wait
where sid = 150
and event in ('buffer busy waits'
,'db file sequential read'
,'db file scattered read'
,'free buffer waits')) b
,_extents a
where a.file_id = b.file#
and b.block# between a.block_id and (a.block_id+blocks-1);
這裡我們能夠發現IO等待是由於大量的資料訪問引起的,還是由有些東西不對比如丟失引起的,我們也可以去掉SID子句那行找出那些正在經歷等待的物件。
對於最後一個潛在的問題我們可以查正在等待什麼栓(latch):
select name
from (select p2 latch# from v$session_wait
where sid = 150
and event in ('latch free')) b
,v$latchname a
where a.latch# = b.latch#;
我們可以看到是不是會話經歷栓的衝突,這個衝突是不是經常發生的
使你的使用者輕鬆下來
因此,你現在要可以告訴那些不安的使用者他們執行的語句在等待一些其它的資源。我最終的做法是幫助他們那些語句,以使語句不至於執行得太慢使使用者不安。
(全文完)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-981959/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 我的會話(session)在做什麼?會話Session
- 我的會話session在做什麼?會話Session
- Session會話Session會話
- Cassandra的Session會話Session會話
- Oracle 會話(Session)Oracle會話Session
- 為什麼我的.htaccess檔案會被忽略(轉)
- 為什麼sleeping的會話會造成阻塞會話
- 會話技術之 Session會話Session
- Session會話管理(PHP,Apacha)Session會話PHP
- oracle session(會話) 跟蹤OracleSession會話
- 【會話】Oracle kill session系列會話OracleSession
- 會話等待(Session Waits)會話SessionAI
- 【會話】V$SESSION檢視會話Session
- 用大白話告訴你 :Java 後端到底是在做什麼?Java後端
- 為什麼sleeping的會話會造成阻塞(2)會話
- session會話的底層實現方式Session會話
- 批量kill殺死某些會話session的plsql會話SessionSQL
- App啟動之Dyld在做什麼APP
- ssl會話建立的過程(原理)是什麼?會話
- 什麼樣的類需要作成EJB(會話Bean)?會話Bean
- 會話統計資訊session_pkg會話Session
- 次世代的會話管理專案 Spring Session會話SpringSession
- 在做專案之前首先考慮什麼?
- 令牌Token和會話Session原理與攻略會話Session
- ZooKeeper如何模擬會話失效(Session Expired)會話Session
- MQTT 持久會話與 Clean Session 詳解MQQT會話Session
- Session會話與Cookie簡單說明Session會話Cookie
- 檢視當前會話session id方法:會話Session
- 通過active_session_history我們能得到什麼Session
- 什麼時候用有狀態session bean,什麼時候用無狀態session bean (轉)SessionBean
- 什麼是cookie,什麼是sessionCookieSession
- 為什麼我做的Android app會那麼卡?AndroidAPP
- 為什麼我會重回到Windows的懷抱?Windows
- 玩家會在什麼情景下玩我的遊戲?遊戲
- oracle如何找出登入會話v$session的IP地址?Oracle會話Session
- Java 程式設計師每天都在做什麼?Java程式設計師
- 首席資料官CDO們都在做什麼?
- 如何判斷程式設計師在做什麼?程式設計師