統合ランタイムのトラブルシューティング
Oracle Integrationで統合ランタイムのトラブルシューティングについて学習します。
Oracle Identity Cloud Serviceがマルチ・ファクタ認証で構成されている場合、基本認証を使用してサービスをコールすると、401-Unauthorizedエラーが発生
Oracle Identity Cloud Serviceがマルチ・ファクタ認証(ユーザー名 / パスワード+マルチ・ファクタ認証など)で構成されており、基本認証を使用してOracle Integrationサービスを起動すると、401-Unauthorizedエラーが表示されます。 Oracle Integrationのアダプタまたは接続エージェントはいずれもマルチ・ファクタ認証をサポートしていません。
- 基本認証を使用しているアカウントから、マルチ・ファクタ認証を無効にします。
- かわりにOAuthを使用します。
「マルチ・ファクタ認証の管理」を参照してください。
ペイロードがサイズ制限を超えた場合の修正処理の実行
統合のメッセージ・ペイロードがサイズ制限を超えると、メッセージは拒否され、エラー・メッセージが表示されます。 エラー・メッセージでは、実行する修復アクションについて説明します。
| 問題 | エラー・メッセージ | 実行する修正処理 |
|---|---|---|
| ペイロード・サイズ制限を超えました |
|
大きなデータ・セットを送信するには、添付を使用することをお薦めします。 ターゲット・アプリケーションがSOAP APIを公開して、添付として送信されたデータを返すかどうかを確認します。 はいの場合、MTOMアタッチメントを受け入れるようにSOAPアダプタを使用して起動接続を構成するように統合を設計できます。 添付は、XML/カンマ区切り値(CSV)ドキュメントを含むアーカイブにすることができます。 |
| 添付サイズ制限を超えました |
|
添付が破損し、複数のAPIを介して送信できるかどうかを確認します。 たとえば、添付が大規模なCSVファイルおよび非構造化ドキュメントを含むZIPアーカイブである場合、CSVファイルを返すAPIと、非構造化ドキュメントを取得する別のAPIがあります。 |
50 MBのペイロードのサポート、制限およびベスト・プラクティスの詳細は、「Oracle Integration Generation 2のプロビジョニングと管理」の「サービス制限」を参照してください。
着信ペイロードからの印刷不可能な制御文字の削除
Oracle Integrationでは、次の範囲の特定の印刷不可能な制御文字をサポートしていません。
['\u0000', '\u0001', '\u0002', '\u0003', '\u0004', '\u0005', '\u0006',
'\u0007', '\u0008', '\u000b', '\u000c', '\u000e', '\u000f', '\u0010', '
\u0011', '\u0012', '\u0013', '\u0014', '\u0015', '\u0016', '\u0017', '\
u0018', '\u0019']{
"type" : "10.4.1",
"title" : "exception occurred while translating the request from native to
xml.",
"detail" : "oracle.cloud.connector.api.CloudInvocationException:
ORABPEL-15235\n\nTranslation Failure.\nFailed to translate JSON to XML.
org.codehaus.jackson.JsonParseException: Illegal unquoted character
((CTRL-CHAR, code 1)): has to be escaped using backslash to be included in
string value\n at [Source: java.io.BufferedReader@.#; line: 2, column:
22]\nThe incoming data does not conform to the NXSD schema. Please correct
the problem.\n",
"o:errorCode" : "TRANSLATION-ERROR-00",
"o:errorDetails" : [ {
"type" : "NA",
"instance" : "NA",
"title" : "NA",
"o:errorPath" : "NA",
"o:errorCode" : "NA"
} ]
}このエラーが表示された場合は、受信JSONペイロードを事前処理する方法および印刷不可能な制御文字をフィルタする方法の詳細は、Oracle Supportに連絡してください。
通知アクションが無効な<from>値を返すエラー
オーケストレートされた統合の通知アクションが正常に検証されたが、統合の実行時に次のエラーが発生する場合、通知アクションの「パラメータ値」で指定された値が正しくない可能性があります。
:
summary=<summary>The <from> value is invalid.
Xpath expression associated with <from> in copy assign activity is invalid.
There is an user error that results in missing element value(s) in the xpath query.
Please review the payload and modeling to ensure that all elements defined in the <from> xpath query have valid non-null values .
</summary>
:
,query=<query>fn:current-dateTime()</query>エラーを確認するには、「インスタンスのトラッキング」ページで統合インスタンスのエラーを表示するか、PostmanなどのRESTテスト・ツールのレスポンスを表示します。
string(fn:current-dateTime())同期統合が504ゲートウェイ・タイムアウト・エラーで失敗する場合がある
同期統合は次のエラーで失敗する可能性があります。
Bad response: 504 Gateway Time-out from url
https://Instance_URL/Integration_Name/Version_Number/このエラーは、同期統合(レスポンス・ペイロードを返す統合)が300秒に制限され、その制限を超えるとタイムアウト・エラーが返されるために発生します。
300秒未満でインスタンスの実行を完了するために、統合またはエンドポイント(あるいはその両方)を最適化します。
「Oracle Integration Generation 2のプロビジョニングと管理」の「サービス制限」を参照してください。
統合でフォルト・ハンドラを使用する場合の無効な<From>値
フォルト・ハンドラを使用して構成された統合は、<from>値が無効であることを示す次のエラーで失敗する場合があります。
ICSWC-0001) :
Error message is - The <from> value is invalid.
Xpath expression associated with <from> in copy assign activity is invalid.
There is a user error that results in missing element value(s) in the xpath
query.
Please review the payload and modeling to ensure that all elements defined in
the <from> xpath query have valid non-null values.フォルト形式は、エンドポイント構成がフォルト処理インフラストラクチャよりも優先されることを示します。 したがって、このフォルトは、スコープまたはデフォルト・ハンドラに関連付けられたフォルト・ハンドラ内では処理できません。 これは、Oracle Integration Cloud ServiceからOracle Integrationに17.4.5より前の統合をインポートしたときに発生します。
<soap-env:Fault xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<faultcode
xmlns:faultsrc="http://xmlns.oracle.com/cloud/adapter/REST/GetLocation_REQUEST">faultsrc:APIInvocationError</faultcode>
<faultstring>ICS runtime execution error</faultstring>
<detail>
<ICSfaultVar/>
<reason><genericRestFault><errorCode>400</errorCode><er
rorPath><![CDATA[GET
https://myinsance.com/maxrest_b1dk/rest/os/ICSLOCATION?_lid=icsuser&_lpwd=M%24lee019&LOCATION=101104&STATUS=OPERATING returned a
response status of 400 Bad
Request]]></errorPath><instance><![CDATA[Error 400:
BMXAA7901E - You cannot log in at this time. Contact the system
administrator. ]]></instance></genericRestFault>
:Application Error</reason>
<operation>execute</operation>
<request_payload/>
</detail>
</soap-env:Fault>
解決策
フォルト処理を含めるように統合を変更しないでください。 変更が必要な場合は、アダプタ・エンドポイント構成を編集します。 アダプタ・エンドポイント構成を編集すると、次に示すAPIInvocationError形式に準拠する入力済フォルトをスローするように統合が更新されます。 これにより、フォルト・ハンドラ内でフォルトを処理できます。
<soap-env:Fault xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<faultcode
xmlns:faultsrc="http://xmlns.oracle.com/cloud/adapter/REST/InvokeMonitoring_REQUEST">faultsrc:APIInvocationError</faultcode>
<faultstring>ICS runtime execution error</faultstring>
<detail>
<ICSfaultVar>
<nstrgdfl:APIInvocationError
xmlns:nstrgdfl="http://xmlns.oracle.com/cloud/generic/rest/fault/REST/InvokeMonitoring">
<nstrgdfl:type/>
<nstrgdfl:title/>
<nstrgdfl:detail/>
<nstrgdfl:errorCode/>
<nstrgdfl:errorDetails>
<nstrgdfl:type>http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1</nstrgdfl:type>
<nstrgdfl:title>Bad Request</nstrgdfl:title>
<nstrgdfl:errorCode>400</nstrgdfl:errorCode>
<nstrgdfl:errorPath><![CDATA[POST
http://myinstance.com:7003/ic/api/integration/v1/monitoring/errors/(id)/resubmit returned a response status of 400 Bad
Request]]></nstrgdfl:errorPath>
<nstrgdfl:instance><![CDATA[{"status":"HTTP 400 Bad
Request","title":"Invalid ID format. Please provide only
numbers.","type":"https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1"}.A 400 Bad Request Error indicates that the target service is unable
(or refuses) to process the request sent by the client (Oracle Integration
Cloud), due to an issue that is perceived by the server to be a client
problem. You can trace the cURL representation of the request sent to the
target service from the Oracle Integration Cloud server logs. Try invoking
the target service using cURL. It may also be that one of the intermediaries
(proxy, LBR) could be returning this code. ]]></nstrgdfl:instance>
</nstrgdfl:errorDetails>
</nstrgdfl:APIInvocationError>
</ICSfaultVar>
<reason>Fault Details : <nstrgdfl:APIInvocationError
xmlns:nstrgdfl="http://xmlns.oracle.com/cloud/generic/rest/fault/REST/InvokeMonitoring"><nstrgdfl:type/><nstrgdfl:title/><nstrgdfl:detail/
><nstrgdfl:errorCode/><nstrgdfl:errorDetails><nstrgdfl:type&
gt;http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1</nstrgdfl:type><nstrgdfl:title>Bad
Request</nstrgdfl:title><nstrgdfl:errorCode>400</nstrgdfl:error
Code><nstrgdfl:errorPath>&lt;![CDATA[POST
http://myinstance.com:7003/ic/api/integration/v1/monitoring/errors/(id)/resubmit returned a response status of 400 Bad
Request]]></nstrgdfl:errorPath><nstrgdfl:instance>&lt;!
[CDATA[{"status":"HTTP 400 Bad Request","title":"Invalid ID format. Please
provide only
numbers.","type":"https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1"}.A 400 Bad Request Error indicates that the target service is unable
(or refuses) to process the request sent by the client (Oracle Integration
Cloud), due to an issue that is perceived by the server to be a client
problem. You can trace the cURL representation of the request sent to the
target service from the Oracle Integration Cloud server logs. Try invoking
the target service using cURL. It may also be that one of the intermediaries
(proxy, LBR) could be returning this code.
]]></nstrgdfl:instance></nstrgdfl:errorDetails></nstrgdf
l:APIInvocationError> :Application Error</reason>
<operation>execute</operation>
<request_payload/>
</detail>
</soap-env:Fault>
アクティビティ・ストリーム・ログが削除されました
Oracle Integrationのアクティビティ・ストリーム・ログは、特定のシナリオで自動的に削除できます。 これらのシナリオについては、Oracle Cloud Infrastructureコンソールでアクティビティ・ストリーム・ログを取得する方法を説明するドキュメントへのリンクとともに、ペイロードでのトレースを有効にし、「インスタンスの追跡」ページにアクティビティ・ストリーム・ログを表示し、REST APIでアクティビティ・ストリーム・ログをダウンロードする方法について説明しています。
アクティビティ・ストリーム・ログの自動ローテーション
Oracle Integrationのアクティビティ・ストリーム・ログは、次のシナリオで自動的に削除できます:
- トレースおよびペイロード・ロギングが有効な統合が多すぎます。
- 統合のインスタンスが多すぎます。
アクティビティ・ストリーム・ログ・サイズは100 MBです。 これらのいずれかのシナリオが発生すると、ファイルはローテーションされ、アクティビティ・ストリームは表示されません。 Oracleでは、本番環境でトレースおよびペイロード・ロギングを有効にすることはお薦めしません。
かわりに、ペイロードおよびその他の情報(インスタンスID、ユーザー、統合名、コード、バージョンなど)を選択したストレージのロケーションにプッシュできる統合を設計し、ローカル起動接続を介してこの統合を起動し、ログ情報を永続化します。
アクティビティ・ストリームのペイロード・データは、統合インスタンスで作成されたics-flow.logファイルから導出されます。 これらのファイルは10 MBに達するとローテーションされ、10個のファイルのみが保持されます。 ファイル・サイズまたはファイル・ローテーション設定を再構成するオプションはありません。 トランザクション数(生成されたインスタンスID)およびペイロード・サイズに応じて、フロー・ログ・ファイルを頻繁にローテーションできます。 これにより、アクティビティ・ストリームがペイロードおよびトレース・データを表示できる時間ウィンドウが制限されます。 これは、統合のアクティブ化中に「トレースの有効化」および「ペイロードを含める」オプションを選択した場合の予期される動作です。
アクティビティ・ストリームのペイロード・データが一定期間保持または使用可能であることは保証されません。 アクティビティ・ストリーム・データの可用性は、統合によって異なります。 「トレースの有効化」および「ペイロードを含める」のオプションは、設計時およびトラブルシューティングでの使用を目的としています。 これらのオプションは、絶対に必要な場合にのみ本番で使用してください。 ベスト・プラクティスとして、モニタリングおよびデバッグのためにペイロードの個々のフィールドを追跡するようにビジネス識別子を設定します。 これらのトラッキング・フィールドは、「インスタンスのトラッキング」ページの統合インスタンスごとに表示され、インスタンスの保存期間全体にわたって保持されます。
- 「トレースの有効化」および「ペイロードを含める」オプションを使用して統合をアクティブ化するのは、(デバッグ目的で)絶対に必要な場合のみです。
- 非常に大きなペイロードまたは多数のペイロードを処理する統合(ループ・メカニズムなど)の場合は、アクティブ化時に「ペイロードを含める」オプションを設定しないでください。
Oracle Cloud Infrastructureコンソールでアクティビティ・ストリームを取得
- 「Oracle Integration Generation 2のプロビジョニングと管理」の「Oracle Cloud Infrastructureコンソールでの統合のアクティビティ・ストリームの取得」
ペイロードを使用したトレースの有効化およびインスタンスのトラッキング・ページでのアクティビティ・ストリームの表示
- 「アクティブな統合に対するトレースの有効化または無効化」を参照してください
- 「統合のアクティブ化」を参照してください
- 「オーケストレートされた統合のランタイム・インスタンス・フローの表示」を参照してください
REST APIを使用したアクティビティ・ストリーム・ログのダウンロード
- ダッシュボード・ページからのアクティビティ・ストリームの表示
- 「アクティビティ・ストリーム・メッセージの取得」を参照してください
- 「ログ・ファイルのダウンロード」を参照(
icsflowlogパラメータを指定)
ノート:
絶対値(特定のサイズではなく10 MB)を使用する場合、ファイルをダウンロードすると、最新の10 MBファイルのみがダウンロードされます。 ローテーションされたファイルはダウンロードできません。非同期統合でメッセージのデキューに3~ 4秒かかる
Oracle IntegrationがMessage Received:Instance created and enqueued for processingからmessage dequeued and processed by Trigger trigger_nameに移動するのに3から4秒かかる場合があります。 これにより、特定のインスタンスのエンド・ツー・エンドの処理時間が長くなります。
これは、非同期リクエストで予期される動作です。 非同期リクエストは、キューを使用して処理されます。 フロー・ログの最初の2つのエントリは、エンキュー時間とデキュー時間を示しています。 したがって、数秒の遅れが予想されます。
OAuthを使用して保護されたAPIへのアクセス時の403 エラー
OAuthにより、Oracle Integrationはユーザー・リソースに自分のかわりにアクセスできるようになります。 RESTおよびその他のRESTベース・アダプタ(Google Calendar、Microsoft Emailなど)は、多くの場合、OAuthを使用して保護されているAPIにアクセスします。 これらの呼び出しによって403エラー(禁じられている)が発生した場合、通常はAPIにアクセスする権限がないことを意味します。
403エラーの原因としては、次のようなものがあります:
-
アクセス・トークンは、アクセスされているAPIをカバーしていないスコープに対して調達されました。
-
同意を提供するフェーズでは、同意を提供したユーザーはアクセスされているAPIのリソース所有者または所有者ではありません。
-
アクセス・トークンの有効期限が切れているか、リソースにアクセスできなくなりました。
-
許可サーバーは、特定のリソースへのアクセス特権を取り消しました。
証明書のインポート失敗のトラブルシューティング
Verisign、Entrustなどの認証局(CA)から受け取った証明書は、Oracle Integrationへのインポート中にログファイルに次のエラーで失敗する可能性があります:
java.security.cert.CertificateException: Unable to initialize,
java.io.IOException: extra data given to DerValue constructor -
CAから固定証明書を取得します。
-
opensslなどのツールを使用して、証明書をDistinguished Encoding Rules (DER)バイナリ証明書に変換します。 たとえば:openssl x509 -outform der -in sfdc-client.crt -out sfdc-client.der