日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

oracle session_wait,转载:学习Oracle动态性能表-(8)-V$SESSION_WAIT,V$SESSION_EVENT

發(fā)布時間:2024/7/19 ChatGpt 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle session_wait,转载:学习Oracle动态性能表-(8)-V$SESSION_WAIT,V$SESSION_EVENT 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

(1)-V$SESSION_WAIT

這是一個尋找性能瓶頸的關(guān)鍵視圖。它提供了任何情況下session在數(shù)據(jù)庫中當前正在等待什么(如果session當前什么也沒在做,則顯示它最后的等待事件)。當系統(tǒng)存在性能問題時,本視圖可以做為一個起點指明探尋問題的方向。

V$SESSION_WAIT中,每一個連接到實例的session都對應(yīng)一條記錄。

V$SESSION_WAIT中的常用列

lSID: session標識

lEVENT: session當前等待的事件,或者最后一次等待事件。

lWAIT_TIME: session等待事件的時間(單位,百分之一秒)如果本列為0,說明session當前session還未有任何等待。

lSEQ#: session等待事件將觸發(fā)其值自增長

lP1, P2, P3: 等待事件中等待的詳細資料

lP1TEXT, P2TEXT, P3TEXT: 解釋說明p1,p2,p3事件

附注:

1.State字段有四種含義﹕

(1)Waiting:SESSION正等待這個事件。

(2)Waited unknown time:由于設(shè)置了timed_statistics值為false,導(dǎo)致不能得到時間信息。表示發(fā)生了等待,但時間很短。

(3)Wait short time:表示發(fā)生了等待,但由于時間非常短不超過一個時間單位,所以沒有記錄。

(4)Waited knnow time:如果session等待然后得到了所需資源,那么將從waiting進入本狀態(tài)。

2.Wait_time值也有四種含義:

(1)值>0:最后一次等待時間(單位:10ms),當前未在等待狀態(tài)。

(2)值=0:session正在等待當前的事件。

(3)值=-1:最后一次等待時間小于1個統(tǒng)計單位,當前未在等待狀態(tài)。

(4)值=-2:時間統(tǒng)計狀態(tài)未置為可用,當前未在等待狀態(tài)。

3.Wait_time和Second_in_wait字段值與state相關(guān):

(1)如果state值為Waiting,那么wait_time值無用。Second_in_wait值是實際的等待時間(單位:秒)。

(2)如果state值為Wait unknow time,那么wait_time值和Second_in_wait值都無用。

(3)如果state值為Wait short time,那么wait_time值和Second_in_wait值都無用。

(4)如果state值為Waiting known time,那么wait_time值就是實際等待時間(單位:秒),Second_in_wait值無用。

V$SESSION_WAIT中的連接列

Column??????? View?????? ?????? ?????? Joined Column(s)

SID?????? ?????? V$SESSION?? ?????? SID

示例:

1.列出當前系統(tǒng)的等待事件

SELECTevent,

sum(decode(wait_time,0,1,0)) "Curr",

sum(decode(wait_time,0,0,1)) "Prev",

count(*)"Total"

FROMv$session_waitGROUPBYeventORDERBYcount(*);

EVENT?? ?????? ?????? ?????? ?????? ?????? ?????? Prev?????? Curr?????? Tot

---------------------------------------------?????? ----??????? -----?????? -----

PL/SQL lock timer??????? ?????? ?????? ?????? 0???? ?????? 1???? ?????? 1

SQL*Net more data from client??? ?????? 0???? ?????? 1???? ?????? 1

smon timer???? ?????? ?????? ?????? ?????? ?????? 0???? ?????? 1???? ?????? 1

pmon timer???? ?????? ?????? ?????? ?????? ?????? 0???? ?????? 1???? ?????? 1

SQL*Net message to client??? ?????? ?????? 2???? ?????? 0???? ?????? 2

db file scattered read????? ?????? ?????? ?????? 2???? ?????? 0???? ?????? 2

rdbms ipc message?????? ?????? ?????? ?????? 0???? ?????? 7???? ?????? 7

Enqueue??????? ?????? ?????? ?????? ?????? ?????? 0???? ?????? 12??? ?????? 12

pipe get?? ?????? ?????? ?????? ?????? ?????? ?????? 0???? ?????? 12??? ?????? 12

db file sequential read???? ?????? ?????? ?????? 3???? ?????? 10??? ?????? 13

latch free?????? ?????? ?????? ?????? ?????? ?????? 9???? ?????? 6???? ?????? 15

SQL*Net message from client????? ?????? 835??????? 1380?????? 2215

