關於oracle session的簡單測試
平時檢視v$session的時候要定位一個session,需要sid,serial#這個兩個值,其實更多時候我們關注更多的是sid,對於serial#卻不太瞭解。
至少從v$mystat中,可以看到,是隻能定位到sid的,對於serial#的值還需要藉助v$session來查詢。
SQL> desc v$mystat
Name Null? Type
----------------------------------------- -------- ----------------------------
SID NUMBER
STATISTIC# NUMBER
VALUE NUMBER
有時候看著sid,serial#的變化,想可能裡面有一定的規律,今天還是下決心寫個程式自己簡單測試下,測試結果僅供參考。
我寫了如下的指令碼,
-rw-r--r-- 1 ora11g dba 57151 Sep 15 08:11 check.log
-rw-r--r-- 1 ora11g dba 183 Sep 15 07:52 check.sh
-rw-r--r-- 1 ora11g dba 45 Sep 15 07:53 loop.sh
-rw-r--r-- 1 ora11g dba 2 Sep 15 08:05 sleep_time.par
[ora11g@rac1 chk_session]$
loop.sh的內容很簡單就是迴圈呼叫check.sh,然後寫入日誌check.log
while true
do
ksh check.sh >> check.log
done
check.sh的內容也很簡單,就是每次使用sqlplus來建立一個session。然後sleep一定的時間。
sleep_time=`cat sleep_time.par`
sqlplus -s n1/n1 <
EOF
echo $sleep_time
sleep $sleep_time
為了能夠更加靈活的控制建立session之後的sleep時間,我們可以動態的修改sleep的時間,具體的值在sleep_time.par中,可以動態修改。
[ora11g@rac1 chk_session]$ cat sleep_time.par
3
有了如上的準備工作,來看看輸出的check.log的內容吧。可以看到在1秒的間隔時間下,重新建立的session的sid不會發生變化,而serial#會按照2的間隔遞增。
SID SERIAL#
---------- ----------
257 93
1
SID SERIAL#
---------- ----------
257 95
1
SID SERIAL#
---------- ----------
257 97
動態調整間隔時間為3秒,發現沒有任何的改變。
SID SERIAL#
---------- ----------
257 137
3
SID SERIAL#
---------- ----------
257 139
3
SID SERIAL#
---------- ----------
257 141
在我重新調整了時間,從3秒調整到10秒,還是沒有改變,然後調整為30秒的時候。發現sid發生了變化,而且serial#不是從1開始遞增。
10
SID SERIAL#
---------- ----------
257 167
10
SID SERIAL#
---------- ----------
257 169
30
SID SERIAL#
---------- ----------
258 515
30
SID SERIAL#
---------- ----------
258 517
然後sid開始固定,serial#開始遞增
SID SERIAL#
---------- ----------
258 565
30
SID SERIAL#
---------- ----------
21 31
30
我在想不是serial#有個臨界值之類的。
於是把間隔時間調整為0秒。
結果serial#遞增到1500多還是沒有任何反應。然後由0秒調整為3秒後的變化如下:
SID SERIAL#
---------- ----------
21 1603
0
SID SERIAL#
---------- ----------
21 1605
3
SID SERIAL#
---------- ----------
21 1607
3
SID SERIAL#
---------- ----------
21 1609
3
SID SERIAL#
---------- ----------
21 1611
3
SID SERIAL#
---------- ----------
253 135
SID SERIAL#
---------- ----------
253 175
3
SID SERIAL#
---------- ----------
257 175
如果觀察足夠仔細,就會發現最後的sid為257的session在最開始的時候已經用過,只是serial#部分不同,新建的session 257,175和之前的部分也沒有衝突,是從上一次中斷的那個serial#值開始的。
林林總總做了一圈測試,發現session的sid,serial#有如下的基本規律。
serial#按照2的頻度進行遞增。
serial#的分配由資料庫自動控制,有點類似連線池的味道,下次某個session在sid相同的情況下,serial#會從上一次的值開始繼續遞增。
sid的變化在一定的時間範圍內沒有明顯的規律。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-1347025/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle logmnr簡單測試Oracle
- 關於 Android 單元測試Android
- Python容器相關簡單效能測試Python
- 使用python對oracle進行簡單效能測試PythonOracle
- 【Oracle19c】Oracle19c rman使用簡單測試Oracle
- 關於單元測試的一些想法
- 簡單的 ping 測試
- session測試Session
- 關於軟體驗證中的單元測試
- 關於BFC的簡單理解
- 關於JSON的簡單使用JSON
- 關於RabbitMQ的簡單理解MQ
- 關於測試
- 建立簡單的表測試
- try的簡單效能測試
- 關於一個簡單介面的併發測試與優化記錄優化
- 關於單例及靜態變數測試單例變數
- 簡單對比測試了幾個基於 swoole 的框架框架
- 關於 PHP 框架的簡單思考PHP框架
- 關於GJSON包的簡單使用JSON
- Hibernate對注入的簡單測試
- 讓 API 測試變的簡單API
- keycloak~關於session idle和session max的解釋Session
- mysql簡單效能測試MySql
- 關於Session和CookieSessionCookie
- 有關oracle external table的一點測試。Oracle
- oracle鎖級別相關測試Oracle
- 關於 React Hooks 的簡單介紹ReactHook
- 關於STL容器的簡單總結
- 關於簡單的js計步功能JS
- 關於JDK15的簡單理解JDK
- 簡單的神經網路測試神經網路
- Jmeter效能測試簡單使用JMeter
- 【PG效能測試】pgbench效能測試工具簡單使用
- 關於流媒體的效能測試
- 關於SSM框架的一個簡單DemoSSM框架
- 關於dva框架的簡單操作以及demo框架
- 關於 IDEA 簡單實用的小功能Idea
- 關於 RabbitMQ 的安裝與簡單使用MQ