Openflow Connector for Oracle のトラブルシューティング

注釈

このコネクタは、 Snowflakeコネクタ規約 に従うものとします。

注釈

|OracleOFC|には、標準のコネクタ利用規約以外の追加利用規約も適用されます。詳しくは、`Openflow Connector for Oracle Addendum<https://www.snowflake.com/en/legal/optional-offerings/offering-specific-terms/openflow-oracle-terms/>`_を参照してください。

このトピックでは、 Openflow Connector for Oracle の一般的な問題のトラブルシューティング方法について説明します。

テーブルが複製に追加されたが、Snowflakeに表示されない

テーブルの完全修飾名(FQN)がコネクタの構成で誤って指定されている可能性があります。

解決策

  • ``Oracle Ingestion Parameters``のFQNの形式を確認します。``<database_name>.<schema_name>.<table_name>``である必要があります(データベースプレフィックスに注意してください)。

  • Oracle Source Parameters » ``Oracle Connection URL``でデータベース名を確認します。FQNsはデータベースの名前の指定をサポートしていますが、現在のデータは、この接続に使用されるものと同じデータベースインスタンスに存在する必要があります。

  • コネクタ構成で、ドメイン名を含む完全なデータベース名を指定したことを確認します。たとえば、単に``MYDB``ではなく``MYDB.EXAMPLE.COM``を使用します。

    正しいデータベース名を見つけるには、Oracleデータベースで次のクエリを実行します。

    SELECT property_value
      FROM database_properties
      WHERE property_name = 'GLOBAL_DB_NAME';
    

    一般に``property_value``はデータベースのサービス名と同じです。ただし、返されるデータベース名には、追加されたドメイン名が含まれる場合があります(たとえば、サービス名``FOO``の場合、クエリは``FOO.EXAMPLE.COM``を返す可能性があります)。その場合は、ドメイン付きの完全な名前(ドットが含まれているため、二重引用符で囲む)を使用します。

増分ロードにおける変更なし

増分ロードでは、ソースデータベースからの変更を取得または適用していません。

解決策

Read Oracle CDC Stream プロセッサーの検証を実行します。

  1. Openflowランタイムで、:ui:`Oracle`フローをダブルクリックします。

  2. :ui:`Incremental Load`という名前のプロセスグループをダブルクリックします。

  3. :ui:`Read Oracle CDC Stream`プロセッサーを見つけます。

    1. 実行中の場合は、右クリックして:ui:`Stop`を選択します。構成を確認する前に、プロセッサーを停止する必要があります。

  4. :ui:`Read Oracle CDC Stream`を再度右クリックし、:ui:`Configure`を選択します。

  5. Properties タブを選択します。

  6. 右上隅の:ui:`Verification`チェックマークアイコンを選択します。

  7. 表示されるポップアップウィンドウで、右下隅の:ui:`Verify`を選択します。

    検証手順の結果が下部に表示されます。プロシージャは、データベース接続を検証し、増分ロードが機能するために必要なコンポーネントのステータスを確認します。

検証手順のいずれかが失敗した場合は、エラーメッセージを表示し、問題を修正して、検証を再度実行します。次のセクションでは、具体的な問題と解決策について説明します。

キャプチャステータスがENABLEDではない

キャプチャプロセスのステータスは``DISABLED``または``ABORTED``です。``DISABLED``ステータスは、キャプチャプロセスが(``DBMS_XSTREAM_ADM.STOP_OUTBOUND``で)手動で停止されたか、データベースが再起動されたことを意味します。``ABORTED``ステータスは、通常、キャプチャプロセスに必要なredoログが削除されたため、キャプチャでエラーが発生したことを意味します。これは、システム変更番号(SCN)の位置を確認するか、キャプチャステータスをクエリすることで確認できます。

解決策

アウトバウンドサーバーを起動します。

BEGIN
   DBMS_XSTREAM_ADM.START_OUTBOUND('XOUT1');
END;
/

LogMinerセッションのUNKNOWNステータス

LogMinerステータスは``UNKNOWN``です。これは、LogMinerが依存していたアーカイブ済みのログが削除されたことを意味します。これは、``V$ARCHIVED_LOG``をクエリし、DELETED列の値がYESである行をチェックすることで確認できます。

解決策

XStreamアウトバウンドサーバーを再作成します。詳しくは、:ref:`label-recreate_xstream_outbound_server`を参照してください。

