三思筆記動態(tài)性能視圖_第1頁
三思筆記動態(tài)性能視圖_第2頁
三思筆記動態(tài)性能視圖_第3頁
三思筆記動態(tài)性能視圖_第4頁
三思筆記動態(tài)性能視圖_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

學(xué)習(xí)動態(tài)性能表

第一篇"v$sysstat2007.5.23

按照OracleDocument中的描述,v$sysstat存儲自數(shù)據(jù)庫實(shí)例運(yùn)行那刻起就開始

累計(jì)全實(shí)例(instance-wide的資源使用情況。

類似于v$sesstat,該視圖存儲下列的統(tǒng)計(jì)信息:

1>.事件發(fā)生次數(shù)的統(tǒng)計(jì)(如:usercommits

2〉.數(shù)據(jù)產(chǎn)生,存取或者操作的total列(如:redosize

3>.如果TIMED_STATISTICS值為true,則統(tǒng)計(jì)花費(fèi)在執(zhí)行操作上的總時(shí)間

(如:CPUusedbythissession

v$sysstat視圖常用列介紹:

?STATISTIC#:標(biāo)識

?NAME:統(tǒng)計(jì)項(xiàng)名稱

?VALUE:資源使用量

該視圖還有一列class-統(tǒng)計(jì)類別但極少會被使用,各類信息如下:

1代表事例活動

2代表Redobuffer活動

4代表鎖

8代表數(shù)據(jù)緩沖活動

16代表OS活動

32代表并行活動

64代表表訪問

128代表調(diào)試信息

注意Statistic#的值在不同版本中各不相同,使用時(shí)要用Name做為查詢條件而

不要以statistic#的值做為條件。

使用v$sysstat中的數(shù)據(jù)

該視圖中數(shù)據(jù)常被用于監(jiān)控系統(tǒng)性能。如buffercache命中率、軟解析率等都

可從該視圖數(shù)據(jù)計(jì)算得出。

該視圖中的數(shù)據(jù)也被用于監(jiān)控系統(tǒng)資源使用情況,以及系統(tǒng)資源利用率的變

化。正因如此多的性能數(shù)據(jù),檢查某區(qū)間內(nèi)系統(tǒng)資源使用情況可以這樣做,在一個(gè)

時(shí)間段開始時(shí)創(chuàng)建一個(gè)視圖數(shù)據(jù)快照,結(jié)束時(shí)再創(chuàng)建一個(gè),二者之間各統(tǒng)計(jì)項(xiàng)值的不

同(endvalue-beginvalue即是這一時(shí)間段內(nèi)的資源消耗情況。這是oracle工具的

常用方法,諸如Statspack以及BSTAT/ESTAT都是如此。

為了對比某個(gè)區(qū)間段的數(shù)據(jù),源數(shù)據(jù)可以被格式化(每次事務(wù),每次執(zhí)行,每秒鐘

或每次登陸,格式化后數(shù)據(jù)更容易從兩者中鑒別出差異。這類的對比在升級前,升級

后或僅僅想看看一段時(shí)間內(nèi)用戶數(shù)量增長或數(shù)據(jù)增加如何影響資源使用方面更加

實(shí)用。

你也可以使用v$sysstat數(shù)據(jù)通過查詢v$system_event視圖來檢查資源消耗和

資源回收。

V$SYSSTAT中的常用統(tǒng)計(jì)

V$SYSSTAT中包含多個(gè)統(tǒng)計(jì)項(xiàng),這部分介紹了一些關(guān)鍵的v$sysstat統(tǒng)計(jì)項(xiàng),在

調(diào)優(yōu)方面相當(dāng)有用。下列按字母先后排序:

數(shù)據(jù)庫使用狀態(tài)的一些關(guān)鍵指標(biāo):

?CPUusedbythissession:所有session的cpu占用量,不包括后臺進(jìn)程。這項(xiàng)統(tǒng)

計(jì)的單位是百分之x秒.完全調(diào)用一次不超過10ms

?dbblockchanges:那部分造成SGA中數(shù)據(jù)塊變化的insert,update或delete操作

數(shù)這項(xiàng)統(tǒng)計(jì)可以大概看出整體數(shù)據(jù)庫狀態(tài)。在各項(xiàng)事務(wù)級別,這項(xiàng)統(tǒng)計(jì)指出臟緩存

比率。

?executecount:執(zhí)行的sql語句數(shù)量(包括遞歸sql

?logonscurrent:當(dāng)前連接到實(shí)例的Sessions。如果當(dāng)前有兩個(gè)快照則取平均

值。?logonscumulative:自實(shí)例啟動后的總登陸次數(shù)。

?parsecount(hard:在sharedpool中解析調(diào)用的未命中次數(shù)。當(dāng)sql語句執(zhí)行并

且該語句不在sharedpool或雖然在sharedpool但因?yàn)閮烧叽嬖诓糠植町惗荒鼙?/p>

使用時(shí)產(chǎn)生硬解析。如果一條sql語句原文與當(dāng)前存在的相同,但查詢表不同則認(rèn)

為它們是兩條不同語句,則硬解析即會發(fā)生。硬解析會帶來cpu和資源使用的高昂

開銷,因?yàn)樗枰猳racle在sharedpool中重新分配內(nèi)存,然后再確定執(zhí)行計(jì)劃,最終語

句才會被執(zhí)行。

?parsecount(tota上解析調(diào)用總數(shù),包括軟解析和硬解析。當(dāng)session執(zhí)行了一條

sql語句,該語句已經(jīng)存在于sharedpool并且可以被使用則產(chǎn)生軟解析。當(dāng)語句被

使用(即共享所有數(shù)據(jù)相關(guān)的現(xiàn)有sql語句(如最優(yōu)化的執(zhí)行計(jì)劃必須同樣適用于

當(dāng)前的聲明。這兩項(xiàng)統(tǒng)計(jì)可被用于計(jì)算軟解析命中率。

?parsetimecpu:總cpu解析時(shí)間(單位:10ms。包括硬解析和軟解析。

?parsetimeelapsed:完成解析調(diào)用的總時(shí)間花費(fèi)。

?physicalreads:OSblocksread數(shù)。包括插入到SGA緩存區(qū)的物理讀以及PGA

中的直讀這項(xiàng)統(tǒng)計(jì)并非V。請求數(shù)。

?physicalwrites:從SGA緩存區(qū)被DBWR寫到磁盤的數(shù)據(jù)塊以及PGA進(jìn)程直

寫的數(shù)據(jù)塊數(shù)量。

?redologspacerequests:在redologs中服務(wù)進(jìn)程的等待空間,表示需要更長時(shí)間

的logswitch。

?redosize:redo發(fā)生的總次數(shù)(以及因此寫入logbuffer,以byte為單位。這項(xiàng)統(tǒng)

計(jì)顯示出update活躍性。

?sessionlogicalreads:邏輯讀請求數(shù)。

?sorts(memoryandsorts(disk:sorts(memory是適于在SORT_AREA_SIZE(因此

不需要在磁盤進(jìn)行排序的排序操作的數(shù)量。sorts(disk則是由于排序所

需空間太大,SORT_AREA_SIZE不能滿足而不得不在磁盤進(jìn)行排序操作的數(shù)

量。這兩項(xiàng)統(tǒng)計(jì)通常用于計(jì)算in-memorysortratioo

?sorts(rows:列排序總數(shù)。這項(xiàng)統(tǒng)計(jì)可被'sorts(total統(tǒng)計(jì)項(xiàng)除盡以確定每次排

序的列。該項(xiàng)可指出數(shù)據(jù)卷和應(yīng)用特征。

?tablefetchbyrowid:使用ROWID返回的總列數(shù)(由于索弓I訪問或sql語句中

使用了'whererowid=&rowid'而產(chǎn)生

?tablescans(rowsgotten:全表掃描中讀取的總列數(shù)

?tablescans(blocksgotten:全表掃描中讀取的總塊數(shù),不包括那些split的列。

?usercommits+userrollbacks:系統(tǒng)事務(wù)起用次數(shù)。當(dāng)需要計(jì)算其它統(tǒng)計(jì)中每

項(xiàng)事務(wù)比率

時(shí)該項(xiàng)可以被做為除數(shù)。例如,計(jì)算事務(wù)中邏輯讀,可以使用下列公式:session

logicalreads/(usercommits+userrollbackso

注SQL語句的解析有軟解析softparse與硬解析hardparse之說,以下是5個(gè)步

驟:1:語法是否合法(sql寫法

2:語義是否合法(權(quán)限,對象是否存在

3:檢查該sql是否在共享池中存在

-如果存在,直接跳過4和5,運(yùn)行sql.此時(shí)算softparse

4:選擇執(zhí)行計(jì)劃

5:產(chǎn)生執(zhí)行計(jì)劃

-如果5個(gè)步驟全做,這就叫hardparse.

注意物理I/O

oracle報(bào)告物理讀也許并未導(dǎo)致實(shí)際物理磁盤I/O操作。這完全有可能因?yàn)槎?/p>

數(shù)操作系統(tǒng)都有緩存文件,可能是那些塊在被讀取。塊也可能存于磁盤或控制級緩

存以再次避免實(shí)際I/。。Oracle報(bào)告有物理讀也許僅僅表示被請求的塊并不在緩存

中。

由V$SYSSTAT得出實(shí)例效率比(InstanceEfficiencyRatios

下列是些典型的instanceefficiencyratios由v$sysstat數(shù)據(jù)計(jì)算得來,每項(xiàng)比率

值應(yīng)該盡可能接近1:

?Buffercachehitratio:該項(xiàng)顯示buffercache大小是否合適。

公式:1-((physicalreads-physicalreadsdirect-physicalreadsdirect(lob/session

logicalreads執(zhí)行:

select1-((a.value-b.value-c.value/d.value

fromv$sysstata,v$sysstatb,v$sysstatc,v$sysstatd

where='physicalreads'and

=,physicalreadsdirect'and

='physicalreadsdirect(lob'and

='sessionlogicalreads*;

?Softparseratio:這項(xiàng)將顯示系統(tǒng)是否有太多硬解析。該值將會與原始統(tǒng)計(jì)數(shù)據(jù)

對比以確保精確。例如,軟解析率僅為0.2則表示硬解析率太高。不過,如果總解析

量(parsecounttotal偏低,這項(xiàng)值可以被忽略。

公式:1-(parsecount(hard/parsecount(total

執(zhí)行:

select1-(a.value/b.value

fromv$sysstata,v$sysstatb

Wherea.name=,parsecount(hard'andb.name=,parsecount(total*;

?In-memorysortratio:該項(xiàng)顯示內(nèi)存中完成的排序所占比例。最理想狀態(tài)下,在

OLTP系統(tǒng)中,大部分排序不僅小并且能夠完全在內(nèi)存里完成排序。

公式:sorts(memory/(sorts(memory+sorts(disk

執(zhí)行:

selecta.value/(b.value+c.value

fromv$sysstata,v$sysstatb,v$sysstatc

where=,sorts(memory'and

='sorts(memory*andc.name=*sorts(disk,;

?Parsetoexecuteratio:在生產(chǎn)環(huán)境,最理想狀態(tài)是一條sql語句一次解析多數(shù)運(yùn)

行。公式:1-(parsecount/executecount

執(zhí)行:

select1-(a.value/b.value

fromv$sysstata,v$sysstatb

where='parsecount(totaFand='executecount;

?ParseCPUtototalCPUratio:該項(xiàng)顯示總的CPU花費(fèi)在執(zhí)行及解析上的比

率。如果這項(xiàng)比率較低,說明系統(tǒng)執(zhí)行了太多的解析。

公式:1-(parsetimecpu/CPUusedbythissession

執(zhí)行:

select1-(a.value/b.value

fromv$sysstata,v$sysstatb

where='parsetimecpu'and

='CPUusedbythissession*;

?ParsetimeCPUtoparsetimeelapsed:通常,該項(xiàng)顯示鎖競爭比率。這項(xiàng)比率計(jì)

算是否時(shí)間花費(fèi)在解析分配給CPU進(jìn)行周期運(yùn)算(即生產(chǎn)工作。解析時(shí)間花費(fèi)不

在CPU周期運(yùn)算通常表示由于鎖競爭導(dǎo)致了時(shí)間花費(fèi)

公式:parsetimecpu/parsetimeelapsed

執(zhí)行:

selecta.value/b.value

fromv$sysstata,v$sysstatb

where='parsetimecpu'and=,parsetimeelapsed*;從V$SYSSTAT

獲取負(fù)載間檔(LoadProfile數(shù)據(jù)

負(fù)載間檔是監(jiān)控系統(tǒng)吞吐量和負(fù)載變化的重要部分,該部分提供如下每秒和每

個(gè)事務(wù)的統(tǒng)計(jì)信息:logonscumulative,parsecount(total,parsecount(hard,executes,

physicalreads,physicalwrites,blockchanges,andredosize.

被格式化的數(shù)據(jù)可檢查‘rates,是否過高,或用于對比其它基線數(shù)據(jù)設(shè)置為識別

systemprofile在期間如何變化。例如,計(jì)算每個(gè)事務(wù)中blockchanges可用如下公式:

dbblockchanges/(usercommits+userrollbacks

執(zhí)行:

selecta.value/(b.value+c.value

fromv$sysstata,v$sysstatb,v$sysstatc

where='dbblockchangesfand

='usercommits*andc.name='userrollbacks1;

其它計(jì)算統(tǒng)計(jì)以衡量負(fù)載方式,如下:

?Blockschangedforeachread:這項(xiàng)顯示出blockchanges在blockreads中的比

例。它將指出是否系統(tǒng)主要用于只讀訪問或是主要進(jìn)行諸多數(shù)據(jù)操作

(如:inserts/updates/deletes公式:dbblockchanges/sessionlogicalreads

執(zhí)行:

selecta.value/b.value

fromv$sysstata,v$sysstatb

where='dbblockchanges'and

='sessionlogicalreads*;

?Rowsforeachsort:

公式:sorts(rows/(sorts(memory+sorts(disk

執(zhí)行:

selecta.value/(b.value+c.value

fromv$sysstata,v$sysstatb,v$sysstatc

where=,sorts(rows'and

='sorts(memory*andc.name=*sorts(disk,;

學(xué)習(xí)動態(tài)性能表

第二篇-(l-v$sesstat2007.5.25

按照OracleOnlineBook中的描述,v$sesstat存儲session從login到logout的詳

細(xì)資源使用統(tǒng)計(jì)。

類似于v$sysstat,該視圖存儲下列類別的統(tǒng)計(jì):

?事件發(fā)生次數(shù)的統(tǒng)計(jì),如用戶提交數(shù)。

?數(shù)據(jù)產(chǎn)生,存取或者操作的total歹[I(如:redosize

?執(zhí)行操作所花費(fèi)的時(shí)間累積,例如sessionCPU占用(如果

TIMED_STATISTICS值為true

注意:

如果初始參數(shù)STATISTICS_LEVEL被設(shè)置為TYPICAL或ALL,時(shí)間統(tǒng)計(jì)被

數(shù)據(jù)庫自動收集如果STATISTICS_LEVEL被設(shè)置為BASIC,你必須設(shè)置

TIMED_STATISTICS值為TRUE以打開收集功能。

如果你已設(shè)置了DB_CACHE_ADVICE,TIMED_STATISTICS或

TIMED_OS_STATISTICS,或在初始參數(shù)文件或使用ALTER_SYSTEM或ALTER

SESSION,那么你所設(shè)定的值的值將覆蓋STATISTICS_LEVEL的值。

v$sysstat和v$sesstat差別如下:

□v$sesstat只保存session數(shù)據(jù),而v$sysstat則保存所有sessions的累積值。

Uv$sesstat只是暫存數(shù)據(jù),session退出后數(shù)據(jù)即清空。v$sysstat則是累積的,只

有當(dāng)實(shí)例被shutdown才會清空。

口v$sesstat不包括統(tǒng)計(jì)項(xiàng)名稱,如果要獲得統(tǒng)計(jì)項(xiàng)名稱則必須與v$sysstat或

v$statname連接查詢獲得。

v$sesstat可被用于找出如下類型session:

□高資源占用

」高平均資源占用比(登陸后資源使用率

□默認(rèn)資源占用比(兩快照之間

在V$SESSTAT中使用統(tǒng)計(jì)

多數(shù)v$sesstat中的統(tǒng)計(jì)參考是v$sysstat描述的子集,包括sessionlogicalreads,

CPUusedbythissession,dbblockchanges,redosize,physicalwrites,parsecount(hard,

parsecount(total,sorts(memory,andsorts(disk.

V$SESSTAT常用列說明

USID:session唯一ID

□STATISTIC#:資源唯一ID

□VALUE:資源使用

示例1:下列找出當(dāng)前session中最高的logical和PhysicalI/O比率.

下列SQL語句顯示了所有連接到數(shù)據(jù)庫的session邏輯、物理讀比率(每秒。

logical和physicalI/O比率是通過自登陸后的時(shí)間消耗計(jì)算得出。對于sessions連

接到數(shù)據(jù)庫這種長周期操作而言也許不夠精確,不過做個(gè)示例卻足夠了。

先獲得session邏輯讀和物理讀統(tǒng)計(jì)項(xiàng)的STATISTIC#直

SELECTname,statistic#

FROMV$STATNAME

WHEREnameIN('sessionlogicalreads','physicalreads';

NAMESTATISTIC#

sessionlogicalreads9

physicalreads40

通過上面獲得的STATISTIC#值執(zhí)行下列語句:

SELECTses.sid

,DECODE(ses.action,NULL,'onlineYbatch1"User"

,MAX(DECODE(sta.statistic#,9,sta.value,0

/greatest(3600*24>H(sysdate-ses.logon_tinie,1"LogIO/s"

,MAX(DECODE(sta.statistic#,40,sta.value,0

/greatest(3600*24*(sysdate-ses.logon_time,l"PhyIO/s"

,60*24*(sysdate-ses.logon_time"Minutes"

FROMV$SESSIONses

,V$SESSTATsta

WHEREses.status='ACTIVE1

ANDsta.sid=ses.sid

ANDsta.statistic#IN(9,40

GROUPBYses.sid,ses.action,ses.logon_time

ORDERBY

SUM(DECODE(sta.statistic#,40,lOO*sta.value,sta.value

/greatest(3600*24*(sysdate-ses.logon_time,lDESC;

SIDUserLogIO/sPhyIO/SMinutes

1951batch291257.31

470online6,16162.90

730batch7,56843.2197

2153online1,48298.910

2386batch7,62035.635

1815batch7,50335.526

1965online4,87942.919

1668online4,31844.51

1142online95569.235

1855batch57370.58

1971online1,13856.61

1323online3,26332.45

1479batch2,85735.13

421online1,32246.815

2405online25850.48

示例2:又例如通過v$sesstat和v$statname連接查詢某個(gè)SID各項(xiàng)信息。

selecta.*,

fromv$sesstata,v$statnameb

wherea.sid=10anda.statistic#=b.statistic#;

第二篇-(2-v$mystat2007.6.8

本視圖是v$sesstat的一個(gè)子集,返回當(dāng)前session的統(tǒng)計(jì)項(xiàng)。當(dāng)通過觸發(fā)器審計(jì)

session資源使用,可以使用v$mystat來捕獲資源使用,這將比直接掃描v$sesstat的列

要節(jié)省資源的多。

學(xué)習(xí)動態(tài)性能表

第三篇-(l-v$sql2007.5.25

V$SQL中存儲具體的SQL語句。

一條語句可以映射多個(gè)cursor,因?yàn)閷ο笏傅腸ursor可以有不同用戶(如例

1o如果有多個(gè)cursor(子游標(biāo)存在,在V$SQLAREA為所有cursor提供集合信息。

例1:

這里介紹以卜childcursor

userA:select*fromtbl

userB:select*fromtbl

大家認(rèn)為這兩條語句是不是一樣的啊,可能會有很多人會說是一樣的,但我告訴你不一

定,那為什么呢?

這個(gè)tblA看起來是一樣的,但是不一定哦,一個(gè)是A用戶的,一個(gè)是B用戶的,這時(shí)

他們的執(zhí)行計(jì)劃分析代碼差別可能就大了哦,改下寫法大家就明白了:

select*fromA.tbl

select*fromB.tbl

在個(gè)別cursor上,v$sql可被使用。該視圖包含cursor級別資料。當(dāng)試圖定位

session或用戶以分析cursor時(shí)被使用。

PLAN_HASH_VALUE列存儲的是數(shù)值表示的cursor執(zhí)行計(jì)劃??杀挥脕韺?/p>

比執(zhí)行計(jì)劃。PLAN一HASH一VALUE讓你不必一行一行對比即可輕松鑒別兩條執(zhí)

行計(jì)劃是否相同。

V$SQL中的列說明:

?SQL_TEXT:SQL文本的前1000個(gè)字符

?SHARABLE_MEM:占用的共享內(nèi)存大?。▎挝?byte

?PERSISTENT_MEM:生命期內(nèi)的固定內(nèi)存大?。▎挝?byte

?RUNTIME_MEM:執(zhí)行期內(nèi)的固定內(nèi)存大小

?SORTS:完成的排序數(shù)

?LOADED_VERSIONS:顯示上下文堆是否載入1是0否

?OPEN_VERSIONS:顯示子游標(biāo)是否被鎖,1是0否

?USERSJ3PENING:執(zhí)行語句的用戶數(shù)

?FETCHES:SQL語句的fetch數(shù)。

?EXECUTIONS:自它被載入緩存庫后的執(zhí)行次數(shù)

?USERS_EXECUTING:執(zhí)行語句的用戶數(shù)

?LOADS:對象被載入過的次數(shù)

?FIRST_LOAD_TIME:初次載入時(shí)間

?INVALIDATIONS:無效的次數(shù)

?PARSE_CALLS:解析調(diào)用次數(shù)

?DISK_READS:讀磁盤次數(shù)

?BUFFER_GETS:讀緩存區(qū)次數(shù)

?ROWS_PROCESSED:解析SQL語句返回的總列數(shù)

?COMMANDJYPE:命令類型代號

?OPTIMIZERMODE:SQL語句的優(yōu)化器模型

?OPTIMIZER_COST:優(yōu)化器給出的本次查詢成本

?PARSING_USER_ID:第一個(gè)解析的用戶ID

?PARSING_SCHEMA_ID:第一個(gè)解析的計(jì)劃ID

?KEPT_VERSIONS:指出是否當(dāng)前子游標(biāo)被使用DBMS_SHARED_POOL包標(biāo)

記為常駐內(nèi)存

?ADDRESS:當(dāng)前游標(biāo)父句柄地址

?TYPE_CHK_HEAP:當(dāng)前堆類型檢查說明

?HASH_VALUE:緩存庫中父語句的Hash值

?PLAN_HASH_VALUE:數(shù)值表示的執(zhí)行計(jì)劃。

?CHILDNUMBER:子游標(biāo)數(shù)量

?MODULE:在第一次解析這條語句是通過調(diào)用

DBMS_APPLICATION_INFO.SET_MODULE設(shè)置的模塊名稱。

?ACTION:在第一次解析這條語句是通過調(diào)用

DBMS_APPLICATION」NFO.SET_ACTION設(shè)置的動作名稱。

?SERIALIZABLEABORTS:事務(wù)未能序歹U化次數(shù)

?OUTLINE_CATEGORY:如果outline在解釋cursor期間被應(yīng)用,那么本列將顯

示出outline各類,否則本列為空

?CPU_TIME:解析/執(zhí)行/取得等CPU使用時(shí)間(單位,毫秒

?ELAPSED_TIME:解析/執(zhí)行/取得等消耗時(shí)間(單位,毫秒

?OUTLINESID:outlinesession標(biāo)識

?CHILD_ADDRESS:子游標(biāo)地址

?SQLTYPE:指出當(dāng)前語句使用的SQL語言版本

?REMOTE:指出是否游標(biāo)是一個(gè)遠(yuǎn)程映象(Y/N

?OBJECTSTATUS:對象狀態(tài)(VALIDorINVALID

?IS_OBSOLETE:當(dāng)子游標(biāo)的數(shù)量太多的時(shí)候,指出游標(biāo)是否被廢棄(Y/N

第三篇-(2-V$SQL_PLAN2007.5.28

本視圖提供了一種方式檢查那些執(zhí)行過的并且仍在緩存中的cursor的執(zhí)行計(jì)

劃。通常,本視圖提供的信息與打印出的EXPLAINPLAN非常相似,不過,

EXPLAINPLAN顯示的是理論上的計(jì)劃,并不一定在執(zhí)行的時(shí)候就會被使用,但

V$SQL_PLAN中包括的是實(shí)際被使用的計(jì)劃。獲自EXPLAINPLAN語句的執(zhí)行

計(jì)劃跟具體執(zhí)行的計(jì)劃可以不同,因?yàn)閏ursor可能被不同的session參數(shù)值編譯(如,

HASH_AREA_SIZEO

V$SQL_PLAN中數(shù)據(jù)可以:

?確認(rèn)當(dāng)前的執(zhí)行計(jì)劃

?鑒別創(chuàng)建表索引效果

?尋找cursor包括的存取路徑(例如,全表查詢或范圍索引查詢

?鑒別索弓I的選擇是否最優(yōu)

?決定是否最優(yōu)化選擇的詳細(xì)執(zhí)行計(jì)劃(如,nestedloopsjoin如開發(fā)者所愿。

本視圖同時(shí)也可被用于當(dāng)成一種關(guān)鍵機(jī)制在計(jì)劃對比中。計(jì)劃對比通常用于

下列各項(xiàng)發(fā)生改變時(shí):

?刪除和新建索引

?在數(shù)據(jù)庫對象上執(zhí)行分析語句

?修改初始參數(shù)值

?從rule-based切換至cost-based優(yōu)化方式

?升級應(yīng)用程序或數(shù)據(jù)庫到新版本之后

如果之前的計(jì)劃仍然在(例如,從V$SQL_PLAN選擇出記錄并保存到oracle表

中供參考,那么就有可能去鑒別一條SQL語句在執(zhí)行計(jì)劃改變后性能方面有什么

變化。

濘意:

Oracle公司強(qiáng)烈推薦你使用DBMS_STATS包而非ANALYZE收集優(yōu)化統(tǒng)計(jì).該包可以讓你

平行地搜集統(tǒng)計(jì)項(xiàng),收集分區(qū)對象(partitionedobjects)的全集統(tǒng)計(jì),并且通過其它方式更好

的調(diào)整你的統(tǒng)計(jì)收集方式。此處,cost-based優(yōu)化器將最終使用被DBMS_STATS收集的統(tǒng)

計(jì)項(xiàng)。瀏覽Oracle9iSuppliedPL/SQL包和類型參考以獲得關(guān)于此包的更多信息。

不過,你必須使用ANALYZE語句而非DBMS_STATS進(jìn)行統(tǒng)計(jì)收縱不涉及cost-based優(yōu)

化器,就像:

?使用VALIDATE或LISTCHAINEDROWS/句

,在freelistblocks上收集信息.

V$SQL_PLAN中的常用列:

除了一些新加列,本視圖幾乎包括所有的PLANJTABLE歹1那些同樣存在于

PLAN_TABLE中的列擁有相同的值:

?ADDRESS:當(dāng)前cursor父句柄位置

?HASH_VALUE:在librarycache中父語句的HASH值。

ADDRESS和HASH_VALUE這兩列可以被用于連接v$sqlarea查詢cursor-

specific信息。?CHILD_NUMBER:使用這個(gè)執(zhí)行計(jì)劃的子cursor數(shù)

歹UADDRESS,HASH_VALUE以及CHILD_NUMBER可被用于連接v$sql查詢

子cursor信息。.OPERATION:在各步驟執(zhí)行內(nèi)部操作的名稱,例如:TABLE

ACCESS

?OPTIONS:描述歹UOPERATION在操作上的變種,例如:FULL

?OBJECT_NODE:用于訪問對象的數(shù)據(jù)庫鏈接databaselink的名稱對于使用并

行執(zhí)行的本地查詢該列能夠描述操作中輸出的次序。

?OBJECT#:表或索弓I對象數(shù)量

?OBJECT_OWNER:對于包含有表或索引的架構(gòu)schema給出其所有者的名稱

?OBJECTNAME:表或索弓|名

?OPTIMIZER:執(zhí)行計(jì)劃中首列的默認(rèn)優(yōu)化模式;例如,CHOOSE。比如業(yè)務(wù)是

個(gè)存儲數(shù)據(jù)庫,它將告知是否對象是最優(yōu)化的。

?ID:在執(zhí)行計(jì)劃中分派到每一步的序號。

?PARENT_ID:對ID步驟的輸出進(jìn)行操作的下一個(gè)執(zhí)行步驟的ID。

?DEPTH:業(yè)務(wù)樹深度(或級。

?POSITION:對于具有相同PARENT_ID的操作其相應(yīng)的處理次序。

?COST:cost-based方式優(yōu)化的操作開銷的評估,如果語句使用rule-based方式,

本列將為空。

?CARDINALITY:根據(jù)cost-based方式操作所訪問的行數(shù)的評估。

?BYTES:根據(jù)cost-based方式操作產(chǎn)生的字節(jié)的評估,。

?OTHER_TAG:其它列的內(nèi)容說明。

?PARTITION_START:范圍存取分區(qū)中的開始分區(qū)。

?PARTITION_STOP:范圍存取分區(qū)中的停止分區(qū)。

?PARTITIONJD:計(jì)算PARTITION_START和PARTITION_STOP這對歹【J值

的步數(shù).OTHER:其它信息即執(zhí)行步驟細(xì)節(jié),供用戶參考。

?DISTRIBUTION:為了并行查詢,存儲用于從生產(chǎn)服務(wù)器到消費(fèi)服務(wù)器分配列

的方法

?CPU_COST:根據(jù)cost-based方式CPU操作開銷的評估。如果語句使用rule-

based方式,本列為空。

?IO_COST:根據(jù)cost-based方式I/O操作開銷的評估。如果語句使用rule-

based方式,本列為空。

?TEMPSPACE:cost-based方式操作(sortorhash-join的臨時(shí)空間占用評估。

如果語句使用rule-based方式,本列為空。

?ACCESS_PREDICATES:指明以便在存取結(jié)構(gòu)中定位列,例如,在范圍索弓I查

詢中的開始或者結(jié)束位置。

?FILTER_PREDICATES:在生成數(shù)據(jù)之前即指明過濾列。

CONNECTBY操作產(chǎn)生DEPTH列替換LEVEL偽歹I」,有時(shí)被用于在SQL腳本

中幫助indentPLAN_TABLE數(shù)據(jù)

V$SQL_PLAN中的連接列

歹UADDRESS,HASH_VALUE和CHILD_NUMBER被用于連接V$SQL或

V$SQLAREA來獲取cursor-specific信息,例如,BUFFER_GET,或連接V$SQLTEXT

獲取完整的SQL語句。

ColumnViewJoinedColumn(s

ADDRESS,HASH_VALUEV$SQLAREAADDRESS,HASH_VALUE

ADDRESS,HASH_VALUE,CHILD_NUMBERV$SQL

ADDRESS,HASH_VALUE,CHILD_NUMBERADDRESS,HASH_VALUE

V$SQLTEXTADDRESS,HASH_VALUE

確認(rèn)SQL語句的優(yōu)化計(jì)劃

下列語句顯示一條指定SQL語句的執(zhí)行計(jì)劃。查看一條SQL語句的執(zhí)行計(jì)

劃是調(diào)整優(yōu)化SQL語句的第一步。這條被查詢到執(zhí)行計(jì)劃的SQL語句是通過語

句的HASH_VALUE和ADDRESS歹J識別。分兩步執(zhí)行:

1.SELECTsql_text,address,hash_valueFROMv$sql

WHEREsqLtextlike'%TAG%';

SQL_TEXTADDRESSHASH_VALUE

821577841224822469

2.SELECToperation,options,object_name,costFROMv$sql_plan

WHEREaddress='82157784'ANDhash_value=1224822469;

OPERATIONOPTIONSOBJECT_NAMECOST-----------------------------------------

SELECTSTATEMENT5SORT

AGGREGATE

HASHJOIN5

TABLEACCESSFULLDEPARTMENTS2TABLEACCESSFULL

EMPLOYEES2

學(xué)習(xí)動態(tài)性能表

第四篇-(1-V$SQLTEXT2007.5.29

本視圖包括Sharedpool中SQL語句的完整文本,一條SQL語句可能分成多個(gè)

塊被保存于多個(gè)記錄內(nèi)。

注:V$SQLAREA只包括頭1000個(gè)字符。

V$SQLTEXT中的常用列

?HASH_VALUE:SQL語句的Hash值

?ADDRESS:sql語句在SGA中的地址

?SQL_TEXT:SQL文本。

?PIECE:SQL語句塊的序號

V$SQLTEXT中的連接列

ColumnViewJoinedColumn(s

HASH_VALUE,ADDRESSV$SQL,V$SESSIONHASH_VALUE,ADDRESS

HASH_VALUE.ADDRESSV$SESSIONSQL_HASH_VALUE,SQL_ADDRESS

示例:已知hash_value:3111103299,查詢sql語句:

select*fromv$sqltext

wherehash_value='3111103299,

orderbypiece

第四篇-(2-V$SQLAREA2007.5.29

本視圖持續(xù)跟蹤所有sharedpool中的共享cursor,在sharedpool中的每一條

SQL語句都對應(yīng)一列。本視圖在分析SQL語句資源使用方面非常重要。

V$SQLAREA中的信息列

?HASH_VALUE:SQL語句的Hash值。

?ADDRESS:SQL語句在SGA中的地址。

這兩列被用于鑒別SQL語句,有時(shí),兩條不同的語句可能hash值相同。這時(shí)候,

必須連同ADDRESS一同使用來確認(rèn)SQL語句。

?PARSING_USER_ID:為語句解析第一條CURSOR的用戶

?VERSION_COUNT:語句cursor的數(shù)量

?KEPTVERSIONS:

?SHARABLE_MEMORY:cursor使用的共享內(nèi)存總數(shù)

?PERSISTENT_MEMORY:cursor使用的常駐內(nèi)存總數(shù)

?RUNTIME_MEMORY:cursor使用的運(yùn)行時(shí)內(nèi)存總數(shù)。

?SQL_TEXT:SQL語句的文本(最大只能保存該語句的前1000個(gè)字符。

?MODULE,ACTION:使用了DBMS_APPLICATION」NFO時(shí)session解析第一

條cursor時(shí)的信息

V$SQLAREA中的其它常用列

?SORTS:語句的排序數(shù)

?CPU_TIME:語句被解析和執(zhí)行的CPU時(shí)間

?ELAPSED_TIME:語句被解析和執(zhí)行的共用時(shí)間

?PARSE_CALLS:語句的解析調(diào)用嗽、硬次數(shù)

?EXECUTIONS:語句的執(zhí)行次數(shù)

?INVALIDATIONS:語句的cursor失效次數(shù)

?LOADS:語句載入(載出數(shù)量

?ROWS_PROCESSED:語句返回的列總數(shù)

V$SQLAREA中的連接歹U

ColumnViewJoinedColumn(s

HASH_VALUE,ADDRESSV$SESSIONSQL_HASH_VALUE,

SQL_ADDRESS

HASH_VALUE,ADDRESSV$SQLTEXT,V$SQL,V$OPEN_CURSOR

HASH_VALUE,ADDRESSSQL_TEXTV$DB_OBJECT_CACHENAME

示例:

L查看消耗資源最多的SQL:

SELECThash_value,executions,buffer_gets,disk_reads,parse_callsFROM

V$SQLAREA

WHEREbuffer_gets>100000000Rdisk_reads>1000000

ORDERBYbuffer_gets+100*disk_readsDESC;

2.查看某條SQL語句的資源消耗:

SELECThash_value,buffer_gets,disk_reads,executions,parse_callsFROM

V$SQLAREA

WHEREhash_Value=228801498ANDaddress=hextoraw('CBD8E4B0,;

學(xué)習(xí)動態(tài)性能表

第五篇-V$SESSION2007.5.29

在本視圖中,每一個(gè)連接到數(shù)據(jù)庫實(shí)例中的session都擁有一條記錄。包括用戶

session及后臺進(jìn)程如DBWR,LGWR,arcchiver等等。

V$SESSION中的常用列

V$SESSION是基礎(chǔ)信息視圖,用于找尋用戶SID或SADDR。不過,它也有一些

列會動態(tài)的變化,可用于檢查用戶。如例:

SQL_HASH_VALUE,SQL_ADDRESS:這兩列用于鑒別默認(rèn)被session執(zhí)行的

SQL語句。如果為null或0,那就說明這個(gè)session沒有執(zhí)行任何SQL語句。

PREV_HASH_VALUE和PREV_ADDRESS兩歹U用來鑒另U被session執(zhí)行的上一條

語句。

注意:當(dāng)使用SQL*Plus進(jìn)行選擇時(shí),確認(rèn)你重定義的列寬不小于11以便看到完

整的數(shù)值。

STATUS:這列用來判斷session狀態(tài)是:

?Achtive:正執(zhí)行SQL語句(waitingfor/usingaresource

?Inactive:等待操作(即等待需要執(zhí)行的SQL語句

?Killed:被標(biāo)注為刪除

下列各列提供session的信息,可被用于當(dāng)一"或多個(gè)combination未知時(shí)找到

session。

Session信息

?SIDSESSION標(biāo)識,常用于連接其它列

?SERIAL#:如果某個(gè)SID又被其它的session使用的話則此數(shù)值自增加(當(dāng)一個(gè)

SESSION結(jié)束,另一個(gè)SESSION開始并使用了同一個(gè)SID。

?AUDSID:審查sessionID唯一性,確認(rèn)它通常也用于當(dāng)尋找并行查詢模式

?USERNAME:當(dāng)前session在oracle中的用戶名。

Client信息

數(shù)據(jù)庫session被一個(gè)運(yùn)行在數(shù)據(jù)庫服務(wù)器上或從中間服務(wù)器甚至桌面通過

SQL*Net連接到數(shù)據(jù)庫的客戶端進(jìn)程啟動,下列各列提供這個(gè)客戶端的信息

?OSUSER:客戶端操作系統(tǒng)用戶名

?MACHINE:客戶端執(zhí)行的機(jī)器

?TERMINAL:客戶端運(yùn)行的終端

?PROCESS:客戶端進(jìn)程的ID

?PROGRAM:客戶端執(zhí)行的客戶端程序

要顯示用戶所連接PC的TERMINALsOSUSER,需在該P(yáng)C的

ORACLE.INI或Windows中設(shè)置關(guān)鍵字TERMINAL,USERNAME。

Application信息

調(diào)用DBMS_APPLICATION_INFO包以設(shè)置一些信息區(qū)分用戶。這將顯示下

列各列。

?CLIENTINFO:DBMS_APPLICATION_INFO中設(shè)置

?ACTION:DBMSAPPLICATION_INFO中設(shè)置

?MODULE:DBMS_APPLICATION_INFO中設(shè)置

下列V$SESSION列同樣可能會被用到:

?ROW_WAIT_OBJ#

?ROW_WAIT_FILE#

?ROW_WAIT_BLOCK#

?ROW_WAIT_ROW#

V$SESSION中的連接列

ColumnViewJoinedColumn(s

SID

V$SESSION_WAIT?V$SESSTAT?V$LOCK,V$SESSION_EVENT,V$OPEN_CURS

ORSID

(SQL_HASH_VALUE,SQL_ADDRESSV$SQLTEXT,V$SQLAREA,V$SQL

(HASH_VALUE,ADDRESS

(PREV_HASH_VALUE,PREV_SQL_ADDRESSV$SQLTEXT,V$SQLAREA,

V$SQL(HASH_VALUE,ADDRESS

TADDRV$TRANSACTIONADDR

PADDRV$PROCESSADDR

示例:

1.查找你的session信息

SELECTSID,OSUSER,USERNAME,MACHINE,PROCESS

FROMV$SESSIONWHEREaudsid=userenv('SESSIONID";

2.當(dāng)machine已知的情況下查找session

SELECTSID,OSUSER,USERNAME,MACHINE,TERMINAL

FROMV$SESSION

WHEREterminal='pts/tl'ANDmachine='rgmdbsl';

3.查找當(dāng)前被某個(gè)指定session正在運(yùn)行的sql語句。假設(shè)sessionlD為100

selectb.sql_text

fromv$sessiona,v$sqlareab

wherea.sql_hash_value=b.hash_valueanda.sid=100

尋找被指定session執(zhí)行的SQL語句是一"1K公共需求,如果session是瓶頸的主

要原因,那根據(jù)其當(dāng)前在執(zhí)行的語句可以查看session在做些什么。

學(xué)習(xí)動態(tài)性能表

第六篇-(1-V$SESSION_WAIT2007.5.30

這是一個(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)一條記錄。

V$SESSION_WAIT中的常用列

?SID:session標(biāo)識

?EVENT:session當(dāng)前等待的事件,或者最后一次等待事件。

?WAIT_TIME:session等待事件的時(shí)間(單位,百分之一秒如果本列為0,說明

session當(dāng)前session還未有任何等待。

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

?Pl,P2,P3:等待事件中等待的詳細(xì)資料

?P1TEXT,P2TEXT,P3TEXT:解釋說明pl,p2,p3事件

附注:

1.State字段有四種含義:

(lWaiting:SESSION正等待這個(gè)事件。

(2Waitedunknowntime:由于設(shè)置了timed_statistics值為false,導(dǎo)致不能得到時(shí)

間信息。表示發(fā)生了等待,但時(shí)間很短。

(3Waitshorttime:表示發(fā)生了等待,但由于時(shí)間非常短不超過一個(gè)時(shí)間單位,所以

沒有記錄。

(4Waitedknnowtime:如果session等待然后得到了所需資源,那么將從waiting

進(jìn)入本狀態(tài)。

2.Wait_time值也有四種含義:

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

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

(3值=1:最后一次等待時(shí)間小于1個(gè)統(tǒng)計(jì)單位,當(dāng)前未在等待狀態(tài)。

(4值=2時(shí)間統(tǒng)計(jì)狀態(tài)未置為可用,當(dāng)前未在等待狀態(tài)。

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

(1如果state值為Waiting,那么wait_time值無用。Second_in_wait值是實(shí)際的

等待時(shí)間(單位:秒。

(2如果state值為Waitunknowtime,那么wait_time值和Second_in_wait值者B無

用。

(3如果state值為Waitshorttime,那么wait_time值和Second_in_wait值都無

用。

(4如果state值為Waitingknowntime,那么wait_time值就是實(shí)際等待時(shí)間(單

位:秒,Second_in_wait值無用。

V$SESSION_WAIT中的連接列

ColumnViewJoinedColumn(s

SIDV$SESSIONSID

示例:

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

SELECTevent,

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

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

count(*"Total"

FROMv$session_waitGROUPBYeventORDERBYcount(*;

EVENTPrevCurrTot

PL/SQLlocktimerOil

SQL*NetmoredatafromclientOil

smontimerOil

pmontimerOil

SQL*Netmessagetoclient202

dbfilescatteredread202

rdbmsipcmessage077

Enqueue01212

pipeget01212

dbfilesequentialread31013

latchfree9615

SQL*Netmessagefromclient83513802215

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

?多數(shù)的session者R是空閑事件如:SQL*Netmessagefromclient,pipeget,PMON

timer等。?session的cpu占用可以通過上次session的非等待事件大致算出,除此問

題外:看起來多數(shù)session沒有在等待什么事情(難道他們都在干活?但其最后等待

事件都是SQL*Netmessagefromcliento

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

select*fromv$session_waitwheresid=100;

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

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

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

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

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

例:selectpl"File#",p2"Block#",p3"ReasonCode"

fromv$session_wait

whereevent='bufferbusywaits*;

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

類型:

selectowner,segment_name,segment_type

fromdba_extents

wherefile_id=&Pland&P2betweenblock_idandblock_id+blocks-1;

我們也可以查詢dba_data_files以確定等待的文件的filename,方法

是使用v$session_wait中的Pl。

從v$session_wait中查詢P3(原因編碼的值可以知道session等待的原因。原

因編碼的范圍從。到300,下列為部分編碼所代表的事項(xiàng):

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

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

110我們想將當(dāng)前塊設(shè)為共享,但這一塊被另一session讀入,所以我們必須等

待read(結(jié)束。

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

待他人的讀入結(jié)束。

130塊被另一session讀入,而且沒有找到其它協(xié)調(diào)的塊,所以我們必須等待讀

的結(jié)束。緩沖區(qū)死鎖后這種情況也有可能產(chǎn)生。所以必須讀入塊的CR。

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

束。210Session想讀入SCUR或XCUR中的塊,如果塊交換或者session處于非連

續(xù)的TX模式,所以等待可能需要很長的時(shí)間。

220在緩沖區(qū)查詢一個(gè)塊的當(dāng)前版本,但有人以不合法的模式使用這一塊,所以

我們只能等待。

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

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

第六篇-(2-V$SESSION_EVENT2007.5.30

本視圖記錄了每個(gè)session的每一項(xiàng)等待事件。由上文所知

V$SESSION_WAIT顯示了session的當(dāng)前等待事件,而V$SESSION_EVENT則記錄

了session自啟動起所有的事件。

V$SESSION_EVENT中的常用列

?SID:session標(biāo)識

?EVENTsession等待的事件

?TOTAL_WAITS:此session當(dāng)前事件的總等待數(shù)

?TIME_WAITED:此session總等待時(shí)間(單位,百分之一秒

?AVERAGE_WAIT:此session當(dāng)前事件平均等待時(shí)間(單位,百分之一秒

?TOTAL_TIMEOUTS:等待超時(shí)次數(shù)

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

附注:Oracle的等待事件是衡量Oracle運(yùn)行狀況的重要依據(jù)及指標(biāo)。等待事

件的概念是在Oracle中引入的,大致有100個(gè)等待事件。Oracle8.0中這個(gè)

數(shù)目增加到了大約150在個(gè),在Oracle8i中大約有200個(gè)事件,在Oracle9i中大約

有360個(gè)等待事件。主要有兩種類別的等待事件,即空閑(idle等待事件和非空閑

(non-idle等待事件。關(guān)于空閑事件和非空閑事件目前通過google可以搜索到非常

多詳盡的相關(guān)信息,同時(shí)OracleDatabasePerformanceTuningGuideandReference

中關(guān)于WaitEvents也有非常詳盡的描述,在此就不多費(fèi)口舌了。不過我在itpub

論壇看到有熱心人整理的chm格式非空閑事件說明,有興趣的朋友可以下載,鏈

接如下:非空閑事件說明詳見:http:〃/728733.html[三思筆記]學(xué)習(xí)

動態(tài)性能表

學(xué)習(xí)動態(tài)性能表第七篇--V$PROCESS2007.5.30本視圖包含當(dāng)前系統(tǒng)oracle運(yùn)

行的所有進(jìn)程信息。常被用于將oracle或服務(wù)進(jìn)程的操作系統(tǒng)進(jìn)程ID與數(shù)據(jù)庫

session之間建立聯(lián)系。在某些情況下非常有用:1.如果數(shù)據(jù)庫瓶頸是系統(tǒng)資源

(如:cpu,內(nèi)存,并且占用資源最多的用戶總是停留在某幾個(gè)服務(wù)進(jìn)程,那么進(jìn)行

如下諸項(xiàng):2.3.4.找出資源進(jìn)程找出它們的session,你必須將進(jìn)程與會話

聯(lián)系起來。找出為什么session占用了如此多的資源SQL跟蹤文件名是基于服務(wù)

進(jìn)程的操作系統(tǒng)進(jìn)程ID。要找出session的跟蹤文件,你必須將session與服務(wù)進(jìn)

程聯(lián)系起來。某些事件,如rdbmsipcreply,鑒別session進(jìn)程的Oracle進(jìn)程ID在

等什么。要發(fā)現(xiàn)這些進(jìn)程在做什么,你必須找出它們的session。你所看到的服務(wù)

器上的后臺進(jìn)程(DBWR,LGWR,PMON等都是服務(wù)進(jìn)程。要想知道他們在做什

么,你必須找到他們的session。V$PROCESS中的常用列ADDR:進(jìn)程對象地

址PID:oracle進(jìn)程IDSPID:操作系統(tǒng)進(jìn)程IDV$PROCESS中的連接列

ColumnViewADDRV$SESSIONJoinedColumn(sPADDR示例:I.查找指定系統(tǒng)

用戶在oracle中的session信息及進(jìn)程id,假設(shè)操作系統(tǒng)用戶為:junsansiselect

s.sid,s.SERIAL#,s.username,p.spidfromv$sessions,v$processpwheres.osuser=

'junsansi*ands.PADDR=p.ADDR2.查看鎖和等待SELECT/*+rule*/Ipad(二

decode(l.xidusn,0,3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論