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内部エラー・コード: 引数


この図は、ORA-04031内部エラー・コードの引数を示しています

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

図7-17 データベース・インスタンスのアラート・ログ


この図はデータベース・インスタンスのアラート・ログを示しています

ただし、ユーザー・プロセスによってエラーが発生した場合、アラート・ログには何も見つかりません。

エラーが発生した場所に関係なく、問題が発生したプロセスは多くの場合、状況の犠牲者であり、通常は原因ではありません。

根本的な原因として、次のような様々なものが考えられます:

  • 十分に高く設定されていないメモリーの初期化パラメータ。
  • 自動チューニングの問題。
  • アプリケーション設計の断片化。
  • バグまたはメモリー・リーク。

ORA-04031エラーのトラブルシューティング・ステップ

ORA-04031の基本的な解決ステップは次のとおりです:

  1. AHFを使用して、ORA-04031サービス・リクエスト・データ収集(SRDC)を生成します
  2. ORA-04031トラブルシューティング・ツールを使用して、推奨事項を検索します
  3. 診断収集を使用して新しいSRを記録します

AHFを使用したORA-04031サービス・リクエスト・データ収集(SRDC)の生成

最初のステップでは、AHFを使用してORA-04031診断収集を生成します。

  1. 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トラブルシューティング・ツールを使用した推奨事項の検索

  1. My Oracle SupportにログインしてORA-04031を検索するか、My Oracle Support ORA-04031トラブルシューティング・ツールに移動して直接アクセスします。
  2. トラブルシューティング・ツールが表示されたら、右上の「Next」ボタンをクリックします。

    図7-18 My Oracle Support ORA-04031トラブルシューティング・ツール


    この図は、My Oracle Support ORA-04031トラブルシューティング・ツールを示しています

  3. 最初のラジオ・ボタンを選択して、TFAパッケージのアップロードを選択します。
  4. 「Choose file」ボタンをクリックし、ステップ1でAHFが取得した失敗したノードからのzipを選択します。
  5. 次に「Upload」ボタンを押します。

    図7-19 「Upload」の選択


    この図は、アップロードの選択オプションを示しています

  6. これがアップロードされたら、右上にある「Next」ボタンを再度クリックします。

    図7-20 「Upload」の選択


    この図は、アップロードの選択オプションを示しています

トラブルシューティング・ツールが診断収集の内容を分析し、ログ・エントリを既知の問題のリストと比較して解決策を推奨します。

図7-21 推奨事項の確認


この図は、04031の推奨事項を示しています

MOSのトラブルシューティング・ツールを使用しても解決策が見つからない場合や、さらにサポートが必要な場合は、Oracle サポートでSRを簡単に記録できます。

診断収集を使用して新しいSRを記録します

  1. 下部の「Create SR」ボタンを押下します。

    図7-22 Create SR


    この図は、「Create SR」オプションを示しています

  2. その後、次の内容を明確にするように求められます:
    • 製品
    • 製品バージョン
    • サポートID
    • オペレーティング・システム
    • SR重大度
  3. 次に、「Create SR」ボタンをクリックします。

    新しいSR番号が表示されます。

    図7-23 新しいSR


    この図は、新しいSRを示しています

    最初にアップロードしたAHF診断収集がSRに添付され、それをOracle Supportが引き継ぎます。