0 / 0
資料の 英語版 に戻る
Data Virtualizationでクエリを実行するとSQL1822Nエラー
最終更新: 2024年11月26日
Data Virtualizationでクエリを実行するとSQL1822Nエラー

照会を実行しようとすると、コード SQL1822N のエラーが発生します。

症状

照会を実行すると、コード SQL1822N と以下の内容のエラー・メッセージを受け取ります。

SQL1822N Unexpected error code "GDB_ERROR" received from data source
"DV-FMP". Associated text and tokens are "Query failed at some sources. 
Check remote warnings". SQLSTATE=560BD

原因

このメッセージは、照会の実行に関係するデータ・ソースの少なくとも 1 つに、照会にエラーが含まれている場合に表示されます。

問題の解決

以下の手順を実行して、問題の解決を試みてください。
  1. LISTREMOTEWARNINGS カタログ・ビューを照会して、完全なエラー・メッセージを取得します。
    • オプション 1 過去 1 時間のすべての警告を取得するには、以下の照会を使用します。
      SELECT NODE_NAME, 
             TSTAMP, 
             CAST(WARNING AS VARCHAR(250)) 
          FROM DVSYS.LISTREMOTEWARNINGS 
          WHERE TIMESTAMPDIFF(8, CURRENT TIMESTAMP - TSTAMP) <= 1 ORDER BY TSTAMP
    • オプション 2 すべての警告を取得するには、以下の照会を使用します。
      SELECT * FROM DVSYS.LISTREMOTEWARNINGS;
  2. 問題の根本原因を特定します。 完全なリモート・エラー・メッセージは「WARNING」列にあります。 この列を使用して、根本原因を識別し、修正します。 オプション 1 を使用して過去 1 時間のすべての警告を確認した場合、CAST 指定が原因で警告が切り捨てられる可能性があります。 varchar() のサイズを大きくするか、cast を削除してメッセージ全体を表示します。

    例 1: このメッセージは、リモート・データ・ソースに接続できないことを示しています。
    qpendpoint_1:6415   2021-04-27-08.43.59.428000000 
    RESULT_DS_EXEC_QUERY_ERROR: Query exec failure against Data Source 
    GDB_GTW_TPCDS_CATALOG_RETURNS_DB210001: java.lang.Exception: 
    Unreachable RDBMS in Data Source: 
    GDB_GTW_TPCDS_CATALOG_RETURNS_DB210001

    以下のアクションを実行できます。

    • Data Virtualization接続のユーザーとパスワードの定義が最新かどうかを確認します。
    • リモート・データ・ソースが実行されていることを確認します。
    • Data Virtualizationインスタンスとリモートデータソース間のネットワーク接続が存在することを確認します。
    例 2: このメッセージは、row_number () over () または rownumber () over () を指定した一部の照会が失敗したことを示しています。
    fmp_1 2022-06-17-02.49.56.313000000 2022-06-17-02.49.56.313000000 1 
    RESULT_DS_EXEC_QUERY_ERROR: Origin: 3 node(s), 0/1 sources (0 successful, 0 excluded, 1 failed, 0 missing) 
    Warnings (1) >"GDB_NODE yanlixu_yanlixuiptt8x86_Endpoint1:60009 QUERYING SOURCE Netezza VIA GDB_SUBQ_NETEZ10000: 
    Unable to get physical meta data for table: (SELECT ROW_NUMBER() OVER( ) C0 FROM ""TEST"".""TESTNUMBER"" A0) 
    SUBQ : org.netezza.error.NzSQLException: ERROR: ROW_NUMBER must include ORDER BY specification
    
    "-1822: Remote Exception: Origin: 3 node(s), 0/1 sources (0 successful, 0 excluded, 1 failed, 0 missing) 
    Warnings (1) >"GDB_NODE yanlixu_yanlixuiptt8x86_Endpoint1:60009 QUERYING SOURCE Netezza VIA GDB_SUBQ_NETEZ10000: 
    Unable to get physical meta data for table: (SELECT ROW_NUMBER() OVER( ) C0 FROM ""TEST"".""TESTNUMBER"" A0) SUBQ : 
    org.netezza.error.NzSQLException: ERROR: ROW_NUMBER must include ORDER BY specification
    
    yanlixu_yanlixuiptt8x86_Endpoint1:60009 2022-06-17-02.49.56.298000000 2022-06-17-02.49.56.298000000 1 
    RESULT_DS_EXEC_QUERY_ERROR: Query exec failure against Data Source GDB_SUBQ_NETEZ10000: java.lang.Exception: 
    Unable to get physical meta data for table: (SELECT ROW_NUMBER() OVER( ) C0 FROM "TEST"."TESTNUMBER" A0) SUBQ : 
    org.netezza.error.NzSQLException: ERROR: ROW_NUMBER must include ORDER BY specification

    以下のアクションを実行できます。

    • この例に示すように、この関数に order by 節を追加します。
      select row_number() over(order by $columnname) from <table_name>
    例 3: このメッセージは、一部の照会が Data Virtualization Manager データ・ソースで失敗したことを示しています。
    qpendpoint_3:6417    2022-08-31-08.31.55.624000000 2022-08-31-08.31.55.624000000                    1 
    ENGINE_STATEMENT_PREPARE_ERROR_SQL: GDB_SUBQ_DVM10000 
    Unable to PREPARE statement - (empty result for this data source): 
    Unable to get physical meta data for table: (SELECT A0.C1 C0, A0.C8 C1 FROM DVSQL.CB1A_TSDCV_TESTNUMBER A0) SUBQ : 
    java.sql.SQLException: [DV][JDBC Driver][3.1.202201120442] [DV][JDBC Driver][3.1.202201120442] 
    Unexpected end of input stream java.net.SocketInputStream@30edda80 
    (read 0 out of an expected 4 bytes), while executing userSql=select * from (SELECT A0.C1 C0, A0.C8 C1 FROM DVSQL.CB1A_TSDCV_TESTNUMBER A0) SUBQ where 0=1 - 'call listrdbc()' to identify the data source.
    照会パフォーマンスの問題を解決するには、 パフォーマンス・チューニングと Query 最適化を参照してください。

    この問題は、 Data Virtualization Manager サーバー上の PASSTHROUGH パラメーターの構成が原因である可能性もあります。 このパラメーターの変更を要求するには、Case をオープンしてサポートを要求してください。

    例 4: このメッセージは、 Teradata データ・ソース上に PERIOD タイプの列を持つ表に対する照会であることを示しています。

    Teradataのオプティマイザー・ガイドラインを使用して、照会を変更します。

    例えば、 bluadmin.testtera (C1 int, C2 interval year, C3 interval day to hour, C4 interval minute, C5 PERIOD(DATE), C6 PERIOD(TIME)) という指定の表が照会されたとします。
    select c5 from bluadmin.testtera
    この照会は、以下の例に示すように変更できます。
    select c5 from bluadmin.testtera 
    /* <OPTGUIDELINES> <SERVER NAME='QPLEX'> <OPTION NAME='collating_sequence_dv' VALUE='TERAD10001:N'/> </SERVER> </OPTGUIDELINES> */

    ここで、 TERAD10001 は、表 testteraの CID です。

    例 5:リモート・データ・ソースがData Virtualization から削除されたことを示すメッセージが表示されるが、ビューを作成したりリモート・テーブルにアクセスしようとすると、既存のテーブルは保持される。
    Failed to get join result.:
    Unexpected error code "GDB_ERROR" received from data source "DV-FMP". Associated text and tokens are "Query failed at some sources. Check remote warnings".. SQLCODE=-1822, SQLSTATE=560BD, DRIVER=4.32.28