這個按事件和wait_time的分組查詢列出下列的信息:

l多數(shù)的session都是空閑事件如:SQL*Net message from client, pipe get, PMON timer等。

lsession的cpu占用可以通過上次session的非等待事件大致算出,除此問題外:看起來多數(shù)session沒有在等待什么事情(難道他們都在干活?)但其最后等待事件都是SQL*Net message from client。

2.列出指定ID的等待事件

select*fromv$session_waitwheresid=100;

3.應(yīng)用p1,p2,p3進行等待事件的分析

v$session_wait視圖的列代表的緩沖區(qū)忙等待事件如下:

P1—與等待相關(guān)的數(shù)據(jù)文件的全部文件數(shù)量。

P2—P1中的數(shù)據(jù)文件的塊數(shù)量。

P3—描述等待產(chǎn)生原因的代碼。

例:selectp1 "File #", p2 "Block #", p3 "Reason Code"

fromv$session_wait

whereevent ='buffer busy waits';

如果以上查詢的結(jié)果顯示一個塊在忙等待,以下的查詢將顯示這一塊的名稱和類型:

selectowner, segment_name, segment_type

fromdba_extents

wherefile_id = &P1and&P2betweenblock_idandblock_id + blocks -1;

我們也可以查詢dba_data_files以確定等待的文件的file_name,方法是使用v$session_wait中的P1。

從v$session_wait中查詢P3(原因編碼)的值可以知道session等待的原因。原因編碼的范圍從0到300,下列為部分編碼所代表的事項:

0 塊被讀入緩沖區(qū)。

100 我們想要NEW(創(chuàng)建)一個塊,但這一塊當前被另一session讀入。

110 我們想將當前塊設(shè)為共享,但這一塊被另一session讀入,所以我們必須等待read()結(jié)束。

120 我們想獲得當前的塊,但其他人已經(jīng)將這一塊讀入緩沖區(qū),所以我們只能等待他人的讀入結(jié)束。

130 塊被另一session讀入,而且沒有找到其它協(xié)調(diào)的塊,所以我們必須等待讀的結(jié)束。緩沖區(qū)死鎖后這種情況也有可能產(chǎn)生。所以必須讀入塊的CR。

200 我們想新創(chuàng)建一個block,但其他人在使用,所以我們只好等待他人使用結(jié)束。

210 Session想讀入SCUR或XCUR中的塊,如果塊交換或者session處于非連續(xù)的TX模式,所以等待可能需要很長的時間。

220 在緩沖區(qū)查詢一個塊的當前版本,但有人以不合法的模式使用這一塊,所以我們只能等待。

230 以CR/CRX方式獲得一個塊,但塊中的更改開始并且沒有結(jié)束。

231 CR/CRX掃描找到當前塊,但塊中的更改開始并且沒有結(jié)束。

(2)-V$SESSION_EVENT

本視圖記錄了每個session的每一項等待事件。由上文所知V$SESSION_WAIT顯示了session的當前等待事件,而V$SESSION_EVENT則記錄了session自啟動起所有的事件。

V$SESSION_EVENT中的常用列

lSID:session標識

lEVENT:session等待的事件

lTOTAL_WAITS:此session當前事件的總等待數(shù)

lTIME_WAITED:此session總等待時間(單位,百分之一秒)

lAVERAGE_WAIT:此session當前事件平均等待時間(單位,百分之一秒)

lTOTAL_TIMEOUTS:等待超時次數(shù)

其它用法與V$SESSION_WAIT相似,不詳述了

附注:

Oracle的等待事件是衡量Oracle運行狀況的重要依據(jù)及指標。等待事件的概念是在Oracle7.0.1.2中引入的,大致有100個等待事件。在Oracle 8.0中這個數(shù)目增加到了大約150個,在Oracle8i中大約有200個事件,在Oracle9i中大約有360個等待事件。主要有兩種類別的等待事件,即空閑(idle)等待事件和非空閑(non-idle)等待事件。

關(guān)于空閑事件和非空閑事件目前通過google可以搜索到非常多詳盡的相關(guān)信息,同時

Oracle Database Performance Tuning Guide and Reference中關(guān)于Wait Events也有非常詳盡的描述,在此就不多費口舌了。不過我在itpub論壇看到有熱心人整理的chm格式非空閑事件說明,有興趣的朋友可以下載,鏈接如下:

非空閑事件說明

詳見:http://www.itpub.net/728733.html

總結(jié)

以上是生活随笔為你收集整理的oracle session_wait,转载:学习Oracle动态性能表-(8)-V$SESSION_WAIT,V$SESSION_EVENT的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。