简单分析shared pool(一)

简介: oracle中的shared pool很重要,但是感觉知之甚少。今天想在原来的认识上能够有一点更深入的了解。 简单做了一个总结。 首先是转储一下shared pool共享内存的内容。

oracle中的shared pool很重要,但是感觉知之甚少。今天想在原来的认识上能够有一点更深入的了解。
简单做了一个总结。
首先是转储一下shared pool共享内存的内容。
SQL> alter session set events 'immediate trace name heapdump level 2';
Session altered.
这个步骤会得到一个trace文件。简单的换算一下,就得到了trace文件的大体信息。

SQL> select sid from v$mystat where rownum        SID
----------
        24
SQL> select sid,serial# ,paddr from v$session where sid=24;
       SID    SERIAL# PADDR
---------- ---------- ----------------
        24         83 00000000727B03B0
SQL> select spid from v$process where addr='00000000727B03B0';
SPID
------------------------
18155
SQL> host
简单验证一下,对应的process是否存在。
[ora11g@rac1 ~]$ ps -ef|grep 18155
ora11g   18155 18106  0 06:00 ?        00:00:02 oracleTEST01 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
ora11g   19326 19167  0 06:21 pts/0    00:00:00 grep 18155
在trace文件目录下查看日志文件是否存在。

[ora11g@rac1 trace]$ ls -l *18155*.trc
-rw-r----- 1 ora11g dba 6900360 Nov  4 06:11 TEST01_ora_18155.trc
对于shared pool来说,存储单位是chunk,多个chunk组成一个链表,也叫做bucket.
每个bucket都对chunk的大小都有一定的范围,是一个连续的值,没有交叉。
在10g,11g中都设置了255个bucket。
简单通过trace文件来看一下。
[ora11g@rac1 trace]$ grep Bucket *18155*.trc
 Bucket 0 size=32
 Bucket 1 size=40
 Bucket 2 size=48
 Bucket 3 size=56
 Bucket 4 size=64
 Bucket 5 size=72
...
 Bucket 250 size=12352
 Bucket 251 size=12360
 Bucket 252 size=16408
 Bucket 253 size=32792
 Bucket 254 size=65560
可能对于bucket的大小没有一个直观的感受,可以生成一个图来看看就很清楚了。

随着bucket的增长,对应的chunk大小都在递增,绝大多数的bucket中,chunk的大小都在5k以内。只有很小的一部分bucket的支持的chunk size很大,
这个也是oracle在不断的改进中得到的一个最优值,按照比例来划分,保证每次访问需要的chunk大小都能够合理的分配,尽量减少冗余。
同时不是每个bucket里面都是有chunk的,这个chunk的分配还是根据进入shared pool以后申请chunk大小紧密相关,bucket中的chunk数目可不是平均的。


如果想看看shared Pool比较细节一下的信息。可以参考x$ksmsp
这个基表中还是包含了不少的信息值得我们去学习。首先x$ksmsp里面的每一条记录代表一个chunk

SQL> select count(*)from x$ksmsp;

  COUNT(*)
----------
     53317
如果你马上执行了一个其它的查询,再来看x$ksmsp的条数,就很可能发生变化。
SQL> select count(*)from all_objects;

  COUNT(*)
----------
     13225

SQL> select count(*)from x$ksmsp;

  COUNT(*)
----------
     53363

大体来说对于chunk的分配还是一个动态的过程,比如shared pool分为library cache,dictionary cache,如果chunk存放的sql相关的信息时,chunk就属于library cache.
如果chunk存放的信息时dictionary cache的话,chunk就属于dictionary cache.
按照大多数对象的生命周期,chunk的情况也大体如此,可能在不同的数据库版本中会略有不同。
比如在11gR2中的结果会和10g有一些不同。chunk的状态可能有多种,但是大体还是可以理解为4类,free,recr,perm,freeable
KSMCHCLS   COUNT(*)
-------- ----------
freeabl       20196
recr          26469
perm            581
R-freea         134
R-free           60
R-perm            4
free           5918
R-recr            1

