关于oracle session的简单测试

简介: 平时查看v$session的时候要定位一个session,需要sid,serial#这个两个值,其实更多时候我们关注更多的是sid,对于serial#却不太了解。

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

目录
相关文章
|
9月前
|
SQL Oracle 关系型数据库
oracle11g SAP测试机归档日志暴增排查(二)
oracle11g SAP测试机归档日志暴增排查(二)
374 1
|
9月前
|
Oracle 关系型数据库 Shell
oracle11g SAP测试机归档日志暴增排查(一)
oracle11g SAP测试机归档日志暴增排查(一)
100 1
|
9月前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错之使用oracle-cdc的,遇到错误:ORA-01292: no log file has been specified for the current LogMiner session,该如何处理
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
7月前
|
监控 Oracle 关系型数据库
关系型数据库Oracle恢复测试
【7月更文挑战第20天】
121 7
|
8月前
|
存储 前端开发 JavaScript
VSCode调试揭秘:Live Server助力完美测试Cookie与Session,远超“Open in Browser“!
VSCode调试揭秘:Live Server助力完美测试Cookie与Session,远超“Open in Browser“!
|
8月前
|
运维 DataWorks Oracle
DataWorks产品使用合集之在标准模式下,当同步Oracle的表或视图时,是否需要在源端的测试和生产环境中都存在要同步的表或视图
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
67 3
|
SQL Oracle 关系型数据库
docker快速部署oracle19c、oracle12c,测试环境问题复现demo快速搭建笔记
docker快速部署oracle19c、oracle12c,测试环境问题复现demo快速搭建笔记
1983 0
|
人工智能 运维 Oracle
ChatGPT能代替Oracle DBA吗?用Oracle OCP(1z0-083)的真题测试一下(文末投票)
ChatGPT已经通过了很多考试,姚远老师是Oracle OCP和MySQL OCP讲师,我很好奇ChatGPT能不能通过Oracle OCP的考试呢?让我们拿Oracle 19c OCP考试(1z0-082)的真题对ChatGPT进行一个测试。
191 0
|
Oracle 关系型数据库 调度
在Oracle中session和process的区别(转)
对应元数据表 v$resource_limit。 相互关系 sessions=1.1 * processes + 5 ,至于开多少个进程和你的用户并发数有关。 如果修改要修改数据库初始化参数,processes 和session 在Oracle中session和pro...
2281 0
|
SQL 关系型数据库 Oracle
oracle v$session v$lock v$transaction v$process v$sql
Name                    Type         Nullable Default Comments   ----------------------- ------------ -------- ------- -------- ...
799 0

推荐镜像

更多