MSSQL -> ORACLE 로 DBLINK 설정하고, 데이터 조회를 하고 있습니다.
SELECT "A", "B" FROM ABC@DBLINK 라고 했을 때,
해당 MSSQL ABC테이블 내 A 컬럼이 NVARCHAR(N), INT, DATETIME 전부 조회가 되는데,
NVARCHAR(MAX) 데이터 타입만 "문자열 데이터의 오른쪽이 잘렸습니다" 라고 나옵니다.
desc SELECT * FROM ABC@DBLINK 해보면 NVARCHAR(MAX)는 NVARCHAR2 로 맵핑됩니다.
구글검색을 통해 여러가지 방안을 살펴봤는데
1. MSSQL 2014 버전에서는 Bug Fix 형태로 업데이트 하면 된다고 하더군요. 현재 서버는 MSSQL 2008 R2 라서 적용이 어렵습니다.
https://support.microsoft.com/ko-kr/help/2996629/fix-string-data-right-truncation-error-when-you-do-bulk-copy-on-dbcs-b
2. NVARCHAR(MAX)는 ORACLE LONG 데이터 타입과 매칭 되는데, 캐릭터셋을 UNICODE 로 변경해야봐라 라고 되어 있어 살펴보니,
NLS_NCHAR_CHARACTERSET = AL16UTF16 이고, 기본 캐릭터셋은 KO16MSWIN949 더군요. UTF-8 이 아니라서 이상이 없어보이는데...
https://stackoverflow.com/questions/28209518/missing-nvarchar-columns-when-reading-sql-server-database-table-from-oracle
3. TO_CLOB, CONVERT 등.. 해봤지만 FAIL...
4. 이것저것 해봤으나.. 실패..
https://community.oracle.com/thread/4067109
실시간 연동이 필요한 자료인데, MSSQL에서 별도로 VIEW 로 가공한 데이터를 가져와야할지 고민이네요.
혹시 관련하여 해결하신분 계시면 고견 부탁드립니다.