Die Virtualisierung einer Tabelle mit vielen Spalten oder langen Spaltennamen schlägt fehl in Data Virtualization
Symptome
Einige Tabellen enthalten Spalten mit großen STRING- und CLOB-Daten. Die Virtualisierung der Tabelle durch Verringern der Spaltenbreite oder sogar durch Auswahl nur einer der Spalten schlägt jedoch mit einer Fehlermeldung fehl.
Virtual table creation failed: <Response [500]>
'{"code":500,"message":"Error: CREATE OR REPLACE NICKNAME -- DB2 SQL Error: SQLCODE=-204,
SQLSTATE= , SQLERRMC=CASE, DRIVER=4.31.10"}\n'
Möglicherweise wird in den Protokollen auch eine Meldung angezeigt, die der folgenden Meldung ähnelt.
GDB_ERROR: ENGINE_GET_ROWS_FOR_CONFIG_ERROR: Unable to get rows for config request: TABLE_STATISTICS,
cause: java.sql.SQLSyntaxErrorException: Table/View 'CASE' does not exist.
Die Data Virtualization Benutzeroberfläche kann keine Vorschau oder Virtualisierung anzeigen, selbst wenn die Tabelle nicht zwischengespeichert ist.
Ursachen
Das Problem tritt aufgrund der Größe der virtualisierten Tabellendefinition auf. Bei Data Virtualization der Vorbereitung der Virtualisierung wird ein 32-K-Puffer zugewiesen, um die Datendefinition der virtuellen Tabelle zu speichern. Wenn diese Datendefinition aufgrund vieler Spalten oder langer Spaltennamen größer als 32 K ist, wird die Datendefinition abgeschnitten und Sie sehen die MeldungGDB_ERROR: ENGINE_GET_ROWS_FOR_CONFIG_ERROR: Unable to get rows for config requestMeldung in den Protokollen.
Problemlösung
Um eine große Tabelle mit langen Spaltennamen zu virtualisieren und die meisten Abfragen für diese große Tabelle auszuführen, gehen Sie wie folgt vor.
- Stellen Sie den Remote-Schemafilter auf ein Schema ein, in dem die große Tabelle nicht vorhanden ist, damit sie nicht zwischengespeichert wird.
- Erstellen Sie die virtuelle Tabelle mit einer direkten
CREATE OR REPLACE NICKNAMEAnweisung, die dieSOURCELISTDefinitionsoption enthält, wie im folgenden Beispiel gezeigt. Der Wert SOURCELIST beschreibt den Remote-Speicherort der zu virtualisierenden Tabelle im Format<CID>:<RemoteSchema>. Die CID ist die Verbindungs-ID für die Quelle und kann in den Quellendetails auf der Seite „Datenquellen“ oder im Ergebnis derselect * from dvsys.listrdbcAbfrage gefunden werden./* IBM_DVSYS */ CREATE OR REPLACE NICKNAME "ADMIN"."VERY_LARGE_TABLE" for QPLEX.gaiandb."VERY_LARGE_TABLE" ( VERY_LONG_COLUMN_IDENTIFIER1, VERY_LONG_COLUMN_IDENTIFIER2, VERY_LONG_COLUMN_IDENTIFIER3, ... VERY_LONG_COLUMN_IDENTIFIER999, VERY_LONG_COLUMN_IDENTIFIER1000 ) OPTIONS(SOURCELIST 'DB210000:DRV');
- Abfrage einzelner Spalten der großen virtuellen Tabelle.

- Führen Sie Aggregationen und die meisten anderen Abfragen aus.Hinweis:
Sie können nicht alle Spalten für die große Tabelle mit einer
SELECT *Anweisung auswählen. Es wird eine Fehlermeldung angezeigt, die der folgenden Meldung ähnelt.SQL5105N The statement failed because a Big SQL component encountered an error. Component receiving the error: "DV-FMP". Component returning the error: "Virtualization Connector". Log entry identifier: "GAI-001-NA". Reason: "". SQLSTATE=58040