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 .
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
- 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.
- 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');