




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
幾乎所有的出色調(diào)整或者DBA產(chǎn)品都有一個共性。它們中的大多數(shù)都是通過訪問V$視圖來獲取從數(shù)據(jù)庫、單個查詢、或者單個用戶檢索出來的內(nèi)部信息。V$視圖可以全面、準確地展示Oracle數(shù)據(jù)庫的核心信息。它是將普通水平的管理人員變?yōu)镈BA專家的紐帶。V$視圖是由catalog.sql腳本創(chuàng)建的。在Oracle10g中,有將近372個V$視圖。實際的數(shù)量隨版本和平臺的不同而不同。如果想詳細的研究這些動態(tài)視圖,可以通過這腳本查看這個視圖的內(nèi)部機理。V$視圖的創(chuàng)建和訪問V$視圖是由catalog.sql腳本創(chuàng)建的。一個例子如下所有視圖的定義語言都在里面這些視圖的定義都硬編碼到數(shù)據(jù)庫中,因此我們在數(shù)據(jù)庫沒有啟動的時候,可以訪問部分的V$視圖。X$等底層表—GV$視圖—V$視圖(加了instid的where條件)—V_$視圖—V$同義詞在視圖上唯一能夠做的事情就是select,因為最終這些視圖訪問的是X$底層表。用戶scott不能訪問v$datafile,我們需要授權(quán)給這個用戶訪問這個視圖,具體操作如下:為了避免混淆,最好是授于對v_$表的訪問權(quán)限,并通知DBA用戶可訪問V$視圖。通過這個方法,就可以授權(quán)他人訪問V$視圖的信息,而不用向他們提供SYS或者SYSTEM賬戶的密碼。關(guān)鍵是對SYS擁有的原始v_$視圖授予SELECT權(quán)限。查詢V$FIXED_TABLE視圖可以獲得數(shù)據(jù)庫中所有的GV$視圖和V$視圖。GV$視圖和V$視圖幾乎完全一樣,但實例ID列包含了一個標識符。selectnamefromv$fixed_tablewherenamelike'GV%'orderbyname/Oracle在SGA中創(chuàng)建V$視圖,使用戶可以以一種更便于閱讀的格式來檢查X$表中存儲的信息。實際上,當在V$視圖上執(zhí)行SELECT操作時,SELECT操作負責從SGA中提取信息--更明確地說,是從X$表中提取信息。查找組成DBA_視圖的底層對象有些人認為DBA_視圖也是從X$表和/或者V$視圖得到的。它們實際上是從Oracle底層數(shù)據(jù)庫的表中得到的(當然也有些是通過訪問X$表得到的)。這些底層表千萬不能刪除,否則容易造成數(shù)據(jù)庫的崩潰。使用有幫助的V$腳本1、基本的數(shù)據(jù)庫信息2、有關(guān)自動工作量倉庫(AWR)的信息3、基本的許可信息4、數(shù)據(jù)庫中已安裝的數(shù)據(jù)庫選項查詢V$VERSION和V$DATABASE視圖,可以獲得數(shù)據(jù)庫的基本信息,例如版本信息,以確定創(chuàng)建數(shù)據(jù)庫的信息以及基本的歸檔信息。AWR使用多少空間?Selectoccupant_name,occupant_desc,space_usage_kbytesfromv$sysaux_occupantswhereoccupant_namelike'%AWR%'/系統(tǒng)上最原始的AWR信息是什么?什么是AWR信息的保留期?查詢V$SYSAUX_OCCUPANTS以確保自動工作量倉庫(AWR)沒有占用過多空間。使用DBMS_STATS檢查歷史和保留?;镜脑S可信息selectSESSIONS_MAX,SESSIONS_WARNING,SESSIONS_CURRENT,SESSIONS_HIGHWATER,USERS_MAXfromv$license/當前會話數(shù)量與會話警告級別和會話最大級別一起顯示。會話警告級別為0表示沒有設(shè)置init.ora會話警告參數(shù),所以系統(tǒng)不會顯示警告信息。會話最大級別為0表示沒有設(shè)置init.ora會話最大參數(shù),所以系統(tǒng)不會限制會話的數(shù)量。應(yīng)該定期執(zhí)行腳本,以向DBA提供系統(tǒng)一天中實際的會話數(shù)量,從而保證正確的許可授權(quán)。init.ora參數(shù)LICENSE_MAX_USERS用于設(shè)置數(shù)據(jù)庫中可以創(chuàng)建的已命名的用戶數(shù)。數(shù)據(jù)庫中已安裝的產(chǎn)品項下面程序清單中的腳本描述了數(shù)據(jù)庫中已經(jīng)安裝的產(chǎn)品項,以及可用狀況。如果您購買了一項產(chǎn)品,該產(chǎn)品沒有顯示在列表中,則可能是您沒有正確地安裝它。select*fromv$option/……………上面的數(shù)據(jù)庫提供了Partitioning選項,但它沒有安裝實時應(yīng)用群集(RealApplicationClusters,RAC)。內(nèi)存分配摘要(V$SGA)VariableSize項中較為突出的部分是共享池.內(nèi)存分配的細節(jié)(V$SGASTAT)在V$視圖中,可以查詢V$SGASTAT視圖來提供有關(guān)SGA更詳細的內(nèi)存分配信息。這個視圖提供了SGA和內(nèi)存資源的動態(tài)信息(訪問數(shù)據(jù)庫時會出現(xiàn)相應(yīng)變化)。這個語句非常詳細地描述了SGA的尺寸。在V$SGA和V$SGASTAT視圖中均包含記錄FIXED_SGA、BUFFER_CACHE和LOG_BUFFER,且它們在這兩個視圖中的值均相等。select*fromv$sgastat/在V$PARAMETER中發(fā)現(xiàn)init.ora的設(shè)置selectname,value,isdefault,isses_modifiable,issys_modifiablefromv$parameterorderbyname/查詢V$PARAMETER視圖,將得到init.ora參數(shù)的當前值。它還顯示了哪些init.ora參數(shù)已經(jīng)改動了原始的默認值:ISDEFAULT=FALSE。它還顯示了對于一個給定的會話,只能修改哪些參數(shù)(當ISSES_MODIFIABLE=TRUE時)。最后,它顯示了在不用關(guān)閉和重啟數(shù)據(jù)庫可以修改哪些參數(shù)(當ISSYS_MODIFIABLE=IMMEDIATE時);而ISSYS_MODIFIABLE=DEFERRED說明該參數(shù)對所有新登錄的,但當前未登錄會話的用戶有效。如果參數(shù)ISSYS_MODIFIABLE=FALSE,則說明該實例必須關(guān)閉并重啟,才能使設(shè)置生效。測定數(shù)據(jù)的命中率(V$SYSSTAT)select1-(sum(decode(name,'physicalreads',value,0))/(sum(decode(name,'dbblockgets',value,0))+(sum(decode(name,'consistentgets',value,0)))))"ReadHitRatio"fromv$sysstat/提供了數(shù)據(jù)庫中設(shè)置的數(shù)據(jù)塊緩存區(qū)的命中率。這個信息可以幫助您判斷系統(tǒng)何時需要更多的數(shù)據(jù)緩存(DB_CACHE_SIZE),或者系統(tǒng)的狀態(tài)何時調(diào)整得不佳(二者均將導(dǎo)致較低的命中率)。通常情況下,您應(yīng)當確保讀數(shù)據(jù)的命中率保持在95%以上。將系統(tǒng)的命中率從98%提高到99%,可能意味著性能提高了100%(取決于引起磁盤讀操作的語句)。上面程序清單中的命中率很高,但這并不意味著系統(tǒng)已經(jīng)調(diào)整至最佳狀態(tài)。很高的命中率也可能意味著查詢使用了過度的索引。如果這個命中率低于95%,您可能需要增加init.ora參數(shù)DB_CACHE_SIZE,或者調(diào)整一些引起磁盤讀取操作的查詢(僅當這樣做是可行的并且確實有效的情況下)。一種例外情況就是分布在不同塊中的數(shù)據(jù)分布的極不平衡。如果不考慮這種可能性,那么命中率低于90%幾乎總意味著系統(tǒng)調(diào)整得很糟糕,要么就是某些人不切實際地設(shè)計,使每個數(shù)據(jù)塊的數(shù)據(jù)都極不平衡。如果需要,也可以使用新的V$DB_CACHE_ADVICE視圖來幫助改變數(shù)據(jù)緩存的大小。下面程序清單的查詢通過創(chuàng)建一個值的列表來展示較大的數(shù)據(jù)緩存和較小的數(shù)據(jù)緩存的不同效果。columnbuffers_for_estimateformat999,999,999heading'Buffers'columnestd_physical_read_factorformat999.90heading'EstdPhys|ReadFact'columnestd_physical_readsformat999,999,999heading'EstdPhys|Reads'SELECTsize_for_estimate,buffers_for_estimate,estd_physical_read_factor,estd_physical_readsFROMV$DB_CACHE_ADVICEWHEREname='DEFAULT'ANDblock_size=(SELECTvalueFROMV$PARAMETERWHEREname='db_block_size')ANDadvice_status='ON';測定數(shù)據(jù)字典的命中率(V$ROWCACHE)可以使用V$ROWCACHE視圖(如程序清單所示)來發(fā)現(xiàn)對數(shù)據(jù)字典的調(diào)用是否有效地利用了通過init.ora參數(shù)SHARED_POOL_SIZE分配的內(nèi)存緩存。如果字典的命中率不高,系統(tǒng)的綜合性能將大受影響。selectsum(gets),sum(getmisses),(1-(sum(getmisses)/(sum(gets)+sum(getmisses))))*100HitRatefromv$rowcache/推薦的命中率是95%或者更高。如果命中率低于這個百分比,說明可能需要增加init.ora參數(shù)SHARED_POOL_SIZE。但要記住,在V$SGASTAT視圖中看到的共享池包括多個部分,而這里僅僅就是其中之一。測定共享SQL和PL/SQL的命中率(V$LIBRARYCACHE)訪問V$LIBRARYCACHE視圖可以顯示實際使用的語句(SQL和PL/SQL)訪問內(nèi)存的情況。如果init.ora的參數(shù)SHARED_POOL_SIZE設(shè)置得太小,內(nèi)存中就沒有足夠的空間來存儲所有的語句。如果共享池的碎片化現(xiàn)象很嚴重,較大的PL/SQL程序就無法加載到共享池中。如果不能有效地重用語句,則擴大共享池可能事與愿違,反而帶來更多不利.這里包括執(zhí)行率(固定命中率)和重載命中率。推薦的固定對象的命中率是95%以上,重載命中率應(yīng)為99%以上(低于1%的重載次數(shù))。如果語句先前已經(jīng)經(jīng)過分析,但共享池通常不夠大,在分析其他的語句時無法在內(nèi)存中保存這個語句,則在此時會出現(xiàn)重載。語句的主體被擠出內(nèi)存(語句頭仍然保存下來);當需要再次使用該語句時,就將重載記錄下來,并將語句主體再次加載到內(nèi)存中。這種情況也會出現(xiàn)在語句的執(zhí)行計劃發(fā)生變動時。selectsum(pins)"Executions",sum(pinhits)"Hits",((sum(pinhits)/sum(pins))*100)"PinHitRatio",sum(reloads)"Misses",((sum(pins)/(sum(pins)+sum(reloads)))*100)"RelHitRatio"fromv$librarycache/selectsql_id,count(*)bind_countfromv$sql_bind_capturewherechild_number=0groupbysql_idhavingcount(*)>20orderbycount(*)/求的是每個SQL語句的綁定變量的數(shù)目,如果一個SQL語句的綁定變量的數(shù)目超過15個,那么性能將會降低下來。selectavg(bind_count)AVG_NUM_BINDSfrom(selectsql_id,count(*)bind_countfromv$sql_bind_capturewherechild_number=0groupbysql_id)/每一個SQL語句平均綁定變量的個數(shù)。selectsql_text,users_executing,executions,users_opening,buffer_getsfromv$sqlareawheresql_id='3qsmy8ybvwt3n'orderbybuffer_gets;查看SQL語句,并且修復(fù)有問題的SQL語句。備注:INSERTINTOTEST_TABVALUES(VRQ,VPRO,'SELECT*FROMDUAL');如果這樣使用,也是會使用綁定變量的,不過變量是系統(tǒng)定義而已。
確定需要固定的PL/SQL對象碎片化現(xiàn)象造成共享池中的可用空間均成為許多零散的片段,而沒有足夠大的連續(xù)空間,這是共享池中的普遍現(xiàn)象。較大的PL/SQL對象容易引起共享池故障,因為他們需要進入內(nèi)存的時候,不容易得到空間。下面程序清單中的示例搜索那些所需空間大于100KB的對象(只限于目前已經(jīng)在shared
pool中對象)selectname,sharable_memfromv$db_object_cachewheresharable_mem>100000andtypein('PACKAGE','PACKAGEBODY','FUNCTION','PROCEDURE')andkept='NO'/通過V$SQLAREA查找有問題的查詢V$SQLAREA視圖提供了一種識別有潛在問題或者需要優(yōu)化的SQL語句的方法。selectb.usernameusername,a.disk_readsreads,a.executionsexec,a.disk_reads/decode(a.executions,0,1,a.executions)rds_exec_ratio,mand_type,a.sql_textStatementfromv$sqlareaa,dba_usersbwherea.parsing_user_id=b.user_idanda.disk_reads>100orderbya.disk_readsdesc/根據(jù)系統(tǒng)負載情況設(shè)置相應(yīng)的值。這個語句執(zhí)行了很多次,以后的讀主要集中在內(nèi)存中。因此這個參數(shù)很小。在前面語句中的DISK_READS列可以用BUFFER_GETS列來代替,以提供關(guān)于SQL語句的信息,該SQL語句擁有的磁盤訪問率不高(盡管它們通常是這樣),但擁有的內(nèi)存訪問率很高(高于所期望的值)。這些語句使用了大量的內(nèi)存來分配給數(shù)據(jù)(DB_CACHE_SIZE)。檢查用戶的當前操作及其使用的資源將V$SESSION和V$SQLTEXT連接就可以顯示目前每一個會話正在執(zhí)行的SQL語句.selecta.sid,a.username,s.sql_textfromv$sessiona,v$sqltextswherea.sql_address=s.addressanda.sql_hash_value=s.hash_valueorderbya.username,a.sid,s.piece/一條SQL語句被分成了3條顯示。顯示的是僅僅是當前會話。selecta.username,b.block_gets,b.consistent_gets,b.physical_reads,b.block_changes,b.consistent_changesfromv$sessiona,v$sess_iobwherea.sid=b.sidorderbya.username/這個語句的目標是顯示每個會話的物理磁盤命中率和內(nèi)存命中率。這就非常容易發(fā)現(xiàn)哪些用戶執(zhí)行了大量的物理磁盤和內(nèi)存讀操作。查找用戶正在訪問的對象一旦發(fā)現(xiàn)某些用戶或者系統(tǒng)中的查詢存在問題,查詢V$ACCESS可以為您指出有潛在問題的對象(可能缺少索引)。當想修改一個特殊的對象,或者需要知道在一個給定的時間點上誰在使用該對象時,它也非常有幫助,如下面程序清單所示。selecta.sid,a.username,b.owner,b.object,b.typefromv$sessiona,v$accessbwherea.sid=b.sidandusername='SCOTT'/用戶正在訪問的對象。對于已經(jīng)訪問過的對象,不會出現(xiàn)在結(jié)果集中。通過查詢V$ACCESS視圖可查看在給定的時間點上用戶所訪問的所有對象。這有助于查明有問題的對象,在想修改一個特定的對象時也很有用(查找誰在訪問它)。然而,當系統(tǒng)有一個很大的共享池和數(shù)百個用戶時,這個操作的開銷將很大。獲得詳細的用戶信息當正在測試一個新的或者升版的應(yīng)用程序模塊以決定其開銷時,分析用戶的統(tǒng)計數(shù)據(jù)是極為有用的。當用戶遇到性能問題時,它也向用戶提供了一個窗口,因為它提供的統(tǒng)計數(shù)據(jù)涵蓋了每個用戶的各個方面。此外,在設(shè)置配置文件來限制特定用戶時,也可將其作為一種指導(dǎo)。下面程序清單中的腳本將統(tǒng)計數(shù)據(jù)限制為必須有值的數(shù)據(jù)(b.value!=0)。selecta.username,,sum(b.value)valuefromv$sessiona,v$sesstatb,v$statnamecwherea.sid=b.sidandb.statistic#=c.statistic#andb.value!=0andusername='SCOTT'groupbyname,username/使用索引Oracle9i提供了監(jiān)控索引使用的功能。這個新的視圖表示索引是否被引用,但不能反映索引使用的頻率。要監(jiān)控的索引需要單獨打開和關(guān)閉??梢允褂胊lterindex命令來初始化監(jiān)控工作,然后通過對視圖V$OBJECT_USAGE的查詢來實現(xiàn)索引的跟蹤。在監(jiān)控任何索引前,這個視圖沒有任何記錄開始監(jiān)控4個索引alterindexHRDT_INDEX1monitoringusage;alterindexHRDT_INDEX2monitoringusage;alterindexHRDT_INDEX3monitoringusage;alterindexHRDT_INDEX4monitoringusage;現(xiàn)在視圖顯示4個索引的啟動時間,但也同時指明它們并未被使用:selectindex_name,table_name,monitoring,used,
start_monitoring,end_monitoring
from
v$object_usage;INDEX_NAME
TABLE_NAME
MON
USESTART_MONITORING
END_MONITORING
HRDT_INDEX1
HRS_DETAIL
YES
NO
10/13/200203:11:34
HRDT_INDEX2
HRS_DETAIL
YES
NO
10/13/200203:11:38
HRDT_INDEX3
HRS_DETAIL
YES
NO
10/13/200203:11:46
HRDT_INDEX4
HRS_DETAIL
YES
NO
10/13/200203:11:52如果使用HRDT_INDEX1進行查詢,視圖則會顯示該索引已經(jīng)投入使用:selectindex_name,table_name,monitoring,used,
start_monitoring,end_monitoring
from
v$object_usage;INDEX_NAME
TABLE_NAMEMONUSESTART_MONITORING
END_MONITORING
HRDT_INDEX1
HRS_DETAIL
YES
YES
10/13/200203:11:34
HRDT_INDEX2
HRS_DETAIL
YES
NO
10/13/200203:11:38
HRDT_INDEX3
HRS_DETAIL
YES
NO
10/13/200203:11:46
HRDT_INDEX4
HRS_DETAIL
YES
NO
10/13/200203:11:52結(jié)束了對HRDT_INDEX4的監(jiān)控,視圖現(xiàn)在會顯示監(jiān)控的結(jié)束時間:
alterindexHRDT_INDEX4nomonitoringusage;
selectindex_name,table_name,monitoring,used,
start_monitoring,end_monitoring
from
v$object_usage;INDEX_NAME
TABLE_NAMEMONUSESTART_MONITORING
END_MONITORING
HRDT_INDEX1
HRS_DETAIL
YES
YES
10/13/200203:11:34
HRDT_INDEX2
HRS_DETAIL
YE
NO
10/13/200203:11:38
HRDT_INDEX3
HRS_DETAIL
YES
NO
10/13/200203:11:46
HRDT_INDEX4
HRS_DETAIL
NO
NO
10/13/200203:11:52
10/13/200203:16:01確定鎖定問題確定鎖定問題將有助于定位正在等待其他某些用戶或者某些東西的用戶??梢允褂眠@個策略來確定當前被鎖定在系統(tǒng)中的用戶。這也使DBA們可以確認一個相關(guān)的Oracle進程是否真地被鎖定了,還是僅僅運行得比較慢。您還能夠識別當前的語句是否正在執(zhí)行鎖定用戶的操作。select/*+ordered*/b.username,b.serial#,d.id1,a.sql_textfromv$lockd,v$sessionb,v$sqltextawhereb.lockwait=d.kaddranda.address=b.sql_addressanda.hash_value=b.sql_hash_value/這個操作被鎖定住了。您還需要識別在系統(tǒng)中是哪個用戶造成了前一個用戶被鎖定的問題。select/*+NO_MERGE(a)NO_MERGE(b)NO_MERGE(c)*/'Wait'"Status",a.username,a.machine,a.sid,a.serial#,a.last_call_et"Seconds",b.id1,c.sql_text"SQL"fromv$sessiona,v$lockb,v$sqltextcwherea.usernameisnotnullanda.lockwait=b.kaddrandc.hash_value=a.sql_hash_valueunionselect/*+NO_MERGE(a)NO_MERGE(b)NO_MERGE(c)*/'Lock'"Status",a.username,a.machine,a.sid,a.serial#,a.last_call_et"Seconds",b.id1,c.sql_text"SQL"fromv$sessiona,v$lockb,v$sqltextcwhereb.id1in(select/*+NO_MERGE(d)NO_MERGE(e)*/distincte.id1fromv$sessiond,v$lockewhered.lockwait=e.kaddr)anda.usernameisnotnullanda.sid=b.sidandb.request=0andc.hash_value=a.sql_hash_value;正在等待資源,屬于被鎖住。Status有兩種狀態(tài),LOCK表明該進程鎖住了某個資源,WAIT表示該進程正在等待某個資源。Username,Machine分別為ORACLE用戶名及機器名SID,SERIAL#可用于隨后的解鎖操作Seconds表示該進程最后一次進行操作至當前的時間(秒)ID1,鎖標識。某個LOCK狀態(tài)的ID1與某個WAIT狀態(tài)的ID1相同,可說明鎖的正是另一個進程等待的。SQL:鎖住資源的SQL語句查鎖語句:查詢產(chǎn)生鎖的用戶鎖sql
selecta.usernameusername,a.sidsid,a.serial#serial,b.id1id1,c.sql_textsqltext
fromv$sessiona,v$lockb,v$sqltextc
whereb.id1in
(selectdistincte.id1
fromv$sessiond,v$locke
whered.lockwait=e.kaddr)
anda.sid=b.sid
andc.hash_value=a.sql_hash_value
andb.request=0;select/*+ordered*/username,v$lock.sid,trunc(id1/power(2,16))rbs,bitand(id1,to_number('ffff','xxxx'))+0slot,id2seq,lmode,requestfromv$lock,v$sessionwherev$lock.type='TX'andv$lock.sid=v$session.sid;查詢的是行級排他鎖。selectxid,xidusn,xidslot,xidsqn,status,start_scnfromv$transactionorderbystart_scn/SELECTsid,blocking_session,username,blocking_session_statusFROMv$sessionWHEREusername='SCOTT'ORDERBYblocking_session/144將158阻塞住了。關(guān)閉有問題的會話一個用戶可能已經(jīng)運行了一些他/她也不想運行的東西,或者可能需要在工作時間終止一個有問題的查詢,到晚上再運行。selectusername,sid,serial#,program,terminalfromv$sessionwhereusernameisnotnull/在新的版本中,不允許中止當前會話。以上程序代碼中參數(shù)的順序是SID,然后是SERIAL#。確定鎖定其他用戶的用戶并終止他們的會話(如果需要)。我們發(fā)現(xiàn)當一個session被kill掉以后,該session的paddr被修改,如果有多個session被kill,那么多個session
的paddr都被更改為相同的進程地址:selectsaddr,sid,serial#,paddr,username,statusfromv$sessionwhereusernameisnotnull/在這種情況下,很多時候,資源是無法釋放的,我們需要查詢spid,在操作系統(tǒng)級來kill這些進程.但是由于此時v$session.paddr已經(jīng)改變,我們無法通過v$session和v$process關(guān)聯(lián)來獲得spid那還可以怎么辦呢?Ok,現(xiàn)在我們獲得了進程地址,就可以在v$process中找到spid,然后可以使用Kill或者orakill在系統(tǒng)級來殺掉這些進程.當在Oracle中killsession以后,Oracle只是簡單的把相關(guān)session的paddr指向同一個虛擬地址.此時v$process和v$session失去關(guān)聯(lián),進程就此中斷.然后Oracle就等待PMON去清除這些Session.所以通常等待一個被標記為Killed的Session退出需要花費很長的時間.如果此時被Kill的process,重新嘗試執(zhí)行任務(wù),那么馬上會收到進程中斷的提示,process退出,此時Oracle會立即啟動PMON
來清除該session.這被作為一次異常中斷處理.查找使用多會話的用戶有些時候,用戶喜歡使用多會話來一次完成多個任務(wù),但這會引起問題。開發(fā)人員也會有同樣的問題,如果他開發(fā)了一個創(chuàng)建了會派生大量進程的糟糕的應(yīng)用程序。所有這些都可能降低系統(tǒng)的綜合性能。用戶名NULL是后臺進程。selectusername,count(*)fromv$sessiongroupbyusername;V$SESSION視圖中用戶名NULL的行是Oracle的后臺進程。技巧:確定使用了多會話的用戶,并判定是一個管理問題(用戶使用了多終端)還是一個系統(tǒng)問題(會話沒有被清除,或者產(chǎn)生了多余的進程)。我們可以使用配置文件來限制用戶的登錄會話數(shù)。selectsubstr(profile,1,10)Profile,substr(resource_name,1,30)"ResourceName",substr(limit,1,10)Limitfromdba_profilesgroupbysubstr(profile,1,10),substr(resource_name,1,30),substr(limit,1,10)/查看當前的用戶配置文件。查找磁盤I/O問題視圖V$DATAFILE、V$FILESTAT和V$DBA_DATA_FILES提供了數(shù)據(jù)庫中所有數(shù)據(jù)文件和磁盤的文件I/O活動信息。理想情況下,物理的讀和寫應(yīng)當平均分布。如果沒有合理的配置系統(tǒng),其綜合性能就會受到影響。下面程序清單中的腳本展示了實際的分布情況并可以很方便地判斷出是否有不平衡的現(xiàn)象存在。selecta.file#,,a.status,a.bytes,b.phyrds,b.phywrtsfromv$datafilea,v$filestatbwherea.file#=b.file#/報告獲得數(shù)據(jù)文件I/O的情況SetTrimSpoolOnSetLine142SetPages57SetNewPage0SetFeedBackOffSetVerifyOffSetTermOnTTitleOffBTitleOffClearBreaksBreakOnTablespace_NameColumnTableSpace_NameForA12Head"Tablespace"ColumnNameForA45Head"FileName"ColumnTotalFor999,999,990Head"Total"ColumnPhyrdsFor999,999,990Head"Physical|Reads"ColumnPhywrtsFor999,999,990Head"Physical|Writes"ColumnPhyblkrdFor999,999,990Head"Physical|BlockReads"ColumnPhyblkwrtFor999,999,990Head"Physical|BlockWrites"ColumnAvg_Rd_TimeFor90.9999999Head"Average|ReadTime|PerBlock"ColumnAvg_Wrt_TimeFor90.9999999Head"Average|WriteTime|PerBlock"ColumnInstanceNew_Value_InstanceNoPrintColumnTodayNew_Value_DateNoPrintSelectGlobal_NameInstance,To_Char(SysDate,'FXDay,MonthDD,YYYYHH:MI')TodayFromGlobal_Name;TTitleOnTTitleLeft'DateRun:'_DateSkip1-Center'DataFileI/O'Skip1-Center'InstanceName:'_InstanceSkip1selectC.TableSpace_Name,B.Name,A.Phyblkrd+A.PhyblkwrtTotal,A.Phyrds,A.Phywrts,A.Phyblkrd,A.PhyblkwrtFromV$FileStatA,V$DataFileB,Sys.DBA_Data_FilesCwhereB.File#=A.File#andB.File#=C.File_IdorderbyTableSpace_Name,A.File#/selectobject_name,statistic_name,valuefromv$segment_statisticswherevalue>100orderbyvalue;上面的兩個SQL語句都非常的有意義。ColumnTableSpace_NameForA12Head"Tablespace"ColumnTotalFor9,999,999,990Head"Total"ColumnPhyrdsFor9,999,999,990Head"Physical|Reads"ColumnPhywrtsFor9,999,999,990Head"Physical|Writes"ColumnPhyblkrdFor9,999,999,990Head"Physical|BlockReads"ColumnPhyblkwrtFor9,999,999,990Head"Physical|BlockWrites"ColumnAvg_Rd_TimeFor9,999,990.9999Head"Average|ReadTime|PerBlock"ColumnAvg_Wrt_TimeFor9,999,990.9999Head"Average|WriteTime|PerBlock"ClearBreaksBreakonDiskSkip1ComputeSumOfTotalOnDiskComputeSumOfPhyrdsOnDiskComputeSumOfPhywrtsOnDiskComputeSumOfPhyblkrdOnDiskComputeSumOfPhyblkwrtOnDiskTTitleLeft'DateRun:'_DateSkip1-Center'DiskI/O'Skip1-Center'InstanceName:'_InstanceSkip2selectSubStr(B.Name,1,13)Disk,C.TableSpace_Name,A.Phyblkrd+A.PhyblkwrtTotal,A.Phyrds,A.Phywrts,A.Phyblkrd,A.Phyblkwrt,((A.ReadTim/Decode(A.Phyrds,0,1,A.Phyblkrd))/100)Avg_Rd_Time,((A.WriteTim/Decode(A.PhyWrts,0,1,A.PhyblkWrt))/100)Avg_Wrt_TimefromV$FileStatA,V$DataFileB,Sys.DBA_Data_FilesCwhereB.File#=A.File#andB.File#=C.File_IdorderbyDisk,C.Tablespace_Name,A.File#/查找回滾段的內(nèi)容selects.username,fromv$transactiont,v$rollstatr,v$rollnameu,v$sessionswheres.taddr=t.addrandt.xidusn=r.usnandr.usn=u.usnorderbys.username/查看回滾段的使用情況,哪個用戶正在使用回滾段的資源。SELECT,s.extents,s.rssize,s.optsize,s.hwmsize,s.xacts,s.statusFROMv$rollnamen,v$rollstatsWHEREn.usn=s.usn/查看回滾段的統(tǒng)計信息V$ROLLSTAT中的常用列
USN:回滾段標識
RSSIZE:回滾段默認大小
XACTS:活動事務(wù)數(shù)在一段時間內(nèi)增量用到的列
WRITES:回滾段寫入數(shù)(單位:bytes)
SHRINKS:回滾段收縮次數(shù)
EXTENDS:回滾段擴展次數(shù)
WRAPS:回滾段翻轉(zhuǎn)(wrap)次數(shù)
GETS:獲取回滾段頭次數(shù)
WAITS:回滾段頭等待次數(shù),b.extents,b.rssize,b.xacts,b.waits,b.gets,optsize,statusfromv$rollnamea,v$rollstatbwherea.usn=b.usn/查詢V$ROLLNAME、V$ROLLSTAT和V$TRANSACTION視圖可以提供用戶如何使用回滾段和撤消表空間的信息。通常情況下,在一個時間點上不應(yīng)讓多個用戶訪問同一個回滾段(盡管這是被允許的)。SetTrimSpoolOnSetNewPage0SetPages57SetLine132SetFeedBackOffSetVerifyOffSetTermOnTtitleOffBtitleOffClearBreaksColumnEventForA40Heading"WaitEvent"ColumnTotal_WaitsFor999,999,990Head"TotalNumber|OfWaits"ColumnTotal_TimeoutsFor999,999,990Head"TotalNumber|OfTimeOuts"ColumnTot_TimeFor999,999,990Head"TotalTime|Waited"ColumnAvg_TimeFor99,990.999Head"AverageTime|PerWait"ColumnInstanceNew_Value_InstanceNoPrintColumnTodayNew_Value_DateNoPrintselectGlobal_NameInstance,To_Char(SysDate,'FXDayDD,YYYYHH:MI')TodayfromGlobal_Name;TTitleOnTTitleLeft'DateRun:'_DateSkip1-Center'SystemWideWaitEvents'Skip1-Center'InstanceName:'_InstanceSkip2下面程序清單中的查詢顯示了整個系統(tǒng)在整體上的等待數(shù)。Selectevent,total_waits,total_timeouts,(time_waited/100)tot_time,(average_wait/100)Avg_timefromv$system_eventorderbytotal_waitsdesc/檢查空閑列表是否充足在使用多進程完成大量的插入操作時,應(yīng)確保有足夠的空閑列表和空閑列表組。空閑列表的默認存儲值是1。如果您使用了ASSM,Oracle將為您管理這些參數(shù),但是一個有大量數(shù)據(jù)交換的事務(wù)環(huán)境中,在應(yīng)用ASSM前應(yīng)經(jīng)過仔細的測試。雖然如此,但通常最好使用ASSM。如果活動比率超過1%,就需要增加空閑列表組了檢查角色和權(quán)限設(shè)置selectb.owner||'.'||b.table_nameobj,b.privilegewhat_granted,b.grantable,a.usernamefromsys.dba_usersa,sys.dba_tab_privsbwherea.username=b.granteeanda.username='SCOTT'orderby1,2,3/用戶scott的對象級權(quán)限selectb.privilegewhat_granted,b.admin_option,a.usernamefromsys.dba_usersa,sys.dba_sys_privsbwherea.username=b.granteeandusername='SCOTT'orderby1,2/用戶SCOTT的系統(tǒng)級權(quán)限用戶SCOTT的角色用戶的所有權(quán)限。selecta.username,b.granted_role||decode(admin_option,'YES','(WithAdminOption)',null)what_grantedfromsys.dba_usersa,sys.dba_role_privsbwherea.username=b.granteeandusername='SCOTT'UNIONselecta.username,b.privilege||decode(admin_option,'YES','(WithAdminOption)',null)what_grantedfromsys.dba_usersa,sys.dba_sys_privsbwherea.username=b.granteeandusername='SCOTT'UNIONselecta.username,b.table_name||'-'||b.privilege||decode(grantable,'YES','(WithGrantOption)',null)what_grantedfromsys.dba_usersa,sys.dba_tab_privsbwherea.username=b.granteeandusername='SCOTT'orderby1;Selectusername,profile,default_tablespace,temporary_tablespace,createdfromsys.dba_userswhereusername='SCOTT'orderbyusername/查詢用戶名及相應(yīng)的配置文件、默認的表空間和臨時表空間等待事件V$視圖本節(jié)包含一些顯示等待事件的V$腳本。從實用角度來說,應(yīng)該使用STATSPACK報表、AWR報表或企業(yè)管理器來查找等待事件。在V$SESSION_WAIT中找到的東西現(xiàn)在在V$SESSION中也可以找到。selectevent,sum(decode(wait_time,0,1,0))"WaitingNow",sum(decode(wait_time,0,0,1))"PreviousWaits",count(*)"Total"fromv$session_waitgroupbyeventorderbycount(*)/selectevent,sum(decode(wait_time,0,1,0))"WaitingNow",sum(decode(wait_time,0,0,1))"PreviousWaits",count(*)"Total"fromv$session_waitgroupbyeventorderbycount(*);WAIT_TIME=0meanstha
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度股權(quán)轉(zhuǎn)讓及經(jīng)營權(quán)轉(zhuǎn)讓一體化協(xié)議
- 二零二五年度居民住房租賃合同租賃房屋租賃期限調(diào)整協(xié)議
- 二零二五年度保密信息處理保密合同
- 綠茶茶園承包經(jīng)營合同(2025年度)含茶樹病蟲害防治服務(wù)
- 二零二五年度農(nóng)村宅基地買賣合同協(xié)議書(農(nóng)村產(chǎn)權(quán)交易平臺)
- 二零二五年度個人私下股權(quán)轉(zhuǎn)讓及投資風險分擔協(xié)議
- 代理銷售合同市場拓展策略約定事項說明
- 三字經(jīng)儒家經(jīng)典讀后感
- 歷史人物事件記憶題
- 企校合作辦學(xué)合同
- 2025高考數(shù)學(xué)專項復(fù)習:導(dǎo)數(shù)的27個模塊專練(含答案)
- 涵洞工程專項施工方案
- DB32-T 4107-2021 民用建筑節(jié)能工程熱工性能現(xiàn)場檢測標準
- 七年級上冊生物2024-2025學(xué)年新人教版期末綜合試卷(含答案)
- 延長殼牌加油站PTW培訓(xùn)教材(工作許可證體系)
- 2024年國家電網(wǎng)招聘之電工類考試題庫附答案(滿分必刷)
- 晶體缺陷獲獎?wù)n件
- 燃氣用聚乙烯管道焊接工藝評定DB41-T 1825-2019
- (人教PEP2024版)英語一年級上冊Unit 2 教學(xué)課件(新教材)
- 經(jīng)銷商轉(zhuǎn)戶證明范文
- DB23T 3761-2024 建設(shè)工程對水文監(jiān)測影響評價報告編制規(guī)程
評論
0/150
提交評論