oracle shared pool


一、oracle共享池包含了多种程序数据。例如:解析后的SQLPL/SQL代码,系统参数和数据字典信息。基本上数据库的所有操作都和共享池有关。共享池主要包括library cache , data dictionary cache , server result cache , reserved pool

二、库缓存(library cache

   1.库缓存中主要存放已经共享的可执行的SQL或者PL/SQ代码,还有一些控制结构例如locklibrary cache handler。在共享服务器模式,库缓存还包括了private SQL area(专有服务器模式存在于PGA内)

   2.共享SQL区:数据库使用共享SQL区域来处理SQL语句的第一次出现,这个区域可以被所有用户访问,并且包括解析树和执行计划。

   3.私有SQL区:每个发起SQL的会话都在PGA有私有SQL区域。

   4当客户端发起请求并连接到SGA时,首先查看shared SQL area是否存在和请求SQL语句语法和语义相同的语句,如果存在,则直接使用相关的执行计划;若不存在,则在shared SQL area申请一块新的空间。

接着,根据服务器的工作方式,分配private SQL area:共享服务器模式下,部分private SQL area存在于SGA,专有服务器下,存在与PGA中。

   5.程序单元(program unit):库缓存中存放的可执行的PL/SQL代码和JAVA类代码。

三、共享池的内存分配和回收

   1.当一条SQL语句被解析时,数据库便分配共享池内存,分配的内存大小取决于SQL语句的复杂程度。

   2.一般,共享池里的内容根据LRU算法来管理。

   3.以下情况也会导致shared SQL area从共享池中移除:

(1).当对表、聚簇表或者索引进行统计信息收集时,在shared SQL area中存在的涉及到统计信息收集的对象的内容,将会被清除。

(2).shared SQL area中涉及到的对象被DDL语句修改,则数据库将这些内容置为无效,当再次用到这些内容时,优化器会重新解析。

(3).如果全局数据库名(global database name)被改变,数据库会将共享池内的信息全部清除。

   4.可以通过手工执行alter system flush shared pool语句来清空共享池内的内容,以达到重新启动实例的效果。

四、数据字典缓冲区

   1.数据字典是一组表和视图的集合,这些表和视图包括了数据库的结构信息、用户信息等,oracle在解析SQL语句的时候会频繁的访问数据字典表。

   2.数据字典存放于数据字典缓冲区(dictionary buffer cache)和库缓冲区(library cache)中。

   3.数据字典缓冲区也称为记录行缓冲区(row cache),其缓冲数据记录,而非整块数据块。

五、服务器结果集缓冲区

   1.服务器结果集缓冲缓冲的是查询结果记录的集合,而不是数据块的集合。

   2.服务器结果集缓冲包括SQL查询结果集缓冲和PL/SQL函数结果集缓冲,但二者使用相同的架构。

   3.客户端也可以缓存结果集,但是客户端缓存结果集是在应用层面且占用的是客户端的内存。

   4.SQL查询结果集缓存:

(1)主要避免多次重复执行相同语句进行重复读取数据块和重计算结果集的消耗;

(2)可以通过result_cache提示来启用该功能;

(3)通过result_cache_mode初始化参数来决定缓存所有查询结果集还是指定查询结果集。

   5.PL/SQL函数结果集缓存:

主要节省重复查询某函数造成的计算资源。

六、预留池(reserved pool

预留池是oracle共享池内可以分配一块连续的大的内存空间。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30167136/viewspace-1562302/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30167136/viewspace-1562302/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值