oracle LARGE POOL


Large Pool是一种类似共享池的SGA缓冲池,和共享池不同的是,只有少量类型的对象可以再Large Pool中创建。Large Pool的空间不在共享池中分配,是在数据库启动的时候另外分配的。Large Pool的大小由LARGE_POOL_SIZE确定。Oracle数据库也可以不配置Large Pool。

从Oracle 8开始,Oracle数据库引入了Large Pool,在Oracle 8中,Large Pool的主要功能由两个:

l         为MTS(共享服务器的早期版本)模式的会话分配UGA空间

l         作为连续文件IO的缓冲,比如系统管理的恢复和rman备份恢复(当RMAN使用了多个IO SLAVES的时候)

从Oracle 8i开始,Large Pool增加了一个功能,就是为并行执行的操作提供缓冲区。当PARALLEL_AUTOMATIC_TUNING设置为TRUE的时候,并行操作会在Large Pool中分配缓冲区空间。 ORACLE 9i中,Large Pool还被用来存储Oracle XA的相关信息。

Large Pool也使用shared pool闩锁,和共享池不同,Large Pool不使用LRU机制,因此Large Pool中的缓冲区不会被换出,用户会话来控制分配和释放Large Pool的空间。如果Large Pool空间不足,会出现ORA-4031错误。

当系统中配置了Large Pool,那么共享服务器连接(MTS)只会在Large Pool中分配UGA空间,如果没有每只Large Pool,那么共享服务器连接会在共享池中分配空间。当一个新的会话连接上来的时候,首先会在共享池中分配一个比较小的空间(称为固定UGA空间,FIXED UGA),其他的动态UGA空间全部会在Large Pool中分配。如果Large Pool空间不足,会出现类似的错误:

    ORA-04031: unable to allocate 636 bytes of shared memory

              ("large pool","EMPSCOTT","session heap","define var info") 

在Large Pool中,空间是分段申请的,每段空间的最小值由LARGE_POOL_MIN

_ALLOC参数确定(该参数的取值范围为16k,缺省为16k)。

Large Pool的大小由参数LARGE_POOL_SIZE确定。定义Large Pool的语法为:

LARGE_POOL_SIZE = integer [K | M] 

如果没有配置,ORACLE的缺省值为0。LARGE_POOL_SIZE的取值范围是大于600K,最大值和操作系统的内存有关。

在一般情况下LARGE POOL使用需求不大,因此不必要设置过大的LARGE POOL。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值