データ共有ツールでのエラーのトラブルシューティング

この章では、パフォーマンスが低下する問題とそのトラブルシューティング方法に関するガイダンスを提供します。

トピック:

ライブ共有機能のパフォーマンスが遅い

ECPUが増えると、複雑な問合せを実行中のデータ共有ツールのライブ共有機能のパフォーマンスは向上しますか。

いいえ、向上しません。このような場合、実行中の複雑な問合せのパフォーマンスを向上させるには、Data Studioを使用して並列度(DOP)を構成する必要があります。

Data Studioを使用した並列度(DOP)の構成

データベース・アクション・インスタンスのライブ共有機能をECPUの値を増やして実行した場合、デフォルトでは、実行中の複雑な問合せのパフォーマンスは改善されません。

DOPオプションを使用すると、実行中の複雑な問合せのパフォーマンスを向上させることができます。DOPでは、パラレル計画の実行ごとに、単一の文を実行するために使用されるプロセッサの数を設定します。この項では、Data Studioのライブ共有機能を使用して、Autonomous AI Databasedegree of parallelism (DOP)構成オプションを構成する方法について説明します。

この例では、ライブ共有機能を使用し、非圧縮でのサイズが1TBの表を共有します。

開始する前に、考慮する必要がある事項がいくつかあります:
  • DOPの値を構成するオプションを実行できるのは、adminだけです。
前提条件
  • データベース・アクション・インスタンスに管理者としてログインし、「管理」「リソース管理ルールの設定」を選択します。
  • デフォルトの同時実行性値およびDOPをメモします。
Data Studioを使用して並列度を構成して、実行中の複雑な問合せのパフォーマンスを向上させるには、次のことを行います:
  • 共有をプロバイダとして作成します。
  • 共有をコンシューマとして消費し、共有に対して外部問合せを作成して、問合せの実行時間を記録します。
  • プロバイダおよびコンシューマとしてECPUを現在の値より大きい値に増やし、問合せの実行時間を記録します
  • MEDIUMコンシューマ・グループのDOP値を構成します。
  • 同じ共有を使用し、同じ表の問合せ実行時間を記録します。

ノート:

ECPU数およびDOP値は、ADMIN権限を持つプロバイダとして構成する必要があります。
「データベース・アクション」起動パッド上で、「セレクタ」をクリックし、Data Studioツール・スイートから「データ共有」ツールを選択します。
  1. 共有をプロバイダとして作成します。
    1. 「共有の提供」をクリックし、「+共有の作成」を選択します。
    2. 「共有の作成」ウィザードで、「共有の作成」タブの「名前」フィールドに共有の名前を入力します。例: TEST



      「説明」フィールドに、共有するデータの説明を入力します。このフィールドはオプションです。

      「次」を選択して、「公開詳細」タブに進みます。

    3. ウィザードの詳細表の公開タブで、「直接接続を使用したライブ・データの共有」を選択します。



      「次へ」をクリックします。

    4. ウィザードの「表の選択」タブで、ドロップダウン・メニューからスキーマを選択し、「使用可能な表」からCUSTOMER表をドラッグ・アンド・ドロップします。



      ノート:

      この例では、大きいサイズのCustomerという名前の単一の表を共有しています。

      「次」をクリックして、「共有の作成」ウィザードの「受信者」タブに進みます。

    5. 「共有の作成」ウィザードの「受信者」タブで、ドロップダウンからMY_COMPARTMENTを選択します。

    6. 「作成」を選択して共有を作成します。



  2. 共有をコンシューマとして消費し、共有に対して外部問合せを作成して、問合せの実行時間を記録します。
    1. 共有をプロバイダとして作成したら、プロバイダによって共有されるデータを消費します。

      詳細は、「共有の消費」を参照してください。

    2. コンシューマとしてログインして、データ共有プロバイダをサブスクライブし、共有のデータにアクセスします。
    3. データ共有ツールの「プロバイダおよびコンシューマ」ページで、「共有の消費」タイルをクリックして、「共有の消費」ページを表示します。
    4. 「共有プロバイダへのサブスクライブ」ドロップダウン・リストをクリックし、「ライブ共有プロバイダへのサブスクライブ」オプションを選択します。



    5. 「共有プロバイダの詳細」で、「プロバイダ名」を選択します。この例では、プロバイダの名前はTPUSERです。



    6. プロバイダ設定ウィザードの「共有プロバイダへのサブスクライブ」ページの「共有の追加」パネルで、「使用可能な共有」セクションの「テスト」をクリックし、(>)アイコンをクリックします。



    7. ツールは、「選択した共有」セクションに共有を追加します。「サブスクライブ」をクリックします
    8. TPUSER共有プロバイダが正常に作成されたことを示すメッセージが表示されます。「共有」タブが選択された状態で「データのロード」ページが表示されます。



    9. TESTSHAREデータ共有ノードを展開して、その中のオブジェクトを表示します。TPUSER.CUSTOMER共有表をドラッグ・アンド・ドロップして、データ・ロード・ジョブに追加します。
    10. 共有表がデータ・リンク・ジョブに追加されます。このジョブを実行すると、共有されているCUSTOMER表を基にして新しいCUSTOMERビューが作成されます。
    11. 「開始」をクリックします。「クラウド・ストアからのリンクの開始」ダイアログ・ボックスが表示されます。「実行」をクリックします。ジョブが正常に完了すると、リンク・アイコンが表示されます。CUSTOMERビューが作成されます。
    12. 「データベース・アクション」|「データ共有」バナーをクリックします。「データベース・アクション」|「起動パッド」で、「開発」タブをクリックし、「SQL」タブをクリックしてSQLワークシートを表示します。



    13. CUSTOMER表をSQLワークシート領域にドラッグ・アンド・ドロップします。
    14. 使用可能な挿入のタイプを示すダイアログが表示されます。
    15. 「選択」をクリックして、「適用」をクリックします。





    16. 「実行」をクリックします。ワークシートに自動生成された問合せが表示されます。



    17. 「問合せ結果」タブに表示される「実行時間」フィールドの問合せ実行時間をメモします。
  3. プロバイダおよびコンシューマとしてECPUを増やし、問合せの実行時間を記録します。
    1. OCIコンソールから、Autonomous AI DatabaseインスタンスのECPUをプロバイダおよびコンシューマとして増やします。

      ノート:

      自動スケーリングが有効になっていないことを確認してください。

      この例では、ECPU数を32に増やしました。ECPU数は任意の値にアップスケールできます。

    2. 同じCUSTOMER共有の使用と問合せ実行時間の計算を繰り返します。表の問合せの時間に変化はありません。
  4. MEDIUMコンシューマ・グループのDOP値を構成します。
    1. ADMIN権限を持つコンシューマとしてデータベース・アクション・インスタンスにログインします。
    2. 「セレクタ」をクリックし、「管理」「リソース管理ルールの設定」を選択します。

    3. MEDIUMコンシューマ・グループの並行性制限8に減らし、「変更の保存」をクリックします。同時実行制限を減らすと、DOPが増加します。



    ノート:

    このステップで設定する同時実行性の制限は、前提条件でメモしたデフォルト値より小さくする必要があります。
  5. フォローアップ・ステップ - 並列度オプションを構成したら、共有を消費し、共有に対して外部問合せを作成して、問合せの実行時間を記録するプロセスを繰り返します。

    問合せ実行時間の値が減少したことがわかります。

