Oracle Concurrent Managerは、OracleE-BusinessSuite製品の重要な部分です。多くのもののバッチ処理に役立ちます。
私はここでそれについてのいくつかの詳細を提示しています
それはいくつかの部分で構成されています。これらのそれぞれを詳細に説明します。これにより、E-BusinessSuiteコンカレントマネージャープロセスの仕組みを垣間見ることができます
目次
OracleConcurrentManagerのタイプ
内部並行マネージャー(ICM)
Internal Concurrent Manager(ICM)は、並行処理の「頭脳」と見なすことができます。次の機能を担当します:
-競合解決マネージャー、標準マネージャーなどの他のすべてのプロセスを開始します
-管理者によって送信された「制御要求」を実行します。
-同時マネージャーをアクティブ化/非アクティブ化/中止します
-同時要求を終了します
-プロセスを監視し、失敗したものを再起動します。
-現在の作業シフトに基づいて、各サービスのプロセスの目標数を設定します。
ICMの開始
-adcmctl.shスクリプト
-ICMを開始する前にTNSアプリリスナーを開始する必要があります
ICMのシャットダウン
-ICMをシャットダウンすると、競合解決マネージャー、標準マネージャーなどの他のすべてのサービスが停止します。
–通常のシャットダウンは、現在のタスクの完了後にプロセスを終了するように通知します。
–中止するとサービスプロセスが終了します。
– ICMは、他のすべてのプロセスが終了するまで終了しません。
-adcmctl.shを使用してICMをシャットダウンします。
サービスマネージャー(FNDSM)
サービスマネージャは、ICMのエージェントとして機能するために、GSM対応システムの中間層ノードに生成されます。 ICMは、中間層ノードで並行マネージャープロセスの開始などの機能を実行するためにサービスマネージャーが必要であると判断すると、そのノードのAppsリスナーに対してリモートプロシージャコントロール呼び出しを行い、サービスマネージャーを開始します。 Service Managerが開始されて初期化されると、ICMはRemote Procedural call(RPC)を介してService Managerと直接通信し、そのノード上のサービスを管理するための情報を提供します。
-サービスマネージャーはAPPSTNSリスナーから生成されます
– APPS TNSリスナーは、システム内のすべての中間層ノードで開始し、ICMを開始するユーザー(applmgrなど)が開始する必要があります
- TNSリスナーは、ローカルノードのICMのエージェントとして実行するようにServiceManagerを生成します
-ServiceManagerは、必要に応じてICMによってオンデマンドで開始されます。ノードで管理アクションが必要ない場合、サービスマネージャーは必要になるまでICMによって開始されません。 ICMが終了すると、ServiceManagerも終了します。
-ServiceManager環境は、listener.oraで定義されているAPPSORA.envによって設定されます。
-listener.oraファイルとtnsnames.oraファイルは、次のように適切に構成する必要があります。リスナーがServiceManagerを生成できるようにし、ICMがServiceManagerのステータスを確認できるようにします。
内部モニター(FNDIMON)
内部モニターは、特に並列並行処理で使用され、内部並行マネージャーが他の使用可能な中間層ノードにフェイルオーバーできるようにします。
-障害が発生した場合にICMを開始できるノードに内部モニターを配置します。
-デフォルトでは、登録されているすべてのノードに内部モニターがシードされます。
-ICMがダウンした場合、内部モニターはローカルノードで新しいICMを開始しようとします。
-複数のICMが開始された場合、最初のICMのみがアクティブのままになります。他の人は優雅に終了します。
Oracle Concurrent Managers(FNDLIBR、INVLIBR)
コンカレントマネージャは、FND_CONCURRENT_REQUESTSテーブルを連続サイクルで監視することにより、非同期ジョブ処理を提供します。コンカレントマネージャーの仕事は、保留中/通常フェーズ/ステータスにあり、特殊化ルールに従って実行する資格があるコンカレント要求を実行することです。
同時マネージャープロセス
–独立して行動する
–次のリクエストのみを選択します:(a)マネージャーの専門化ルールに一致する、(b)保留中/通常、(c)開始時刻がリクエストされている
重要なOracleConcurrentManagerのOracleテーブルに関する説明
FND_CONCURRENT_QUEUES
TARGET_NODE
-追加のプロセスを開始する場所を示すために使用されます
-移行のためにシャットダウンする必要があるかどうかを判断するためにマネージャーが使用します
-マネージャーは起動時に渡されたパラメーター値をこの値
-プロセスが存在する場所を示すためにUIによって使用されます(移行の場合は完全に正確ではありません)
-プライマリ、セカンダリ設定に基づいてICMによって割り当てられます
NODE_NAME
-PCPのプライマリノードを示します–直接ロード
-ノードがオンラインでないか、使用できないと判断されない限り、プロセスを開始する必要があります
-ノードが指定されていない場合、ICMはターゲットを割り当てますnodeはデフォルトでNODE_NAME2になります
-PCPのセカンダリノードを示します–ダイレクトロードフェイルオーバー
-プライマリノードが利用できない場合にのみTARGET_NODEとして割り当てられます
FND_CONCURRENT_PROCESSES
NODE_NAME
-マネージャープロセスが実行されている場所を示します
-マネージャーのファイルが存在する場所も示します
-uname()(物理マシン名)の値を使用して入力されます
-プロセスを終了するときにICMによって使用されます
-ユーザーインターフェイス(UI)でログファイルを表示するときに使用されます
-プロセスログファイルを削除するためにパージプログラムによって使用されます
-ワークロード統計の計算に使用できます
-RPMがローカルOPPの検索に使用する可能性があります
-11i.Xでも同様にレポートサーバーの検索に使用されます
FND_CONCURRENT_REQUESTS
LOGFILE_NODE_NAME、OUTFILE_NODE_NAME
-ファイルが存在する場所を示します
-ファイル表示用のユーザーインターフェイス(UI)で使用されます
-ファイルを削除するためにパージプログラムによって使用されます
-値が入力されます独自のノードに基づくmgrプロセスによる
FND_NODES
NODE_NAME
-DBCファイルが配置されているノード名を示します。
-Adgendbc.shスクリプトは、DBCファイルを作成します。
SERVER_ID
-ノードからの接続を認証するために使用されます。
-AdminAppServerAPIを呼び出すadgendbc.shによって更新されます。
並行マネージャーテーブル
FND_NODES:すべてのノードレベルの情報が含まれています
FND_CONCURRENT_PROCESSES:すべての同時マネージャープロセス情報が含まれます
FND_CONCURRENT_REQUESTS:すべての同時リクエストの完全な履歴が含まれます(過去の履歴と将来実行するようにスケジュールされたものの両方)。
FND_CONCURRENT_QUEUES:システムで作成されたすべての並行マネージャーの情報が含まれます
FND_CONCURRENT_PROGRAMS:システムで使用可能なすべての並行プログラムの情報が含まれます
FND_EXECUTABLES
FND_CP_SERVICES
FND_CONCURRENT_QUEUE_SIZE
FND_CONCURRENT_QUEUE_CONTENT
FND_CONCURRENT_PROGRAM_SERIAL
FND_CONCURRENT_TIME_PERIODS
FND_CONCURRENT_PROCESSORS
FNDSVCRG
FNDSVCRG実行可能ファイルは、スクリプトがサービスを開始または停止する前後に、制御スクリプトからトリガーされます。 FNDSVCRGはデータベースに接続して、シードされたGSMサービスの構成を確認します。問題のサービスがGSMで管理できるようになっていない場合、FNDSVCRG実行可能ファイルは何もせずに終了します。その後、スクリプトは通常の開始/停止アクションを実行し続けます。サービスでGSM管理が有効になっている場合、FNDSVCRG実行可能ファイルは、環境コンテキスト、現在のサービスログファイルの場所、サービスの現在の状態など、データベース内のサービス関連情報を更新します。
同時リクエストフェーズのステータスの説明
保留中/通常 -リクエストは次の利用可能なマネージャーを待っています。
保留中/スタンバイ -リクエストを実行するプログラムは、現在実行中の他のプログラムと互換性がありません。
保留中/スケジュール済み -リクエストは将来の日時に開始されるようにスケジュールされています。
保留中/待機中 -子リクエストは、親リクエストが実行可能であることを示すために待機しています。たとえば、順番に実行されるリクエストセット内のリクエストは、前のリクエストが完了するまで待機する必要があります。
実行中/通常 -リクエストは正常に実行されています。
実行中/一時停止 -親リクエストは、すべての子リクエストの実行を終了するために一時停止します。たとえば、リクエストセットは、セット内のすべてのリクエストが完了するまで一時停止します。
実行中/再開中 -同じ親リクエストによって送信されたすべてのリクエストの実行が完了しました。親リクエストの実行が再開されます。
実行中/終了中 -[リクエスト]ウィンドウで[リクエストのキャンセル]ボタンを選択すると、リクエストが終了します。
完了/通常 -リクエストは正常に完了しました。
完了/エラー -リクエストを正常に完了できませんでした。
完了/警告 -リクエストは警告付きで完了しました。たとえば、リクエストは正常に生成されましたが、印刷に失敗しました。
完了/キャンセル -[リクエスト]ウィンドウの[リクエストのキャンセル]ボタンを選択すると、保留中または非アクティブなリクエストがキャンセルされます。
完了/終了 -[リクエスト]ウィンドウで[リクエストのキャンセル]ボタンを選択すると、リクエストが終了します。
非アクティブ/無効 -リクエストを実行するプログラムが有効になっていません。システム管理者に連絡してください。
非アクティブ/保留中- [リクエスト]ウィンドウで[リクエストを保留]ボタンを選択すると、保留中のリクエストが保留になります。
非アクティブ/マネージャーなし -リクエストを実行するマネージャーが定義されていません。システム管理者に確認してください。すべてのマネージャーが実行中のリクエストによってロックされている場合も、マネージャーなしのステータスが与えられます。
Oracleアプリr12でコンカレントマネージャを起動する方法
R12でConcurrentManagerを起動します
通常はapplmgrのアプリケーション層ユーザーに接続します
cd $ADMIN_SCRIPTS_HOME ./adcmctl.sh start apps/<apps-pass>
Oracleアプリr12で並行マネージャーを停止する方法
R12で並行マネージャーを停止する
通常はapplmgrのアプリケーション層ユーザーに接続します
cd $ADMIN_SCRIPTS_HOME ./adcmctl.sh stop apps/<apps-pass>
Oracleアプリr12でステータス並行マネージャを確認する方法
コンカレントマネージャーのステータスを確認するには
通常はapplmgrのアプリケーション層ユーザーに接続します
cd $ADMIN_SRCIPTS_HOME ./adcmctl.sh status apps/<apps-pass>
R12でのConcurrentManagerログファイルの場所
コンカレントマネージャー、ICM、コンカレントリクエストはすべてログファイルを生成します
A)コンカレントリクエストログファイル–特定のリクエストの実行を記録します(l.req)
B)マネージャーログファイル–コンカレントマネージャープロセスのパフォーマンスを記録します。 (W.mgr)
C)内部マネージャーログファイル– ICMのパフォーマンスを文書化します。(std.mgr)。このログファイルには、「adcmctl」コマンドで使用されるパラメータが表示されます。
$APPLCSFが設定されている場合
ログファイルはフォルダ$APPLCSF/ $ APPLLOGにあります。
ログファイルは、アプリケーション内から[同時リクエストの表示]フォームから表示することもできます
R12.2 APPLCSF =$ NE_BASE / inst /
R12.1 APPLCSF =$ INST_TOP // logs / appl / conc / log
$APPLCSFが設定されていない場合
ログファイルはフォルダ$PRODUCT_TOP/$APPLLOGにあります。
同様に、出力ファイルについても
$APPLCSFが設定されている場合
R12.2 APPLCSF =$ NE_BASE / inst /
R12.1 APPLCSF =$ INST_TOP // logs / appl / conc /
コンカレントマネージャーのトラブルシューティング
OSからOracleコンカレントマネージャのステータスを確認するにはどうすればよいですか
–Linuxコマンド:
$ ps -ef | grep LIB
-コマンドが「FNDLIBRFNDCPMGR…」であるため、このリストに内部並行マネージャが表示される可能性があることに注意してください。他のコマンドは「FNDLIBRFNDConcurrent_Processor…」のように表示されます。
-この最初の列に表示されるUnixユーザーIDリストは重要です。これらの並行マネージャープロセスは、アプリケーションコード($ APPL_TOPとそのサブディレクトリ)を所有するのと同じUnixユーザーIDによって所有される必要があります。このユーザーは通常、「applmgr」と呼ばれます
Oracleコンカレントマネージャによって生成されたすべてのファイルはどこに行きますか
-ICMログファイルは$FND_TOP/ logディレクトリにあり、通常はstd.mgrと一致します。
-ワーカーのログファイルは$ FND_TOP / logにあり、W .mgr
と一致します。同時リクエストのログアウトファイルは、リクエストを実行している製品に関連付けられている製品の最上位ディレクトリにあります。たとえば、ARレポートのログアウトファイルは$AR_TOPにあります。
-同時リクエストのログファイルは$にあります。適切な製品のトップディレクトリの下にあるAPPLLOGサブディレクトリで、lと一致します .req
-同時リクエストのoutファイルは$APPLOUTサブディレクトリに移動します
-APPLCSFが設定されている場合、$APPLLOGおよび$APPLOUTサブディレクトリを持つディレクトリへの完全なパスを指している必要があります。この$APPLCSFディレクトリは、さまざまな製品のトップディレクトリの代わりに使用され、
all ログアウトファイルをに。
最も一般的な同時マネージャーの問題は、Unix/Linuxレベルでのファイル保護の問題が原因で発生します。
-コンカレントマネージャをapplmgrとして起動していますか?
-applmgrは、
$ FND_TOP / $ APPLLOGディレクトリにファイルを作成するために次のことを実行できますか?
$ FND_TOP / $ APPLOUTディレクトリ?
Unix:$ touch $ FND_TOP / $ APPLLOG / a
-これが失敗した場合、ディレクトリの所有者は誰ですか?
Unix:$ ls -ld $ FND_TOP / $APPLLOG
-このディレクトリですかシンボリックリンク?その場合、それが指すディレクトリの保護は何ですか?
-このパーティションのディスク領域が不足していませんか? iノード?
Unix:$ df -k
Unix(一部のシステム)でiノードをチェック:$ df -i
-APPLCSFは設定されていますか?
-設定されている場合、applmgrはこれを実行できますか?
Unix:$ touch $ APPLCSF / $ APPLLOG / a
-ログディレクトリと同じように、$ APPLOUT(通常は「out」)ディレクトリを確認します。
PL / SQL並行プログラムが外部ファイルに書き込めない場合は、次のようなエラーメッセージが表示されます。
MSG-00102: Error Message :ORA-20100: File o0000071.tmp creation for FND_FILE failed. You will find more information on the cause of the error in request log. ORA-06512: at "APPS.FND_FILE", line 378 ORA-06512: at "APPS.FND_FILE", line 473 ORA-06512: at "APPS.AP_XYZ", line 192 REP-1419: 'beforereport': PL/SQL program aborted.
注:アプリケーションは、並行処理で使用される一時PL/SQL出力ファイルも生成します。これらのファイルは、APPLPTMP環境設定で指定されたデータベースサーバーノード上の場所に書き込まれます。 APPLPTMPディレクトリは、データベース初期化ファイルのutl_file_dirパラメータで指定されたものと同じディレクトリである必要があります。
。
RapidInstallは、APPLPTMPパラメータとutl_file_dirパラメータの両方を同じデフォルトディレクトリに設定します。このディレクトリに配置される一時ファイルには状況に応じた情報が含まれている可能性があるため、データベースサーバーの所有者が読み取りおよび書き込みアクセスできる、データベースサーバーノード上の安全なディレクトリである必要があります。マルチノードシステムでは、APPLPTMPによって定義されたディレクトリがアプリケーション層サーバーに存在する必要はありません。 AutoUpgradeを使用したアップグレード中に、APPLPTMP環境設定のutl_file_dirパラメーター値を指定する必要があります。
問題がどこにあるかを特定するには、次のことを確認します。
1)ファイルの名前が有効であることを確認します(ファイル名に「^」などの文字を含めないでください)
2)APPLPTMPが有効なディレクトリに設定されていること、およびapplmgrユーザーとデータベースユーザーの両方がそのディレクトリに対する読み取りおよび書き込み権限を持っていることを確認します(通常、APPLTMPと同じディレクトリに設定できます)
3)APPLPTMPが指すディレクトリにファイルが存在しないことを確認してください
4)APPLPTMPが指すディレクトリがutl_file_dirの最初のエントリであることを確認します。また、utl_file_dirのすべてのエントリが有効であり、applmgrに読み取り/書き込み権限があることを確認してください。
spfileを使用している場合は、適切な構文を確認してutl_file_dirを設定します。
例
ALTER SYSTEM SET UTL_FILE_DIR='directory1','directory2' scope=spfile;
5)それでも問題が解決しない場合は、アプリケーションで使用するパッケージであるFND_FILEを使用してファイルを直接書き込むことができるかどうかを確認してください。アプリユーザーとして接続されているSQLPLUSから、次のコマンドを実行します。
SQL> exec FND_FILE.PUT_LINE(FND_FILE.LOG, 'THIS IS A TEST');
これにより、APPLPTMPにファイルがダンプされます。
このテストが機能する場合は、FND_FILEに問題がなく、アプリケーションに問題がある可能性があることを示しています。
このテストでは、utl_file_dirにエントリを1つだけ残しておくことをお勧めします。
6)それでも問題が解決しない場合は、FND_FILEで使用されるUTL_FILEを使用してファイルを書き込めるかどうかを確認してください。
以下のPL/SQLを実行し、utl_file_dirの最初のエントリに変更します(このテストでは、utl_file_dirにエントリを1つだけ残しておくことをお勧めします)。
set serveroutput on DECLARE file_location VARCHAR2(256) := ''; file_name VARCHAR2(256) := 'utlfile1.lst'; file_text VARCHAR2(256) := 'THIS IS A TEST'; file_id UTL_FILE.file_type; BEGIN file_id := UTL_FILE.fopen(file_Location,file_name, 'W'); UTL_FILE.put_line(file_id, file_text); UTL_FILE.fclose(file_id); EXCEPTION WHEN UTL_FILE.INVALID_PATH THEN dbms_output.put_line('Invalid path ' || SQLERRM); WHEN OTHERS THEN dbms_output.put_line('Others '|| SQLCODE || ' ' || SQLERRM); END; /
このプログラムは、要求されたディレクトリにファイルをダンプする必要があります。テストが失敗した場合、問題はおそらくデータベース側にあります。
並行処理サーバースクリプト
afcmstat.sql 定義されているすべてのマネージャー、それらの最大容量、pid、およびそれらのステータスを表示します。
afimchk.sql 有効なICMおよびPMONメソッドのステータス、ICMのログファイルを表示し、コンカレントマネージャーモニターが実行されているかどうかを判断します。
afcmcreq.sql コンカレントマネージャと、リクエストを処理したログファイルの名前を表示します。
afrqwait.sql 保留中、保留中、およびスケジュールされているリクエストを表示します。
afrqstat.sql 特定の日付以降の同時リクエストの実行時間とステータスの概要を表示します。
afqpmrid.sql 同時要求IDに基づいてFNDLIBRプロセスのオペレーティングシステムプロセスIDを表示します。プロセスIDは、ORADEBUGユーティリティで使用できます。
afimlock.sql ICMおよびCRMが取得を待機しているロックを引き起こしている可能性のあるプロセスID、端末、およびプロセスIDを表示します。ジョブの送信に長い遅延がある場合、またはICMが別のOracleプロセスとの行き詰まりにあると思われる場合は、このスクリプトを実行する必要があります。
同時マネージャーチューニングを行う方法
内部並行マネージャー(ICM)の調整
ICMのパフォーマンスは、Oracleの3つの重要なパラメータであるPMONサイクル、キューサイズ、およびスリープ時間の影響を受けます。
PMONサイクル—これは、ICMがコンカレントマネージャの障害をチェックするまで待機するスリープサイクルの数です。デフォルトは20です。コンカレントマネージャに異常の問題がある場合は、PMONサイクルを20未満の数値に変更する必要があります。終了。
キューサイズ—キューサイズは、ICMが無効または新しい同時マネージャをチェックする間に待機するPMONサイクルの数です。キューサイズのデフォルトである1PMONサイクルを使用する必要があります。
スリープ時間—スリープ時間パラメーターは、実行を待機している要求をチェックする間にICMが待機する必要がある秒数を示します。デフォルトのスリープ時間は60ですが、待機中のリクエストが多い場合(保留中/通常)は、この数を減らすことができます。ただし、この数値を非常に低い値に減らすと、多くの場合、CPU使用率が高くなります。
個々のコンカレントマネージャーのキャッシュサイズの調整
マネージャーのキャッシュサイズをターゲットプロセスの数の少なくとも2倍に増やすことで、同時マネージャーのパフォーマンスを向上させることもできます。キャッシュサイズは、並行マネージャーがFND_CONCURRENT_REQUESTSテーブルから読み取るたびにキャッシュされる要求の数を指定します。キャッシュサイズを増やすと、スリープ時間を回避しようとするため、マネージャーのスループットが向上します。
同時要求のパージ
FND_CONCURRENT_PROCESSESおよびFND_CONCURRENT_REQUESTSのレコードが50Kを超えると、Oracleアプリケーション内で深刻なパフォーマンスの問題が発生する可能性があることがわかります。これらの問題を回避するには、「同時リクエストおよび/またはマネージャーデータのパージ」と呼ばれる特定のリクエストを使用して、これらのテーブルのデータを定期的にパージする必要があります。定期的に実行するようにスケジュールする必要があります。このリクエストは、FNDテーブル、およびディスクに蓄積されたログファイルと出力ファイルからリクエストデータを削除するように構成できます。
OracleAppsディクショナリテーブルの高パフォーマンスの分析
コンカレントマネージャテーブルは時間の経過とともに断片化する可能性があるため、定期的なメンテナンスで再構築することをお勧めします
また、リクエストを実行することも非常に重要ですテーブル統計の収集
重要なテーブルのいくつかは
FND_CONCURRENT_PROCESSES
FND_CONCURRENT_PROGRAMS
FND_CONCURRENT_REQUESTS、
FND_CONCURRENT_QUEUES。
OracleConcurrentManagerに関するこの投稿を気に入っていただければ幸いです。
また読む
Concurrent Managerクエリ:この記事には、Concurrent Managerのトラブルシューティング、解決策、実行時間、詳細に関するすばらしい上位30のConcurrentManagerクエリが含まれています
ORA-01427:ORA-01427のソリューションについてはこちらをご覧ください:単一行サブクエリは複数の行エラーを返します。コンカレントマネージャで発生した場合の解決方法
Oracleアプリのリクエストセット:リクエストセットは、単一のトランザクションを使用して同じリクエストのセットを定期的に送信する機能を提供します。
コンカレントマネージャーインタビューの質問::EBSインタビューに役立つ24のコンカレントマネージャーインタビューの質問を確認してください。これは、標準マネージャー、サービスマネージャーに関するあらゆる種類の質問で構成されています
並列並行処理:PCPとは何ですか、セットアップ方法、内部モニターの定義方法
Oracle Concurrent Manager:E-BusinessSuite並行Manager Process Works、Oracle Concurrent Manager、内部モニターとは、サービスマネージャーとトラブルシューティングとは
https://docs.oracle.com/cd/E18727_01/doc.121/e12893/T174296T174302.htm
推奨コース
以下は、さらに一歩進んだ場合に購入できる推奨コースの一部です。
以下にいくつかのコースへのリンクを示します
Oracle DBA 11g / 12c –ジュニアDBAのデータベース管理 :このコースは、ジュニアDBAとして始めている人、またはOracleDBAを目指している人に適しています。これにより、バックアップとリカバリおよび一般的な管理タスクを十分に理解できます。
Oracleデータベース:Oracle 12CR2RAC管理 :このコースでは、Oracle RACのインストール、管理について説明します。 OracleRACのスキルをアップグレードしたいOracleDBAに適したコース
OracleDataGuard:Oracle12CR2のデータベース管理 :このコースでは、Oracle Dataguardのインストール、管理について説明します。 OracleDataguardのスキルをアップグレードしたいOracleDBAに適したコース