Parallel Execution the Large/Shared Pool and ORA-4031_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4949 | 回复: 0   主题: Parallel Execution the Large/Shared Pool and ORA-4031        下一篇 
oracle_ztj
注册用户
等级:列兵
经验:96
发帖:8
精华:0
注册:2012-6-4
状态:离线
发送短消息息给oracle_ztj 加好友    发送短消息息给oracle_ztj 发消息
发表于: IP:您无权察看 2012-6-4 16:27:51 | [全部帖] [楼主帖] 楼主


并行执行slave需要交换数据和消息以便同时工作。我们必须从共享池或大池中来分配内存。这依赖于PARALLEL_AUTOMATIC_TUNING的设置。

如果PARALLEL_AUTOMATIC_TUNING = TRUE,则我们从大池中分配内存,否则使用的是共享池。在这种情况下,我们动态增加大池的大小,使之足够大。

在数据库的启动阶段,我们分配一些内存给"PX msg pool",当PARALLEL_AUTOMATIC_TUNING or PARALLEL_MIN_SERVERS已设置时,通过这种方式能够避免分片以及获得PX缓冲区的快速内存访问

当查询V$SGASTAT寻找"PX msg pool"时,可以监控哪些区域分配内存给PX msg buffer。

PX msg buffer可能变得非常大,共享池中我们分配内存给PX操作的另一个区域是 "PX subheap"。

当我们使之与"PX msg pool"比较时,堆是很小的,并且总在共享池中。

SQL> select * from v$sgastat;
POOL NAME BYTES
----------- -------------------------- ----------
fixed_sga 453632
log_buffer 656384
shared pool enqueue 179220
..
shared pool PX subheap 167104 <<<
..
shared pool event statistics per sess 1889720
shared pool fixed allocation callback 184
large pool PX msg pool 2949120 <<<<
large pool free memory 5439488
java pool free memory 25165824


如果PARALLEL_AUTOMATIC_TUNING = FALSE,共享池的大小不会增加,用户需要为共享池选择一个合适的大小。

PX msg 的大小也依赖于参数PARALLEL_EXECUTION_MESSAGE_SIZE和并行度。

执行以下查询以获得更多的内存使用情况统计:

SELECT * FROM V$PX_PROCESS_SYSSTAT WHERE STATISTIC LIKE 'Buffers%';


输出应该类似于以下结果:

STATISTIC VALUE
------------------- -----
Buffers Allocated 23225
Buffers Freed 23225
Buffers Current 0
Buffers HWM 3620
4 Rows selected.


内存使用量出现在Buffers Current 和 Buffers HWM,通过将buffers的数量和PARALLEL_EXECUTION_MESSAGE_SIZE的值相乘得到一个以字节为单位的值。
    这个公式并不是100%的正确,为避免大池/共享池的分片,我们分配了大块。这意味着'PX msg pool'的大小要大于'Buffers HWM' * PARALLEL_EXECUTION_MESSAGE_SIZE。

建议:

当遇到ORA-4031并且已设置PARALLEL_AUTOMATIC_TUNING = FALSE,那么考虑将其值设为true,从而Oracle能够调整大池。

已经设置PARALLEL_AUTOMATIC_TUNING = TRUE,那么增加大池。

在以上两种情况下,都请检查PARALLEL_EXECUTION_MESSAGE_SIZE的值。



该贴被oracle_ztj编辑于2012-6-4 16:35:17




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论