同じ複雑なSQL問合せのパフォーマンスが、サーバーを再起動することなくすぐに向上します。

共有表問合せ試行の失敗

問題:共有テーブルをクエリーしようとすると、サポートされていないDeltaテーブルの機能を示すエラーで失敗します。

考えられる原因:共有表では、デルタ・レイク機能である削除ベクトルが使用されています。Autonomous AI Database Delta Sharingコンシューマは、削除ベクトル(DV)をサポートしていません。

解決策:プロバイダに、DVを表から削除するように依頼します。
  • Databricks 16.3以降では、ALTER TABLE <table_name> DROP FEATURE deletionVectors; を使用して再共有します。
  • 新しいDVの使用を停止し、プロトコルをダウングレードしない{{delta.enableDeletionVectors=false - }}の設定にのみ依存しないでくださいDrop a Delta Lake table feature and downgrade table protocolの手順に従います。

  • 詳細は、「削除ベクトルとは」を参照してください。

HTTP 403リモートIP許可リストによる未承認

問題:共有データへのアクセスまたはリモートデータのダウンロードが HTTP 403 - Unauthorizedエラーで失敗します。

考えられる原因:リモート・サービス(たとえば、Azure Blob Storageまたは別の外部エンドポイント)は、Autonomous AI Databaseで使用されるパブリック・アウトバウンドIPアドレスを含まないソースIP許可リストで構成されます。

ノート:

次の問合せを使用してアウトバウンドIPアドレスを特定しないでください。

SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') FROM dual;

この問合せは、外部サービスによって検出されたアウトバウンドIPアドレスではなく、現在のセッションのクライアントIPアドレスを返します。

解決策: Autonomous AI DatabaseのアウトバウンドIPアドレスを識別するには、コール元のIPアドレスを返すパブリック・エンドポイントにHTTPSリクエストを行います。次に、そのIPアドレスを許可リストに追加するようリモート・サービス管理者に依頼します。

  1. テスト・エンドポイントへのアクセス権を付与します。

    BEGIN
      DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host       => 'httpbin.org',
        lower_port => 443,
        upper_port => 443,
        ace        => xs$ace_type(
                        privilege_list => xs$name_list('http'),
                        principal_name => USER,
                        principal_type => xs_acl.ptype_db));
    END;
    /
  2. Autonomous AI Database内からエンドポイントを問い合せます。

    SET SERVEROUTPUT ON
    
    DECLARE
      resp UTL_HTTP.resp;
      line VARCHAR2(32767);
    BEGIN
      resp := UTL_HTTP.begin_request('https://httpbin.org/ip');
      resp := UTL_HTTP.get_response(resp);
      UTL_HTTP.read_line(resp, line, TRUE);
      DBMS_OUTPUT.put_line('Autonomous Database outbound IP = ' || line);
      UTL_HTTP.end_response(resp);
    END;
    /
    
    レスポンスには、外部サービスによって検出されたパブリックIPアドレスが含まれます。たとえば:
    {{{"origin":"150.136.133.92"}}}
  3. リモート許可リストにIPアドレスを追加します。

    ファイアウォール、ストレージ・アカウントのネットワーク・ルールまたはパートナ側の許可リストを更新して、IPアドレスを含めます。

許可リストが更新されたら、データ・アクセスまたはデータ共有操作を再試行してください。