关于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的变化在一定的时间范围内没有明显的规律。

目录
相关文章
|
1月前
|
SQL Oracle 关系型数据库
oracle11g SAP测试机归档日志暴增排查(二)
oracle11g SAP测试机归档日志暴增排查(二)
62 1
|
1月前
|
Oracle 关系型数据库 Shell
oracle11g SAP测试机归档日志暴增排查(一)
oracle11g SAP测试机归档日志暴增排查(一)
25 1
|
28天前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错之使用oracle-cdc的,遇到错误:ORA-01292: no log file has been specified for the current LogMiner session,该如何处理
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
11天前
|
运维 DataWorks Oracle
DataWorks产品使用合集之在标准模式下,当同步Oracle的表或视图时,是否需要在源端的测试和生产环境中都存在要同步的表或视图
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
12 3
|
11月前
|
SQL Oracle 关系型数据库
docker快速部署oracle19c、oracle12c,测试环境问题复现demo快速搭建笔记
docker快速部署oracle19c、oracle12c,测试环境问题复现demo快速搭建笔记
1161 0
|
人工智能 运维 Oracle
ChatGPT能代替Oracle DBA吗?用Oracle OCP(1z0-083)的真题测试一下(文末投票)
ChatGPT已经通过了很多考试,姚远老师是Oracle OCP和MySQL OCP讲师,我很好奇ChatGPT能不能通过Oracle OCP的考试呢?让我们拿Oracle 19c OCP考试(1z0-082)的真题对ChatGPT进行一个测试。
143 0
|
人工智能 运维 Oracle
ChatGPT能代替Oracle DBA吗?用Oracle OCP(1z0-083)的真题测试一下。
第1道题ChatGPT就做错了,姚远老师心里不禁窃喜,看来ChatGPT也不咋地,我们也许不会失业,让我们来看看第一道题的题目
129 0
|
Oracle 关系型数据库 测试技术
使用swingbench进行Oracle的基准测试和造数据
别忘了设置环境变量,安装oracle客户端
157 0
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
深入探索软件测试:策略、工具与未来趋势
【5月更文挑战第38天】 在软件开发的生命周期中,测试环节扮演着至关重要的角色。随着技术的不断进步和市场需求的多样化,传统的测试方法已逐渐不能满足现代软件项目的需求。本文旨在提供一个全面的软件测试概述,包括最新的测试策略、常用工具以及预测未来的发展趋势。通过分析自动化测试的效益、持续集成的重要性以及人工智能在测试中的应用,文章将帮助读者构建一个更高效、更智能的软件测试环境。
|
2天前
|
监控 前端开发 测试技术
postman接口测试工具详解
postman接口测试工具详解
23 7

热门文章

最新文章

推荐镜像

更多