Posted on 2009-10-03 02:07
leekiang 閱讀(1545)
評(píng)論(0) 編輯 收藏 所屬分類:
oracle
比如用"TEST"用戶通過plsqldevleper登錄,
執(zhí)行select * from v$session t where t.USERNAME='TEST';
會(huì)看到至少兩條記錄,其中action列為Main session的是plsqldevleper固有的,
每一個(gè)SQL Window都會(huì)有一個(gè)session,action顯示為"SQL Window - New"
當(dāng)前window對(duì)應(yīng)的session的STATUS列顯示為ACTIVE,其他顯示為"INACTIVE",
搞不明白"INACTIVE"的session為何還會(huì)顯示,什么時(shí)候不顯示呢?
至于查看當(dāng)前session的ID,用 select distinct sid from v$mystat;
順便記錄一下v$mystat,v$sesstat和v$sysstat的區(qū)別
按照OracleDocument中的描述,v$sysstat存儲(chǔ)自數(shù)據(jù)庫(kù)實(shí)例運(yùn)行那刻起就開始累計(jì)全實(shí)例(instance-wide)的資源使用情況,
我覺得可以理解為是許多綜合性、全局性的指標(biāo),比如總登錄次數(shù)(logons cumulative)
如果從v$sysstat查得有347個(gè)指標(biāo),那么v$mystat(表示當(dāng)前session的情況)相應(yīng)的也有347個(gè)指標(biāo),
v$sesstat包括了所有session(包括活動(dòng)的和不活動(dòng)的)的指標(biāo)的值,當(dāng)然也就囊括了v$mystat,其記錄數(shù)為347*25(如果有25個(gè)session的話)=8675,
至于指標(biāo)號(hào)"STATISTIC#"表示的含義,可從v$statname查得。
在B/S系統(tǒng)中,頁(yè)面紛繁復(fù)雜,而且經(jīng)過系統(tǒng)長(zhǎng)時(shí)間運(yùn)行,如果發(fā)現(xiàn)某個(gè)session的wait比較嚴(yán)重,進(jìn)行sql優(yōu)化時(shí),很難知道這個(gè)sql是用在程
序的哪個(gè)模塊,很多時(shí)候只能根據(jù)開發(fā)人員的經(jīng)驗(yàn)來定位這個(gè)sql,或者打開程序代碼,搜索。這樣的效率很低,這里介紹一個(gè)方法來快速定位發(fā)生問題的sql
的位置。
ORACLE提供了DBMS_APPLICATION_INFO包,其中提供了set_client_info、set_module、
set_action、read_module、read_client_info、set_session_longops幾個(gè)過程,其中分別用于設(shè)置
客戶端信息、設(shè)置module信息(這里同時(shí)必須設(shè)置一個(gè)action信息)、設(shè)置action信息、讀取module信息(同時(shí)也會(huì)得到action信
息)、讀取client_info信息和手動(dòng)設(shè)置一個(gè)會(huì)話為longops。
exec dbms_application_info.set_client_info('test client info');
exec dbms_application_info.set_module(module_name => 'test module',action_name => 'test action');
http://zhang41082.itpub.net/post/7167/305794
How to trace the connection pool in a Java Web application - DBMS_APPLICATION_INFO
http://stackoverflow.com/questions/829302/how-to-trace-the-connection-pool-in-a-java-web-application-dbmsapplicationinf
http://stackoverflow.com/questions/53379/using-dbmsapplicationinfo-with-jboss
http://www.mailinglistarchive.com/java-dev@lists.apple.com/msg10280.html
使用v$sysstat中的數(shù)據(jù)
該視圖中數(shù)據(jù)常被用于監(jiān)控系統(tǒng)性能。如buffer cache命中率、軟解析率等都可從該視圖數(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)值的不同(end value - begin value)即是這一時(shí)間段內(nèi)的資源消耗情況。這是oracle工具的常用方法,諸如Statspack以及BSTAT/ESTAT都是如此。
為了對(duì)比某個(gè)區(qū)間段的數(shù)據(jù),源數(shù)據(jù)可以被格式化(每次事務(wù),每次執(zhí)行,每秒鐘或每次登陸),格式化后數(shù)據(jù)更容易從兩者中鑒別出差異。這類的對(duì)比在升級(jí)前,升級(jí)后或僅僅想看看一段時(shí)間內(nèi)用戶數(shù)量增長(zhǎng)或數(shù)據(jù)增加如何影響資源使用方面更加實(shí)用。
你也可以使用v$sysstat數(shù)據(jù)通過查詢v$system_event視圖來檢查資源消耗和資源回收。
參見http://www.cnblogs.com/jimeper/archive/2008/03/30/1129431.html
該文后面有這樣一句話
人生有三寶:終身運(yùn)動(dòng),終身學(xué)習(xí),終身反省.吸收新知,提高效率,懂得相處,成就自己,也成就他人,創(chuàng)造最高價(jià)值。
ORACLE的連接數(shù)(sessions)與其參數(shù)文件中的進(jìn)程數(shù)(process)有關(guān),它們的關(guān)系如下:
sessions=(1.1*process+5)
但是我們?cè)黾觩rocess數(shù)時(shí),往往數(shù)據(jù)庫(kù)不能啟動(dòng)了。這因?yàn)槲覀冞€漏調(diào)了一個(gè)unix系統(tǒng)參數(shù):它是/etc/system/ 中semmns,這是unix系統(tǒng)的信號(hào)量參數(shù)。每個(gè)process會(huì)占用一個(gè)信號(hào)量。semmns調(diào)整后,需要重新啟動(dòng)unix 操作系統(tǒng) ,參數(shù)才能生效。不過它的大小會(huì)受制于 硬件 的內(nèi)存或ORACLE SGA。范圍可從200-2000不等。
semmns的計(jì)算公式為:SEMMNS > processes + instance_processes + system processes = 數(shù)據(jù)庫(kù)參數(shù)processes的值 instance_processes = 5(smon,pmon,dbwr,lgwr,arch)
system=系統(tǒng)所占用信號(hào)量。
系統(tǒng)所占用信號(hào)量可用下列命令查出:#ipcs -sb
其中列NSEMS顯示系統(tǒng)已占用信號(hào)量。
其它一些跟連接有關(guān)的參數(shù),如 licence_max_sessions, licence_sessions_warning 等默認(rèn)設(shè)置都為零,也就是沒有限制。