溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

ORACLE sid,pid,spid和v$session中的saddr,paddr和taddr示例分析

發(fā)布時(shí)間:2021-12-17 17:02:46 來源:億速云 閱讀:471 作者:柒染 欄目:關(guān)系型數(shù)據(jù)庫

本篇文章為大家展示了ORACLE sid,pid,spid和v$session中的saddr,paddr和taddr示例分析,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

概念上:
1.spid (system process id)  是操作系統(tǒng)層面的進(jìn)程id .
2.pid(process id)  這個(gè)是基于oracle的進(jìn)程id個(gè)人理解為就是oracle給自己的進(jìn)程的一個(gè)編號(hào)。
3.sid.(這個(gè)就是session 的id) 這個(gè)個(gè)人理解為,就是有人在同oracle連接會(huì)話,oracle為其分配的一個(gè)編號(hào)。長用于連接其他列。

v$session中的saddr,paddr和taddr

saddr(session address):表示當(dāng)前記錄的內(nèi)存地址;

paddr(process address):該session對應(yīng)的進(jìn)程地址,關(guān)聯(lián)v$process的addr字段,可以通過這個(gè)字段查處當(dāng)前session對應(yīng)操作系統(tǒng)的那個(gè)進(jìn)程的id;

taddr(transation address):當(dāng)前有活動(dòng)事務(wù)的地址,關(guān)聯(lián)v$transaction表的addr,通過這個(gè)字段關(guān)聯(lián)查出當(dāng)前session正在使用的回滾段的情況,以及當(dāng)前事務(wù)的大小等信息


說道這還的和幾個(gè)動(dòng)態(tài)性能視圖聯(lián)系起來。
1.v$process視圖  
此視圖包含當(dāng)前系統(tǒng)中oracle的所有的進(jìn)程信息,常被用于將oracle或服務(wù)進(jìn)程的操作系統(tǒng)進(jìn)程ID與數(shù)據(jù)庫session之間建立聯(lián)系。
常用列: 
         ADDR:進(jìn)程對象地址 
         PID:oracle進(jìn)程ID 
         SPID:操作系統(tǒng)進(jìn)程ID 
         V$PROCESS中的連接列 ADDR 通常與V$SESSION PADDR相連接。
如:select p.addr,P.PID,P.PID, s.paddr from v$process p,v$session s
where P.ADDR=S.PADDR
2.v$session視圖
         V$SESSION是基礎(chǔ)信息視圖,用于找尋用戶SID或SADDR。不過,它也有一些列會(huì)動(dòng)態(tài)的變化,可用于檢查用戶。
常用列: 
         SID:SESSION標(biāo)識(shí),常用于連接其它列。 
         SERIAL#:如果某個(gè)SID又被其它的session使用的話則此數(shù)值自增加(當(dāng)一個(gè)SESSION結(jié)束,另一個(gè)SESSION開始并使用了同一個(gè)SID)。
         AUDSID:審查session ID唯一性,確認(rèn)它通常也用于當(dāng)尋找并行查詢模式 
         USERNAME:當(dāng)前session在oracle中的用戶名。 
         STATUS:這列用來判斷session狀態(tài)是: 
         Achtive:正執(zhí)行SQL語句(waiting for/using a resource) 
         Inactive:等待操作(即等待需要執(zhí)行的SQL語句) 
         Killed:被標(biāo)注為刪除 
         paddr, process addr, 通過這個(gè)字段我們可以查看當(dāng)前進(jìn)程的相關(guān)信息, 系統(tǒng)進(jìn)程id,操作系統(tǒng)用戶信息等等. 
         (sql_address,sql_hash_value) (prev_sql_addr,prev_hash_value) 根據(jù)這兩組字段, 我們可以查詢到當(dāng)前session正在執(zhí)行的sql語句的詳細(xì)
3.v$sqltext視圖
        此視圖包括共享池(share poll)中sql語句的完整文本,一條sql語句可能被分成多個(gè)快被保存。
