Oracle session的sid与serial的简单学习


ITPUB vage的说法

这样说吧,Oracle允许的会话数(或者说连接数)是固定的,比如是3000个。假设每个会话要占1K字节,哪一共就需要3000K。
这3000K就是一个小内存池,可以称为会话池。会话池中每个1K保存一个会话的信息,可以称为一个会话Slot。
假设编号为100的会话Slot(也就是Sid为100),有一个会话连接,Oracle将会话信息保存在100号Slot(也就是新建立的连接会话号为100),此时serail#为1。
当此会话断开连接后,过一会,又有一个会话连接,Oracle又将会话信息保存在100号Slot(也就是会话号又是100),此时Serail#为2。
Serial#,代表第几次使用同一个会话Slot。 http://www.itpub.net/thread-1600999-1-1.html

自己的理解

之前总结过 Oracle其实是有 专用模式和共享模式的
但是官方说的 session=1.1*process+5的经验值设置大法并没有直接说明 是专用模式下还是共享模式. 按照理解. 专用模式下面 process的数据量应该肯定会大于session的数量 因为session和process 是需要一对一的. 但是process 并没有必须创建session的创景. 在按照vage大神的说法. sid 其实就是一个slot 槽的概念, 其实没有实际的意义, 不相同是应该,相同的话是运气.
决定具体执行SQL以及SQL结果的是 serial#的数值,以及游标的信息. 在java 的连接池模式下. 理论上我一个线程的多个短促事务非常有可能使用到相同的sid, serial# 在部分情况下可能指向的是连接的会话. cursor 会指向会话内的一个具体的SQL执行,用于返回结果集. sid 与数据库里面的process 相关(理论上使用PGA的内存空间)
serial 与会话相关. 表名是谁在连接, 并且可能还没有显示的进行终止
会话终止了. process会进入等待被使用的状态. sid就会变成空闲. 然后下一个会话进来时 可能使用相关的sid 但是serial会 +1 进行区分. 然后没执行一条SQL会对应一个cursor.
这里面oracle的一些参数就跟linux的参数比较类似了. process和session 的最大值只的是整个系统的
open_cursor的最大值 指的却是每一个 session 的.
所以理论上一个数据库能够支撑的游标总数可能是 open_cursor*max_session. 是比较恐怖的. cursor和process一样都是需要占用内存进行存储结果的.
cursor 可能还会跟library cache相关联. 一条SQL进入数据库, 会先进行md5的处理
如果library cache中有相同的md5 那么就是soft parse 如果没有就是hard parse
soft 比 hard 性能和速度要好很多, 这个里面就是 绑定变量让SQL的 md5值保持一致来减少CPU消耗提高并发性能的根本原理. 然后如果cursor中会有,相同SQL的执行记录, 那么就会 soft soft parse. 速度更快消耗更少, 但是会让session占用更多的内存,
也就是session_cursor 类型的参数来决定能够储存 解析过SQL多少的能力. 也是空间换时间的逻辑. parse 完后其实就是进入了 CBO的逻辑 这里与今天的思考没关系,就不展开了(我也没闹明白)

部分实验

可以使用
select session_ID,COUNT(1) from v$active_session_history GROUP BY session_ID ORDER BY 1 DESC
查看当前数据库的最大的SID的值
比如我这边服务器就显示: 6389 select * from gv$parameter where name like '%session%'
查看对应的参数发现结果为:
6784 理论上肯定与最大值比较接近, 其实是session就是一个艰难的数值类型.
select session_ID,COUNT(1) from v$active_session_history GROUP BY session_ID ORDER BY 2 DESC 按照 没有被刷出ASH内存的表中统计的序列号的多少看 可以发现那个session使用量最大.
当然了. 不一定是序号的总数 有可能是序号被统计的次数比较多, ASH表是每十秒取样一次. 并不是精确数值. select * from v$active_session_history where session_id = '2121' order by session_serial# desc
发现这个最大的是一个 后台进程 !-_-! 理论上很多后台进程 除非服务器重启后者是其他严重异常才会退出.

简单总结

数据库非常复杂. 边学边记...