首先,可以分配空间的chunk,这种类型的chunk是free,
如果某个session执行的sql语句,同时另外一个session也执行了同样的sql语句,在shared pool中这种类型的chunk就可以临时移出内存,因为可以在需要的时候进行重建。这种chunk就是recreatable的。
如果某个session执行的sql语句都是不同的,或者没有绑定变量,导致在执行的时候生成的sql_id都不同,这种类型的chunk是不能临时欲出内存的,只能在需要的时候进行释放。这种chunk就是freeable的。
如果某个对象通过dbms_pool给直接pin在了shared pool里面,那么对应的chunk就是permanent的,只能在根据需要的时候才释放空间。
目录
相关文章
|
云安全 数据采集 机器学习/深度学习
云安全 | 学习笔记
快速学习云安全,重点介绍了如何在 Linux 下进行安全防护,并从用户系统安全、SSH 安全、恶意文件安全和云安全四个角度诠释如何提升系统的安全性。
云安全 | 学习笔记
|
机器学习/深度学习 人工智能 监控
智能建筑管理系统:建筑能效的优化
【10月更文挑战第23天】智能建筑管理系统(IBMS)通过集成信息技术、自动化和通信技术,实现对建筑内设施的综合监控与管理,优化能效,提升舒适性和安全性。本文介绍IBMS的功能特点、应用成效及未来发展趋势,展示其在建筑能效优化中的重要作用。
|
11月前
|
数据挖掘 数据处理 索引
Pandas数据重命名:列名与索引为标题
Pandas 是强大的数据分析工具,支持灵活的数据结构和操作。本文介绍如何使用 Pandas 对 `DataFrame` 的列名和索引进行重命名,包括直接赋值法、`rename()` 方法及索引修改。通过代码示例展示了具体操作,并讨论了常见问题如名称冲突、数据类型不匹配及 `inplace` 参数的使用。掌握这些技巧可使数据更清晰易懂,便于后续分析。
748 29
|
搜索推荐 数据挖掘 UED
中小企业CRM解决方案排名:性价比之选
中小企业在选择CRM系统时面临的主要痛点包括预算有限、需求多样、IT资源匮乏等。因此,他们需要寻找高性价比、功能全面、操作简便且具备灵活性和可扩展性的解决方案。本文推荐了纷享销客、Zoho CRM、Apptivo和简道云CRM等几款适合中小企业的CRM系统,这些系统不仅能满足企业的多样化需求,还能助力企业高效管理客户关系,提升销售业绩。
|
算法 IDE Java
【IntelliJ IDEA插件】值得推荐的Idea几十大优秀插件、神级超级牛逼插件推荐(自用,真的超级牛逼)(下)
【IntelliJ IDEA插件】值得推荐的Idea几十大优秀插件、神级超级牛逼插件推荐(自用,真的超级牛逼)
839 0
|
人工智能 测试技术 数据中心
|
SQL 分布式计算 大数据
作业帮基于 DeltaLake 的数据湖建设最佳实践
作业帮是一家以科技为载体的在线教育公司,其大数据中台作为基础系统中台,主要负责建设公司级数仓,向各个产品线提供面向业务主题的数据信息。本文主要分享了作业帮基于 DeltaLake 的数据湖建设最佳实践。
2980 2
作业帮基于 DeltaLake 的数据湖建设最佳实践
|
移动开发 安全 数据安全/隐私保护
多端可接入,实现随时随地登录无影云桌面
多端可接入,实现随时随地登录无影云桌面
2765 0
|
安全 网络安全 数据安全/隐私保护
SSL TSL 协议中高危漏洞处理方法
SSL/TSL协议存在高危漏洞(CVE-2013-2566、CVE-2015-2808),这是由于远程桌面采用了ssl加密漏洞造成了,解决办法就是关闭远程桌面的ssl加密算法。
2027 1
SSL TSL 协议中高危漏洞处理方法
|
数据采集 Web App开发 前端开发
windows、mac、iphone微信多开、防撤回功能2022-09-07最新教程
本文讲的是vx多开、防撤回两个功能,包含windows系统、mac系统还有iphone。iphone不支持ios16版本。因为我会不断的更新,如果发现版本不一样,不需要担心,教程还是一样的,只是更新了包而已。 作者:安哥说前端 https://www.bilibili.com/read/cv18482372 出处:bilibili
2343 0