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