A virtualização de uma tabela com muitas colunas ou nomes de colunas longos falha em Data Virtualization

A virtualização de algumas tabelas em Data Virtualization pode falhar com umVirtual table creation failedmensagem enquanto outras tabelas no mesmo esquema são virtualizadas com sucesso.

Sintomas

Algumas tabelas contêm colunas com grandes dados STRING e CLOB. No entanto, virtualizar a tabela reduzindo a largura da coluna ou mesmo escolhendo apenas uma das colunas falha com uma mensagem de erro.

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'

Você também pode ver uma mensagem semelhante à seguinte nos registros.

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.

A interface do Data Virtualization usuário não pode visualizar ou virtualizar mesmo quando a tabela não está em cache.

Causas

O problema ocorre devido ao tamanho da definição da tabela que está sendo virtualizada. Quando Data Virtualization prepara a virtualização, ele aloca um buffer de 32 K para armazenar a definição de dados da tabela virtual. Se essa definição de dados tiver tamanho superior a 32 K devido ao grande número de colunas ou nomes de colunas longos, a definição de dados será truncada e você verá oGDB_ERROR: ENGINE_GET_ROWS_FOR_CONFIG_ERROR: Unable to get rows for config requestmensagem nos registros.

Resolvendo o problema

Para virtualizar uma tabela grande com nomes de colunas grandes e concluir a maioria das consultas na tabela grande, siga estas etapas.

  1. Defina o filtro de esquema remoto para um esquema em que a tabela grande não exista, para que ela não seja armazenada em cache.
  2. Crie a tabela virtual com uma instrução CREATE OR REPLACE NICKNAME DIRECT que inclua a opção SOURCELIST de definição, conforme mostrado no exemplo a seguir. O valor SOURCELIST descreve a localização remota da tabela a ser virtualizada no formato <CID>:<RemoteSchema>. O CID é o ID de conexão da fonte e pode ser encontrado nos detalhes da fonte na página Fontes de dados ou no resultado da select * from dvsys.listrdbc consulta.
    /* 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');
    
    Um exemplo de comando SQL para criar uma tabela virtual grande.
  3. Consultar colunas individuais da grande tabela virtual.

    Um exemplo de instrução SQL para consultar uma tabela grande.

  4. Execute agregações e a maioria das outras consultas.
    Nota:

    Não é possível selecionar todas as colunas de uma tabela grande com uma SELECT * instrução. Você vê uma mensagem de erro semelhante à seguinte mensagem.

    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