7.5 「ORA-04031: unable to allocate bytes of shared memory」エラー・コードの解決
詳細およびビデオは、https://blogs.oracle.com/database/post/ora-04031を参照してください。
ORA-04031
を解決するために必要なこの手順に従ってください。
ORA-04031の理解
ORA-4031
エラーは、使用可能なメモリーよりも多くの共有メモリーが必要だったために発生します。
エラー・メッセージには、使用できなかったメモリー量、エラーが発生したメモリー・プールおよび失敗した割当てのタイプに関する詳細が示されます。
図7-16 ORA-04031内部エラー・コード: 引数

データベース・プロセスによってエラーが発生した場合、データベース・アラート・ログにエントリが作成されます。これは、問題の発生しているプロセスを示すトレース・ファイルを指します。
図7-17 データベース・インスタンスのアラート・ログ

ただし、ユーザー・プロセスによってエラーが発生した場合、アラート・ログには何も見つかりません。
エラーが発生した場所に関係なく、問題が発生したプロセスは多くの場合、状況の犠牲者であり、通常は原因ではありません。
根本的な原因として、次のような様々なものが考えられます:
- 十分に高く設定されていないメモリーの初期化パラメータ。
- 自動チューニングの問題。
- アプリケーション設計の断片化。
- バグまたはメモリー・リーク。
ORA-04031エラーのトラブルシューティング・ステップ
ORA-04031
の基本的な解決ステップは次のとおりです:
- AHFを使用して、
ORA-04031
サービス・リクエスト・データ収集(SRDC)を生成します ORA-04031
トラブルシューティング・ツールを使用して、推奨事項を検索します- 診断収集を使用して新しいSRを記録します
AHFを使用したORA-04031サービス・リクエスト・データ収集(SRDC)の生成
最初のステップでは、AHFを使用してORA-04031
診断収集を生成します。
ORA-04031
が発生したマシンにログインし、Oracle
ユーザーとして次のコマンドを実行します:tfactl diagcollect –srdc ORA-04031
関心のある
ORA-04031
の日時、次にデータベース名を入力するように求められます。たとえば:
$ tfactl diagcollect -srdc ora4031 Enter the time of the ORA-04031 [YYYY-MM-DD HH24:MI:SS,<RETURN>=ALL] : 2024-02-11 13:33:58 Enter the Database Name [Required for this SRDC] : CDB12 Components included in this collection: OS DATABASE CHMOS SOSREPORT Preparing to execute support diagnostic scripts. Executing DB Script srdc_db_ora4031.sql on CDB12 with timeout of 300 seconds... Collecting data for all nodes TFA is using system timezone for collection, All times shown in PST. Scanning files from 2023-10-27 13:03:58 PDT to 2023-10-27 14:03:58 PDT Collection Id : 20240212112211mymachine Detailed Logging at : /opt/oracle.ahf/data/repository/srdc_ora4031_collection_Mon_Feb_12_11_22_14_PST_2024_node_all/diagcollect_20240212112211_mymachine.log Waiting up to 120 seconds for collection to start 2024/02/12 11:22:20 PST : NOTE : Any file or directory name containing the string .com will be renamed to replace .com with dotcom 2024/02/12 11:22:20 PST : Collection Name : tfa_srdc_ora4031_Mon_Feb_12_11_22_13_PST_2024.zip 2024/02/12 11:22:20 PST : Collecting diagnostics from hosts : [mymachine2, mymachine] 2024/02/12 11:22:21 PST : Collecting Additional Diagnostic Information... 2024/02/12 11:22:21 PST : Scanning of files for Collection in progress... 2024/02/12 11:22:31 PST : Getting list of files satisfying time range [10/27/2023 13:03:58, 10/27/2023 14:03:58] 2024/02/12 11:22:36 PST : Executing DB Script runawr on cdb12 with timeout of 3600 seconds... 2024/02/12 11:22:42 PST : Executing TFA rdahcve with timeout of 600 seconds... 2024/02/12 11:22:51 PST : Collecting ADR incident files... 2024/02/12 11:24:20 PST : Executing IPS Incident Package Collection(s)... 2024/02/12 11:24:22 PST : Unexpected Error from ADR, please review the <hostname>_collection.log for details and consult Oracle Support if necessary 2024/02/12 11:24:22 PST : Executing SQL Script db_feature_usage.sql on cdb12 with timeout of 600 seconds... 2024/02/12 11:24:22 PST : Executing Collection for OS with timeout of 1800 seconds... 2024/02/12 11:24:29 PST : Executing Collection for SOSREPORT with timeout of 1860 seconds... 2024/02/12 11:25:29 PST : Completed Collection of Additional Diagnostic Information... 2024/02/12 11:25:32 PST : Completed Local Collection 2024/02/12 11:25:32 PST : Not Redacting this Collection on Exadata with no redaction option passed .. 2024/02/12 11:25:32 PST : Not Redacting this Collection ... 2024/02/12 11:25:32 PST : Remote Collection in Progress... 2024/02/12 11:26:13 PST : Collection completed on host: mymachine2 2024/02/12 11:26:13 PST : Collection completed on host: mymachine 2024/02/12 11:26:12 PST : Completed collection of zip files. .---------------------------------------. | Collection Summary | +-------------+-----------+------+------+ | Host | Status | Size | Time | +-------------+-----------+------+------+ | mymachine2 | Completed | 14MB | 182s | | mymachine | Completed | 27MB | 192s | '-------------+-----------+------+------' Logs are being collected to: /opt/oracle.ahf/data/repository/srdc_ora4031_collection_Mon_Feb_12_11_22_14_PST_2024_node_all /opt/oracle.ahf/data/repository/srdc_ora4031_collection_Mon_Feb_12_11_22_14_PST_2024_node_all/mymachine.tfa_srdc_ora4031_Mon_Feb_12_11_22_13_PST_2024.zip /opt/oracle.ahf/data/repository/srdc_ora4031_collection_Mon_Feb_12_11_22_14_PST_2024_node_all/mymachine2.tfa_srdc_ora4031_Mon_Feb_12_11_22_13_PST_2024.zip
完了すると、AHFはマシンごとにすべてをzipファイルにパッケージ化します。作業が進むにつれて、問題が発生したノードからのもののみが必要になります。
これで、ステップ2に進むことができます。My Oracle Support ORA-04031トラブルシューティング・ツールを使用して、推奨事項を検索します。
ORA-04031トラブルシューティング・ツールを使用した推奨事項の検索
- My Oracle Supportにログインして
ORA-04031
を検索するか、My Oracle Support ORA-04031トラブルシューティング・ツールに移動して直接アクセスします。 - トラブルシューティング・ツールが表示されたら、右上の「Next」ボタンをクリックします。
図7-18 My Oracle Support ORA-04031トラブルシューティング・ツール
- 最初のラジオ・ボタンを選択して、TFAパッケージのアップロードを選択します。
- 「Choose file」ボタンをクリックし、ステップ1でAHFが取得した失敗したノードからのzipを選択します。
- 次に「Upload」ボタンを押します。
図7-19 「Upload」の選択
- これがアップロードされたら、右上にある「Next」ボタンを再度クリックします。
図7-20 「Upload」の選択
トラブルシューティング・ツールが診断収集の内容を分析し、ログ・エントリを既知の問題のリストと比較して解決策を推奨します。
図7-21 推奨事項の確認

MOSのトラブルシューティング・ツールを使用しても解決策が見つからない場合や、さらにサポートが必要な場合は、Oracle サポートでSRを簡単に記録できます。
診断収集を使用して新しいSRを記録します
- 下部の「Create SR」ボタンを押下します。
図7-22 Create SR
- その後、次の内容を明確にするように求められます:
- 製品
- 製品バージョン
- サポートID
- オペレーティング・システム
- SR重大度
- 次に、「Create SR」ボタンをクリックします。
新しいSR番号が表示されます。
図7-23 新しいSR
最初にアップロードしたAHF診断収集がSRに添付され、それをOracle Supportが引き継ぎます。
親トピック: データベースの問題の解決