IIB иногда считывает искаженный текст из Oracle CLOB

#oracle12c #clob #ibm-integration-bus

#oracle12c #clob #ibm-integration-bus

Вопрос:

У меня есть приложение IIBv10 (пакет исправлений № 19), которое считывает поле CLOB из базы данных Oracle (v12) и сохраняет в общей CHARACTER переменной. Я также записываю содержимое переменной в журнал. Обычно это работает отлично, но иногда в некоторых средах я вижу, что текст из переменной отличается от текста базы данных (например, один символ может отличаться). Что может быть причиной этого? Похоже, что он воспроизводится спорадически, как в среде с несколькими экземплярами, так и в среде с одним экземпляром.

Пример кода (MY_TABLE имеет поле CLOB и MY)

 DECLARE MY_CACHE SHARED ROW;
DECLARE mySelectStatement CHARACTER 'SELECT * FROM  MY_TABLE';
SET MY_CACHE.Item[] = PASSTHRU(mySelectStatement);
  

Комментарии:

1. Являются ли «разные» символы многобайтовыми и / или специфичными для набора символов, или вы видите это даже с базовыми (т. Е. ASCII) символами? Часть «некоторые среды» предполагает, что, возможно, просто разные настройки локали / набора символов где-то в стеке, но это зависит от того, что именно изменяется.

2. На самом деле я вижу его с помощью символов ASCII, но текст также содержит многобайтовые (кириллические) символы. For instance, <xs:restriction>blablabla КИРИЛЛИЧЕСКИЕ БУКВЫ</xs:restriction> turns into <xs:restrictton>blablabla КИРИЛЛИЧЕСКИЕ БУКВЫ</xs:restriction> (i turns into t in «restriction»)

3. как вы подключаетесь к oracle DB….is это odbc или jdbc? Возможно, вам придется проверить, используется ли UTF-8 в ваших настройках при подключении.

4. Я использую ODBC (который предоставляется IBM), и, похоже, я использую UTF-8, но я проверю, спасибо.