Resultados de consulta incorretos para fontes de dados remotas " Db2 na Data Virtualization

Se você executar consultas que comparam tipos de dados de sequência com bancos de dados remotos do Db2, que usam o tipo de conexão do Db2 que não está no modo de compatibilidade VARCHAR2, essas consultas poderão retornar resultados incorretos.

Sintomas

É possível executar algumas consultas que comparam tipos de dados de sequência (CHAR ou VARCHAR) com bancos de dados remotos do Db2 que não estão no modo de compatibilidade VARCHAR2 e que usam o tipo de conexão do Db2. Você obtém resultados que são diferentes do que você obtém em um banco de dados local porque as consultas são enviadas e seguem as regras de comparação remotas do Db2 .

Por exemplo,
select col_char from testable1 union select col_varchar from testable2;
select col_char from testable1 except select col_varchar from testable2;
select col_char from testable1 intersect select col_varchar from testable2;

É possível verificar a configuração do banco de dados remoto Db2 executando o comando db2 get db cfg. No exemplo a seguir, o banco de dados não está no modo de compatibilidade VARCHAR2.

$ db2 get db cfg for testdb |grep "Varchar2 compatibility"
Varchar2 compatibility                                  = OFF

Resolvendo o problema

Como uma solução alternativa para este problema, modifique a opção de sequência de intercalação de servidor.
  1. Execute a instrução a seguir para identificar o ID de conexão interno (CID) para a sua origem de dados.
    select * from DVSYS.LISTRDBC;

    Esta consulta lista todas as conexões no cluster. Localize a linha na saída para uma ou mais conexões que você deseja mudar.

  2. Execute o comando a seguir para modificar o parâmetro COLLATING_SEQUENCE dessa conexão para 'I' para cada conexão que deseja mudar.
    ALTER SERVER QPLEX OPTIONS (add <CID>@collating_sequence 'I');
    Por exemplo,
    ALTER SERVER QPLEX OPTIONS (add DB210000@collating_sequence 'I');