常用列: 
         HASH_VALUE:SQL語句的Hash值 
         ADDRESS:sql語句在SGA中的地址 
         SQL_TEXT:SQL文本。 
         PIECE:SQL語句塊的序號(hào) 
V$SQLTEXT中的連接列 
Column                                 View                             Joined Column(s)
HASH_VALUE, ADDRESS                  V$SQL, V$SESSION          HASH_VALUE, ADDRESS
HASH_VALUE. ADDRESS                  V$SESSION                   SQL_HASH_VALUE, SQL_ADDRESS
按pid查看正在執(zhí)行的程序: 
         select sid,program from v$session b where paddr in (select addr from v$process where spid=$pid);
按pid查看正在執(zhí)行的sql語句 
         select sql_text from v$sqltext where hash_value in (select sql_hash_value from v$session where   
         PADDR in (select addr from v"$process where spid=$pid)) order by piece; 
4.V$SESSION_WAIT視圖 
         這是一個(gè)尋找性能瓶頸的關(guān)鍵視圖。它提供了任何情況下session在數(shù)據(jù)庫中當(dāng)前正在等待什么(如果session當(dāng)前什么也沒在做,則顯示它最后的等待事件)。當(dāng)系統(tǒng)存在性能問題時(shí),本視圖可以做為一個(gè)起點(diǎn)指明探尋問題的方向。
         V$SESSION_WAIT中,每一個(gè)連接到實(shí)例的session都對應(yīng)一條記錄。 
常用列: 
         SID: session標(biāo)識(shí) 
         EVENT: session當(dāng)前等待的事件,或者最后一次等待事件。 
         WAIT_TIME: session等待事件的時(shí)間(單位,百分之一秒)如果本列為0,說明session當(dāng)前session還未有任何等待。 
         SEQ#: session等待事件將觸發(fā)其值自增長 
         P1, P2, P3: 等待事件中等待的詳細(xì)資料 
         P1TEXT, P2TEXT, P3TEXT: 解釋說明p1,p2,p3事件 
附注: 
         1.State字段有四種含義: 
         Waiting:SESSION正等待這個(gè)事件。 
         Waited unknown time:由于設(shè)置了timed_statistics值為false,導(dǎo)致不能得到時(shí)間信息。表示發(fā)生了等待,但時(shí)間 
很短
         Wait short time:表示發(fā)生了等待,但由于時(shí)間非常短不超過一個(gè)時(shí)間單位,所以沒有記錄。 
         Waited knnow time:如果session等待然后得到了所需資源,那么將從waiting進(jìn)入本狀態(tài)。 
         Wait_time值也有四種含義: 
值>0:最后一次等待時(shí)間(單位:10ms),當(dāng)前未在等待狀態(tài)。 
         值=0:session正在等待當(dāng)前的事件。 
         值=-1:最后一次等待時(shí)間小于1個(gè)統(tǒng)計(jì)單位,當(dāng)前未在等待狀態(tài)。 
         值=-2:時(shí)間統(tǒng)計(jì)狀態(tài)未置為可用,當(dāng)前未在等待狀態(tài)。 
3.Wait_time和Second_in_wait字段值與state相關(guān): 
         如果state值為Waiting,那么wait_time值無用。Second_in_wait值是實(shí)際的等待時(shí)間(單位:秒)。 
         如果state值為Wait unknow time,那么wait_time值和Second_in_wait值都無用。 
         如果state值為Wait short time,那么wait_time值和Second_in_wait值都無用。 
         如果state值為Waiting known time,那么wait_time值就是實(shí)際等待時(shí)間(單位:秒),Second_in_wait值無用。
V$SESSION_WAIT中的連接列 
Column View Joined Colum 
SID V$SESSION SID 
查看session等待事件: 
         select sid,event from v$session_wait where event not like ’rdbms%’ and event not like ’SQL*Net message%’;
         多數(shù)的session都是空閑事件如:SQL*Net message from client, pipe get, PMON timer等

上述內(nèi)容就是ORACLE sid,pid,spid和v$session中的saddr,paddr和taddr示例分析,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI