0
点赞
收藏
分享

微信扫一扫

Parallel Execution: Large/Shared Pool and ORA-4031 (文档 ID 238680.1)


适用于
Oracle 数据库 - 企业版 - 版本 8.1.7.0 及更高版本
本文档中的信息适用于任何平台。

目的
提供一些信息,如果我们得到ORA-4031,我们可以检查什么,我们使用并行执行

范围
支持分析师和DBA

的详细信息
并行执行从站必须交换数据和消息,他们可以一起工作。为此,我们必须从共享池或大型池中分配内存。此决定取决于PARALLEL_AUTOMATIC_TUNING设置的值。
如果PARALLEL_AUTOMATIC_TUNING = TRUE,则从大型池中获取内存,否则我们将使用共享池。在这种情况下,我们会自动增加它应该足够大的大池。
隐藏参数 _PX_use_large_pool 也可用于控制我们从哪个池中分配内存。在数据库启动时,我们为“PX msg 池”分配一些内存,以避免碎片,并在设置PARALLEL_AUTOMATIC_TUNING或PARALLEL_MIN_SERVERS时为PX缓冲区获取更快的内存。

在 10g 中,如果
是 a.) 从大型池中分配 PX 消息缓冲区。parallel_automatic_tuning = 真(已弃用)

b.)_PX_use_large_pool = 真

c。sga_target设置

在 11g 中,如果
a.) 从大型池中分配 PX 消息缓冲区。parallel_automatic_tuning = 真(已弃用)

b。)_PX_use_large_pool = 真

c。SGA 内存是自动调整的(sga_target或memory_target)

当我们查询 V$SGASTAT 并查找“PX 消息池”时,您可以监视从哪个区域为 PX 消息缓冲区分配内存。共享池中我们为PX操作分配内存的另一个区域是“PX子堆”。当我们将此堆与“PX 消息池”进行比较时,此堆很小,并且始终位于共享池中。
从 v$sgastat 中选择 * ;
池名字节
----------- -------------------------- ----------
fixed_sga 453632
log_buffer 656384
共享池排队 179220
.。
共享池 PX 子堆167104 <<<<

共享池事件统计每个 sess 1889720
共享池 固定分配回调 184
大型池 PX 消息池 2949120 <<<<
大池可用内存 5439488
java 池可用内存 25165824
如果 PARALLEL_AUTOMATIC_TUNING = FALSE,则不会增加共享池。用户有责任为共享池找到足够的大小。
PX 消息的大小还取决于参数的大小PARALLEL_EXECUTION_MESSAGE_SIZE和并行度。
要获取更多内存使用统计信息,请执行以下查询:
从 V$PX_PROCESS_SYSSTAT 中选择 * 其中统计信息,如 “缓冲区%”;
您的输出应类似于以下内容:
统计信息值
------------------- -----
缓冲区分配 23225
缓冲区 释放 23225
缓冲区 当前 0
缓冲区 HWM 3620
4 选定行。
使用的内存量显示在“缓冲区电流”和“缓冲区 HWM”统计信息中。通过将缓冲区数乘以PARALLEL_EXECUTION_MESSAGE_SIZE的值来计算以字节为单位的值。
该公式不是 100% 正确的。为了避免共享/大型池的碎片化,我们以大块的形式分配。这意味着“PX 消息池”的值可以大于“缓冲区 HWM” * PARALLEL_EXECUTION_MESSAGE_SIZE。
建议
当您收到 ORA-4031 并且已将 PARALLEL_AUTOMATIC_TUNING = FALSE 时,请考虑将其设置为 true,以便 Oracle 可以调整大型池。
当您有PARALLEL_AUTOMATIC_TUNING = TRUE 时,请增加大型池。
在这两种情况下,还要检查PARALLEL_EXECUTION_MESSAGE_SIZE的值。

参考至:https://support.oracle.com/epmos/faces/SearchDocDisplay?_adf.ctrl-state=80dsfjl8t_4&_afrLoop=446004159656844

如有错误,欢迎指正


举报

相关推荐

0 条评论