OracleConcurrentManagerのコアダンプファイルの生成
Oracleコンカレントマネージャは多くの実行可能ファイルで構成されており、さまざまな問題に直面することがよくあります。実行可能ファイルがセグメンテーション違反またはシグナル11で終了する場合は、Oracleコンカレントマネージャのコアファイルを作成する必要があります。
コアファイルが作成されていない場合は、システム上のコアファイルのulimitが0に設定されている可能性があります。
次のように確認してください。
ulimit -a
ulimit -a time(seconds) unlimited file(blocks) unlimited data(kbytes) unlimited stack(kbytes) unlimited coredump(blocks) unlimited nofiles(descriptors) 4096 vmemory(kbytes) unlimited
「コアファイルサイズ(ブロック)」の出力を確認します。これが0または低い値に設定されている場合は、次の構文を使用して、現在のセッションで任意のサイズのコアファイルを作成できるようにリセットできます。
ulimit -c unlimited
Unixユーザーが並行マネージャーとAppsリスナーを起動する前にこの設定を環境に設定している場合、
並行処理環境でコアファイルを作成できるようになります。
セグメンテーション違反またはシグナル11で終了する実行可能ファイルは、有用なコアファイルを取得するために、
デバッグシンボルで再リンクする必要があります。これは、link_debug =yパラメーターをadrelink.shに渡すことによって行われます。
例:
adrelink.sh force=y link_debug=y "fnd FNDLIBR"
実行可能ファイルがデバッグシンボルで再リンクされ、コアファイルができたら、次の構文を使用してクラッシュした実行可能ファイルに適した
コアファイルがあることを確認してください。
file core core: ELF 32-bit MSB core file SPARC Version 1, from 'FNDLIBR'
次に、デバッガーを使用してスタックトレースを取得します。
Linuxの場合、デバッガーはgdbです:
gdb $FND_TOP/bin/FNDLIBR core
Solarisの場合、デバッガーはdbx:
dbx $FND_TOP/bin/FNDLIBR core
Oracleサポートが提供するアプリケーション実行可能ファイルへのデバッグコードの追加
上記で生成されたコアダンプでは、問題をトラブルシューティングするには不十分であることがよくあります。そのため、Oracleサポートは、問題をさらに深く掘り下げるためのデバッグコードを提供する場合があります。
アプリケーションの実行可能ファイルにデバッグコードを追加する方法の一般的な手順は次のとおりです。
実際、これらは、製品実行可能ファイル内のlibファイルを置き換えるためのadpatchが続く手順です
オブジェクトファイル「invir.o」をINVLIBR実行可能ファイルにリンクする必要があるとします。
何かをする前に、並行マネージャーがシャットダウンされていることを確認してください。
まず、バージョンを確認しましょう:
adident Header $INV_TOP/lib/invir.o $Header: invir.opp 115.6 2001/04/11 16:14:32 pkm ship $ adident Header /u00/to/debug/file/invir.o $Header: invir.opp 115.6.debug 2001/04/11 21:19:07 aeisber ship $ adident Header $INV_TOP/bin/INVLIBR |grep invir $Header: invir.op 115.6 2001/04/11 16:14:32 pkm ship $
したがって、現在システムにはバージョン115.6があり、115.6.debugにリンクする必要があります。
最初のステップは、現在のバージョンをバックアップすることです。
cd $INV_TOP/lib; cp invir.o invir.o.save
デバッグバージョンでコピーします:
cp /u00/to/debug/file/invir.o .
ファイルのバックアップを取る
cp libinv.a libinv.a.save
次に、デバッグバージョンをlibinv.aに追加します(この手順を忘れないでください)
ar rv libinv.a invir.o
これで、INVLIBRを再リンクできます:( adadminも使用できます)
adrelink.sh force=y "inv INVLIBR"
バージョンを確認すると、次のように表示されます:
adident Header $INV_TOP/bin/INVLIBR |grep invir.o $Header: invir.opp 115.6.debug 2001/04/11 21:19:07 aweisber ship $
デバッグコードがリンクされ、実行できるようになりました。マネージャのバックアップを開始すると、デバッグ機能が利用できるようになります。問題が再現されたら、次の手順に従ってデバッグをオフにできます
最初のステップは、現在のバージョンをバックアップし、古いコードを元に戻すことです
cd $INV_TOP/lib; cp invir.o invir.o.debug cp invir.o.save invir.o
古い.aファイルを復元する
cp libinv.a.save libinv.a
これで、INVLIBRを再リンクできます:( adadminも使用できます)
adrelink.sh force=y "inv INVLIBR"
バージョンを確認すると、次のように表示されます:
adident Header $INV_TOP/bin/INVLIBR |grep invir.o $Header: invir.opp 115.6 2001/04/11 21:19:07 aweisber ship $
関連記事
EBSR12コンポーネントのバージョンを見つける方法
Oracle EBS 11i / R12 / R12.1 / R12.2
Oracle DBA:Hanganalyze、システム状態ダンプ、v $ wait_chains
SQLトレース、Oracleデータベースおよびtrcsess、tkprofユーティリティの10046イベントをオンにする方法