XStreamキャプチャのWAITING FOR REDOステータス

XStreamキャプチャステータスに``WAITING FOR REDO: FILE NA, THREAD 1, SEQUENCE 47, SCN 0x0000000000190ac4``が表示されます。これは、LogMinerが削除されたために利用できないアーカイブログファイルを待機していることを意味します。これは、``V$ARCHIVED_LOG``をクエリし、DELETED列の値がYESである行をチェックすることで確認できます。

解決策

XStreamアウトバウンドサーバーを再作成します。詳しくは、:ref:`label-recreate_xstream_outbound_server`を参照してください。

XStreamキャプチャルールが正しくない

XStreamは、予期されるスキーマまたはテーブルからの変更をキャプチャするように構成されていません。

解決策

次のクエリを実行して、キャプチャルールを確認します。

SELECT STREAMS_NAME, SCHEMA_NAME, OBJECT_NAME, RULE_TYPE
FROM DBA_XSTREAM_RULES
WHERE STREAMS_NAME = 'XOUT1';

キャプチャステータスとエラーメッセージを直接クエリすることもできます。

SELECT CLIENT_NAME, STATUS, ERROR_MESSAGE FROM ALL_CAPTURE;

このクエリは次を返します。

  • CLIENT_NAME:XStreamクライアント(アウトバウンドサーバー)の名前。

  • STATUS:キャプチャプロセスの現在のステータス(例:ENABLEDDISABLEDABORTED)。

  • ERROR_MESSAGE:キャプチャ処理に関連するエラーメッセージ。

エラーORA-21560:引数last_positionがnull、無効、または範囲外

コネクタが、redoログが利用できなくなったSCN位置に接続しようとしました。

解決策

次のクエリを実行して、問題を確認します。``Last SCN processed by XStream``のSCNは、redoログが存在する最小のSCNよりも大きい必要があります。

SELECT min(FIRST_CHANGE#) as SCN,
       'Lowest SCN for which redo logs still exist' AS DESCRIPTION
FROM V$ARCHIVED_LOG
WHERE DELETED = 'NO'
UNION ALL
SELECT PROCESSED_LOW_SCN,
       'Last SCN processed by XStream'
FROM DBA_XSTREAM_OUTBOUND_PROGRESS
WHERE SERVER_NAME = 'XOUT1'
ORDER BY SCN;

このエラーから回復するには、XStreamアウトバウンドサーバーを再作成します。詳しくは、:ref:`label-recreate_xstream_outbound_server`を参照してください。

エラーORA-26701:ストリームプロセスXOUT1が存在しない

XStreamアウトバウンドサーバーがデータベースインスタンスで見つかりません。

解決策

次のことを確認します。

  • Oracle Source Parameters » ``XStream Out Server URL``内のデータベース名は、別のPDBではなく、XStreamアウトバウンドサーバーを持つデータベースインスタンスを指しています。

  • XStreamはこのインスタンスで作成されており、同じ名前です。

エラーORA-01722:アウトバウンドサーバー作成時の無効な数値

``DBMS_XSTREAM_ADM.CREATE_OUTBOUND``の実行が以下のように失敗します。

ORA-01722: invalid number
ORA-06512: at "SYS.DBMS_LOGREP_UTIL", line 582
ORA-06512: at "SYS.DBMS_LOGREP_UTIL", line 636
ORA-06512: at "SYS.DBMS_XSTREAM_ADM_UTL", line 440
ORA-06512: at "SYS.DBMS_XSTREAM_UTL_IVK", line 2094
ORA-06512: at "SYS.DBMS_XSTREAM_UTL_IVK", line 2302
ORA-06512: at "SYS.DBMS_XSTREAM_ADM", line 44
ORA-06512: at line 8

このエラーは誤解を招くものです。アウトバウンドサーバーは既に存在します。

解決策

アクションは必要ありません。既存のアウトバウンドサーバーを使用します。

XStreamアウトバウンドサーバーで問題が発生する

redoログの削除やLogMiner状態の破損などの複数の問題は、XStreamアウトバウンドサーバーを再作成することで解決できる場合があります。

解決策

  1. 既存のアウトバウンドサーバーをドロップします。

    BEGIN
       DBMS_XSTREAM_ADM.DROP_OUTBOUND('XOUT1');
    END;
    /
    
  2. アウトバウンドサーバーを再度作成します。詳細については、 XStreamアウトバウンドサーバーを作成する をご参照ください。