前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于oracle session的简单测试(r2笔记95天)

关于oracle session的简单测试(r2笔记95天)

作者头像
jeanron100
发布2018-03-14 17:11:51
6830
发布2018-03-14 17:11:51
举报

平时查看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 select sid,serial# from v\$session where sid=(select sid from v\$mystat where rownum<2); 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的变化在一定的时间范围内没有明显的规律。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2014-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档