Вы здесь

Настройка линков с Oracle на PostgreSQL

Особенности:

репликация между базами данных Oracle и Не-Oracle через Heterogenous Services поддерживается только для шлюзов "Transparent Gateway", к которым не относится Gateway for ODBC. Проблема возникает при попытке применить захваченные  процессом Streams Capture данные к таблице Postgres через Gateway из-за того, что Gateway for ODBC не поддерживает двухфазный commit.

Чтобы обойти проблему можно извлекать захваченные изменения из очереди в отдельном  job-е и применять к таблице Postgres программно. Однако, чтобы можно было извлекать  изменения непосредственно из очереди, процедура захвата должна быть настроена в  синхронном режиме (SYNC_CAPTURE). 


Порядок настройки:

 

1. Настроить доступ к PostgreSQL через ODBC

1.1. установить Postgres
1.2. Установить UnixODBC    скачать тут http://www.unixodbc.org/

1. copy the unixODBC-2.3.4.tar.gz file somewhere you can create files and directories 
2. gunzip unixODBC*.tar.gz 
3. tar xvf unixODBC*.tar

Как только Вы распаковали исходный текст, изучите файлы INSTALL и README.

Сначала определите некоторые переменные среды. Например, пользователь оболочки bash может добавлять следующее в свой файл /etc/profile.


PATH=/usr/bin:/usr/sfw/bin:/usr/ccs/bin:/opt/oracle10/fvb/postgres/postgres/9.0-pgdg/lib/64:/usr/local/bin:/usr/ccs/bin:/usr/sbin:/usr/openwin/bin:/opt/oracle10/product/11.1.0/Db_1/bin

LD_LIBRARY_PATH=/usr/sfw/lib/64:/opt/oracle10/fvb/postgres/postgres/9.0-pgdg/lib/64:/usr/local/lib

Опции configure могут просматриваться, выполняя ./configure --help. Главное, должна быть указана опция выбора конфигурации --with-tdsver. Теперь соберем пакет и установим его:

# ./configure --with-tdsver=4.2 --with-unixodbc=/usr/local
# make
# make install

1.3. Установить Postgres ODBC

Далее PostgreSQL ODBC драйвер настройка. Сам драйвер тут http://www.postgresql.org/ftp/odbc/versions/src/

 
# wget http://ftp.postgresql.org/pub/odbc/versions/src/psqlodbc-09.03.0400.tar.gz

# tar -xzvf psqlodbc-09.03.0400.tar.gz

# ./configure --with-libpq=/usr/local/pgsql --disable-openssl

# make

# sudo make install
 

1.4. зарегистрировать Postgres ODBC в odbc.ini:

/usr/local/etc/odbcinst.ini:


[PostgreSQL]
Description     = PostgreSQL driver
Driver          = /usr/local/lib/psqlodbcw.so
FileUsage       = 1


/usr/local/etc/odbc.ini
[pgtest]
Description         = Test to Postgres
Driver              = PostgreSQL
Trace               = Yes
TraceFile           = sql.log
Database            = pgtest
Servername          = localhost
UserName            = myuser
Password            = myuser
Port                = 5432
Protocol            = 6.4
ReadOnly            = No
RowVersioning       = No
ShowSystemTables    = No
ShowOidColumn       = No
FakeOidIndex        = No
QuotedId            = No
ConnSettings        =


протестировать доступность Postgres через ODBC с помощью isql:

isql pgtest

если тест не проходит, более подробно сообщение об ошибке можно посмотреть с помощью
нативного клиента postgres:
/usr/local/pgsql/bin/psql -h <host name> -d <database name> -U <user>

в случае проблем с кодировкой можно поменять кодировку на стороне клиента с помощью команды

alter user <user> SET client_encoding to LATIN1;

эта кодировка должна быть такой же, как указана при настройке Heterogenous Services
в переменной HS_LANGUAGE

нужно иметь в виду, что есть bug:

DG4ODBC Using MySQL ODBC Driver Corrupts Multibyte Characters [ID 1209943.1]
из-за которого невожможно работать через DG4ODBC со сторонними базами в unicode-кодировке.

 

PostgreSQL_teg: 

Post new comment

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
1 + 0 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.