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. MySQL运维实战(1.1)安装部署:使用RPM进行安装部署

    作者:俊达 我们在生产环境部署mysql时,一般很少使用RedHat Package Manager(RedHat软件包管理工具).用rpm或或者其他包管理器安装mysql有其好处,例如安装简单,并且 ...

  2. URL编码揭秘:为什么要进行URL编码?

    URL(Uniform Resource Locator,统一资源定位符)是互联网上资源地址的唯一标识符.在网络请求和数据传输过程中,URL编码起着至关重要的作用. URL编码解码 | 一个覆盖广泛主 ...

  3. MySQL基础篇:第八章_详解TCL语言

    事务 一.含义 事务:一条或多条sql语句组成一个执行单位,一组sql语句要么都执行要么都不执行 二.特点(ACID) A 原子性:一个事务是不可再分割的整体,要么都执行要么都不执行 C 一致性:一个 ...

  4. 详解Apache Sentry->Ranger平滑升级方案

    摘要:本文主要探讨如何平滑解决sentry到ranger升级过程中的权限迁移问题. 本文分享自华为云社区<[平滑上云]Apache Sentry->Ranger平滑升级方案>,作者: ...

  5. 2022 IDC中国未来企业大奖优秀奖颁布,华为云数据库助力德邦快递获奖

    摘要:华为云数据库助力德邦快递打造的"基于数智融合的一站式物流供应链平台"项目从500多个项目中脱颖而出,荣获2022 IDC中国未来企业大奖优秀奖"未来智能领军者&qu ...

  6. 跟我读论文丨ACL2021 NER BERT化隐马尔可夫模型用于多源弱监督命名实体识别

    摘要:本文是对ACL2021 NER BERT化隐马尔可夫模型用于多源弱监督命名实体识别这一论文工作进行初步解读. 本文分享自华为云社区<ACL2021 NER | BERT化隐马尔可夫模型用于 ...

  7. 带你掌握二进制SCA检测工具的短板及应对措施

    摘要:本文针对二进制SCA检测技术短板所面临的一些特殊场景.检测影响及应对措施进行详细分析和说明,希望对使用二进制SCA检测工具的测试和研发人员有所帮助. 本文分享自华为云社区<二进制SCA检测 ...

  8. ipa文件怎么安装到iPhone手机上?

    ​ ipa文件怎么安装到iPhone手机上? 无需越狱帮你把ipa文件安装到苹果手机上 E86苹果签名简介:点击可查看 很多人都知道apk文件是安卓的app应用程序文件名,但有人知道苹果ios的app ...

  9. MySQL 数据库中的数据类型

    整数类型 标准 SQL 中支持 INTEGER 和 SMALLINT 这两种类型,MySQL 数据库除了支持这两种类型以外,还扩展支持了 TINYINT.MEDIUMINT 和 BIGINT 整数类型 ...

  10. #3038:How Many Answers Are Wrong (带权并查集)

    HDU 3038 第一次接触带权并查集 //带权并查集 更新父节点的同时更新权值 #include<bits/stdc++.h> using namespace std; const in ...