Admin

Datatype Conversion Error ORA-28528 Using Dg4odbc

Qhtlr 2020. 9. 3. 15:47

Oracle 에서 DB2로의 DBlink 연결을 위해서 Gateway for ODBC 를 이용하여 구성하였는데.

 

테스트 하다보니. 문제점이 발견하여 찾아서 해결한 내용이다.

 

DB2 에서

 

insert into test values(1) 후 dblink로 조회   -- 정상적으로 oracle 에서 조회됨

insert into test values(2) 후 dblink로 조회   -- ORA-28528 발생

 

또, 문자 Type 입력의 경우

'테스트'

'가나다'

'TEST' 

를 순서대로 입력후 조회해보면 '테스트', '가나다' 만 보여짐. count(*) 해보면 3건을 출력됨

 

initDG4ODBC.ora 에

HS_FDS_SQLLEN_INTERPRETATION=32 파라미터 추가후 위의 문제 모두 해결됨

 

 

Datatype Conversion Error ORA-28528 Using Dg4odbc With DB2, Informix, MySQL or SQL*Server 64-bit ODBC Drivers on Unix Platforms (Doc ID 554409.1)

 

Cause

The DB2, Informix, MySQL or SQL*Server 64-bit ODBC driver being used from whichever vendor handle the SQLLEN value as a 32-bit value instead of a 64-bit value.

In the Microsoft 64-bit ODBC documentation SQLLEN is defined as INT64 with 8 bytes and the
DG4ODBC gateway is using the same definition as Microsoft.
Examining the data returned on a SQLFetch() shows that the drivers are returning SQLLEN as 4 bytes.

 

Solution

 

C. For 11.2

In 11.2 there is a new parameter which allows 64bit drivers to follow the 32bit standard so they do not need to be re-compiled - HS_FDS_SQLLEN_INTERPRETATION.

To allow a 64-bit driver to follow the 32-bit standard add the following to init.ora -

HS_FDS_SQLLEN_INTERPRETATION=32

To follow the 64-bit standard add -

HS_FDS_SQLLEN_INTERPRETATION=64