My Oracle Support Banner

12.1:共有プールのサブプールのデフォルト計算による影響で ORA-4031 が発生することがある (Doc ID 2245712.1)

Last updated on FEBRUARY 21, 2019

適用範囲:

Oracle Database - Enterprise Edition - バージョン 12.1.0.1 から 12.1.0.2 [リリース 12.1]
Oracle Database Cloud Schema Service - バージョン N/A 以降
Oracle Database Exadata Cloud Machine - バージョン N/A 以降
Oracle Database Exadata Express Cloud Service - バージョン N/A 以降
Oracle Cloud Infrastructure - Database Service - バージョン N/A 以降
この文書の内容はすべてのプラットフォームに適用されます。



本文書利用上のご注意


  本文書は英語の文書 Document 2225248.1 (最終メジャー更新日: 2017年01月20日) の日本語翻訳版です。

  英語の文書のメジャー更新に応じて本文書を随時更新いたします。

現象

データベース起動時に割り当てられる共有プールのサイズとサブプールの数に影響を与える要因がいくつかあります。
いくつかの状況下では、12.1 メモリアルゴリズム(自動メモリ管理 (AMM)、あるいは、自動共有メモリ管理(ASMM)) は cpu_count および memory_target/memory_max_target のサイズに基づいて、共有プールのサブプールの数が間違って計算されます。
下記は、ORA-4031 エラーに繋がる、小さいサイズで計算された多くのサブプールになる可能性があります。

12.1 で、cpu_count が 32 に設定されていると、共有プールのサブプールの数は次のように分かれています。

ケース A
=====
memory_target=memory_max_target=4G の時は、12c の AMM はサブプールを次のように計算します。:
connect / as sysdba
SELECT
'shared pool ('||NVL(DECODE(TO_CHAR(ksmdsidx),'0','0 - Unused',ksmdsidx),
'Total')||'):' sgastatx_subpool
, SUM(ksmsslen) bytes
, ROUND(SUM(ksmsslen)/1048576,2) MB
FROM
x$ksmss
WHERE
ksmsslen > 0
GROUP BY ROLLUP (ksmdsidx )
ORDER BY sgastatx_subpool ASC;
/

SUBPOOL BYTES MB
------------------------------ ---------- ----------
shared pool (1): 134217728 128
shared pool (2): 134217728 128
shared pool (3): 134217728 128
shared pool (4): 117440512 112
shared pool (Total): 520093696 496

ケース B
=====
memory_target=4G で memory_max_target=8G の時は、12c の AMM はサブプールを次のように計算します。:

SUBPOOL BYTES MB
------------------------------ ---------- ----------
shared pool (1): 83886080 80
shared pool (2): 83886080 80
shared pool (3): 83886080 80
shared pool (4): 117440512 112
shared pool (5): 83886080 80
shared pool (6): 83886080 80
shared pool (7): 83886080 80
shared pool (Total): 620756992 592

==> サブプールのサイズは 80 MBと非常に小さいです。

 
cpu_count は、共有プールとラージ・プールのサブプールがいくつに分かれるを決定します。多くのテストにより、12.1 の起動時にサブプールのデフォルト計算に以下のアルゴリズムが使用されることが確認されています。:

 

変更点

AMMが無効(memory_target / memory _max_target が設定されていない)で、sga_target > 0の場合、 sga_target=4G、sga_max_size=8G、cpu_count=32 の場合、サブプールのデフォルト数は次のようになります。:

SGASTATX_SUBPOOL BYTES MB
------------------------------------------------------- ---------- ----------
shared pool (0 - Unused): 486539264 464
shared pool (1): 285212672 272
shared pool (Total): 771751936 736

原因

To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!


本書の内容
現象
変更点
原因
解決策
参照情報

My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.