Интеграция Oracle с PostgreSQL через гетерогенный сервис
NikanCode 2 минуты назад Интеграция Oracle с PostgreSQL через гетерогенный сервис Средний 7 мин 0 Oracle * PostgreSQL * SQL * Базы данных * Кейс На Хабре не так много информации об интеграции между различными СУБД, и я...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
Значимый прорыв формирует отрасль ИИ: NikanCode 2 минуты назад Интеграция Oracle с PostgreSQL через гетерогенный сервис Средний 7 мин 0 Oracle * PostgreSQL * SQL * Базы данных * Кейс На Хабре не так много информации об интеграции между различными СУБД, и я решил поделиться своим опытом построения информационной системы на базе Oracle, которая взаимодействует с PostgreSQL (PG). Статья состоит их двух частей: в первой описана конфигурация СУБД, а во второй описан кейс по получению и обработке данных. Надеюсь, этот материал сэкономит Вам время при решении подобных задач.
Постановка задачиЕсть два сервиса, которые взаимодействуют с одной базой на PostgreSQL, они пишут в нее информацию в режиме реального времени. И есть отдельная подсистема, реализованная в хранимых процедурах Oracle, которая должна забирать и обрабатывать эти данные. С точки зрения архитектуры целесообразно выполнить интеграцию на уровне СУБД.
Технические детали
Для этого можно использовать Heterogeneous service (HS) - это компонент сервера Oracle, который позволяет получать доступ к данным, хранящимся в системах, отличных от Oracle . Начиная с версии 11g, в состав Oracle включен инструмент DG4ODBC (Database Gateway for ODBC), который выступает посредником: принимает запрос от приложения в Oracle, через HS и ODBC-драйвер передаёт его в целевую СУБД. Схема работы гетерогенного сервисаТестовый стендСервер с Oracle: ОС Oracle Linux Server 6.
10 (RHEL);Oracle EE 12. 2;кодировка базы NLS_CHARACTERSET = CL8ISO8859P5;unixODBC 2. 14;Сервер с PG: ОС Alt-Linux Server 10.
2 (Mandrake); PostgresPro Standard 17. 4; кодировка базы ENCODING = UTF8, DATCOLLATE = en_US. UTF-8, datctype = en_US.
Отраслевые последствия
UTF-8 Настройки на стороне сервера OracleНастройка odbc-драйвераПервым делом обновляем версию odbc-драйвера Linux:yum install unixODBC unixODBC-devel freetds –yНа мою не самую свежую ОС на тот момент нашелся драйвер версии 12:rpm –iv postgresql12-libs-12. rpm rpm –iv postgresql12-odbc-12. rpmНа версиях старее 12 при любых запросах в удаленную БД возникает ошибка, которую можно увидеть в логе /var/lib/pgpro/std-17/data/log:UTC > ERROR: column c.
relhasoids does not exist at character 245Это прямой маркер проблемы совместимости. В PostgreSQL 12 изменили системные каталоги (в частности, убрали столбец relhasoids из pg_catalog. Старые версии ODBC-драйверов содержат жёстко закодированные запросы, которые пытаются этот столбец найти.
Когда драйвер сталкивается с его отсутствием, он генерирует ошибку. Рекомендуется ставить самую свежую версию драйверов, доступную для вашей ОС. Далее настраиваем конфиг /etc/odbcinst.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.