Oracle session的sid与serial的简单学习的更多相关文章

  1. Oracle session连接数和inactive的问题记录

    Oracle session连接数和inactive的问题记录 http://timnity.javaeye.com/blog/280383 从上周起,服务器Oracle数据库出现问题,用不到半天,就 ...

  2. Oracle session出现大量的inactive

    一.官网说明 1.1 processes 11gR2 的文档: Property Description Parameter type Integer Default value 100 Modifi ...

  3. oracle——session

    一.解释session web应用中,session是服务器段保存用户信息的一个对象,cookie是浏览器端保存用户信息的对象.今天了解了oracle也有session对象,那么什么是oracle的s ...

  4. 【ORACLE】ORACLE session(会话)管理

    #查看当前不为空的连接select * from v$session where username is not null #查看不同用户的连接数 select username,count(user ...

  5. Oracle session active 和 inactive 状态 说明

    Oracle session active 和 inactive 状态 说明 原创 2011年06月12日 13:08:00 标签: session / oracle / database / ser ...

  6. Oracle session相关数据字典(一)

    (一)session相关视图 (1)视图 v$session v$active_session_history dba_hist_active_session_history 如果是多节点数据库,v$ ...

  7. Oracle system identifier(SID) "xxx" alread exits. Specify another SID

    案例环境: 操作系统    :Oracle Linux Server release 5.7 64 bit 数据库版本:Oracle Database 10g Release 10.2.0.4.0 - ...

  8. Oracle(1)之虚拟机下安装与简单使用

    Oracle介绍与安装 简介 Oracle 数据库系统是美国 ORACLE 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器 (CLIENT/SERVER) 或 B/ ...

  9. 重装Oracle时出现SID已存在问题的解决办法

    重装Oracle时出现SID已存在问题的解决办法    手机打开 注意安装oracle服务器的环境,不稳定导致数据库出现问题,后果很严重! 方法如下: 1.开始->设置->控制面板-&g ...

  10. 简单学习一下ibd数据文件解析

    来源:原创投稿 作者:花家舍 简介:数据库技术爱好者. GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 简单学习一下数据文件解析 这是尝试使用Golang语言简单解析My ...

随机推荐

  1. 如何用axios加后端数据库传值给前端

    小杰笔记: 如何用axios : 第一步:编写数据库实体类 @Data @AllArgsConstructor @NoArgsConstructor public class User { priva ...

  2. JVM优化:如何进行JVM调优,JVM调优参数有哪些

    Java虚拟机(JVM)是Java应用运行的核心环境.JVM的性能优化对于提高应用性能.减少资源消耗和提升系统稳定性至关重要.本文将深入探讨JVM的调优方法和相关参数,以帮助开发者和系统管理员有效地优 ...

  3. 限制左键拖拽图片阴影vue

    <template> <div> <img ref="image" :src="imageUrl" :style="im ...

  4. 软件界旷世之架:测试驱动开发(TDD)之争

    摘要:在软件行业中,神仙打架的名场面,那就不得不提的是2014年的那场--测试驱动开发(TDD)之争. 在历史上有很多精彩绝伦的神仙打架,比如数学界的牛顿和莱布尼茨关于微积分的旷世之争:比如量子物理中 ...

  5. IAP:物联网终端软件升级技术

    摘要:IAP是利用自己的程序代码实现升级程序(新的APP)从外部接口(可以是串口.I2C.SPI.网口等等)写入到flash中,再通过flash读写操作,将新的APP覆盖原有APP程序,在重新从新的A ...

  6. 拥抱时序数据库,构筑IoT时代下智慧康养数据存储底座

    摘要:在HDZ城市行广州站中,来自华为云华为云数据库创新Lab向宇从时序数据库的技术角度,解读一下华为云时序数据库GaussDB(for Influx)如何应用在智慧健康养老行业. 本文分享自华为云社 ...

  7. 华为AppCube入选Forrester《中国低代码平台市场分析报告》

    摘要:知名研究与分析机构Forrester于11月11日发布<中国低代码平台市场分析报告(The State Of Low-Code Platforms In China)>,AppCub ...

  8. 优化 uniapp 发行操作:一键打包、混淆代码

    ​ uniapp一键发行代码并混淆代码 第一步.在项目根目录下安装插件 npm install javascript-obfuscator -g 安装完成后,javascript-obfuscator ...

  9. Win10 企业版激活方法

    如果大家想要激活 Win10的企业版,可以依次执行下面的命令,分别表示安装win10企业版密钥,设置kms服务器,激活win10企业版;slmgr /ipk NW6C2-QMPVW-D7KKK-3GK ...

  10. 拒绝了对对象 ‘GetTips‘ (数据库 ‘vipsoft‘,架构 ‘dbo‘)的 EXECUTE 权限

    SQL Server 2016 安装 数据库-属性-权限-选择用户或角色-勾选执行权限即可.