Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Ошибка DBlink Oracle-> Postgres  [new]
matrosov
Member

Откуда:
Сообщений: 7
Добрый день Ув. Форумчане. Уже неделя как я не могу попасть из Oracle в Postgres.
Вводные:
установлены 2 пакета:
unixODBC-devel-2.2.14-14.el6.x86_64
postgresql-odbc-08.04.0200-1.el6.x86_64
настроен odbc.ini
[GateWay_Postgres]
Driver = /usr/lib64/psqlodbc.so
Servername = 192.xxx.xxx.xxx
Trace = Yes
TraceFile = /home/oracle/odbc_rt.trc
Username = xxxxxx
Password = xxxxxx
Port = 5432
Database = test_db
ReadOnly = No
RowVersioning = No
ShowSystemTables = No
ShowOidColumn = No
FakeOidIndex = No
ODBC соединение успешно
isql -v GateWay_Postgres
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
select работает.
SQL>
настроен HS
SID_LIST_LISTENER_GW=
(SID_LIST=
(SID_DESC=
(SID_NAME=GateWay_Postgres)
(ORACLE_HOME=/u01/app/oracle/product/gateway_12_2)
(ENV="LD_LIBRARY_PATH=/u01/app/oracle/product/gateway_12_2/hs/lib:/u01/app/oracle/product/gateway_12_2/lib:/u01/app/oracle/product/11.2.0.4/db_1/lib:/usr/lib64")
(PROGRAM=dg4odbc)
)
)
настроен initfile

HS_FDS_CONNECT_INFO = GateWay_Postgres
HS_FDS_TRACE_LEVEL = 255
HS_FDS_SHAREABLE_NAME=/usr/lib64/psqlodbc.so

HS_NLS_NCHAR = UCS2
HS_LANGUAGE = AMERICAN_AMERICA.CL8MSWIN1251
set ODBCINI=/home/oracle/.odbc.ini

Создан линк.
При попытке сделать селект
возвращается ошибка:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
ERROR: current transaction is aborted, commands ignored until end of transaction block;
No query has been executed with that handle {25P02,NativeErr = 1}
ORA-02063: preceding 3 lines from GATEWAY_POSTGRES
в трейсах гетвея:
Column:1(id): dtype:2 (NUMERIC), prc/scl:28/6, nullbl:1, octet:0, sign:1, radix:0
Exiting hgopcda, rc=0 at 2021/04/26-10:03:06
Entered hgopoer at 2021/04/26-10:03:06
hgopoer, line 240: got native error 7 and sqlstate HY000; message follows...
Error while executing the query {HY000,NativeErr = 7}
Exiting hgopoer, rc=0 at 2021/04/26-10:03:06
hgodtab, line 554: calling SQLTables got sqlstate HY000
The hoada for table public.test_table1 follows...
hgodtab, line 1833: Printing hoada @ 0x206ddb0
MAX:1, ACTUAL:1, BRC:1, WHT=6 (TABLE_DESCRIBE)
DTY NULL-OK LEN MAXBUFLEN PR/SC CST IND MOD NAME
3 DECIMAL Y 31 31 28/ 6 0 0 0 id
Exiting hgodtab, rc=0 at 2021/04/26-10:03:06 with error ptr FILE:hgodtab.c LINE:554 ID:Checking for table existence

полный трейс гетвея во вложении

К сообщению приложен файл (trace.txt - 22Kb) cкачать
26 апр 21, 14:03    [22314442]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DBlink Oracle-> Postgres  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19050
автор
SQL text from hgopars, id=1, len=44 ...
00: 53454C45 43542041 312E2269 64222046 [SELECT A1."id" F]
10: 524F4D20 22707562 6C696322 2E227465 [ROM "public"."te]
20: 73745F74 61626C65 22204131 [st_table" A1]

Знаете что-нибудь о регистрозависимых именах объектов?
26 апр 21, 14:50    [22314482]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DBlink Oracle-> Postgres  [new]
matrosov
Member

Откуда:
Сообщений: 7
andrey_anonymous,
Спасибо что не прошли мимо. Ну насколько я помню в случае с pg все приводиться в нижнему регистру. Или я неправильно понял вопрос?
26 апр 21, 14:54    [22314488]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DBlink Oracle-> Postgres  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19050
matrosov
неправильно понял вопрос?

Идентификаторы в двойных кавычках никуда не приводятся. Для того их и "кавычат".
26 апр 21, 14:58    [22314495]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DBlink Oracle-> Postgres  [new]
matrosov
Member

Откуда:
Сообщений: 7
andrey_anonymous
matrosov
неправильно понял вопрос?

Идентификаторы в двойных кавычках никуда не приводятся. Для того их и "кавычат".

попробовал так:
SQL> select * from public.test_table@GATEWAY_POSTGRES.IBOX;
select * from public.test_table@GATEWAY_POSTGRES.IBOX
*
ERROR at line 1:
ORA-00903: invalid table name
и так:

SQL> select "id" from test_table@GATEWAY_POSTGRES.IBOX;
select "id" from test_table@GATEWAY_POSTGRES.IBOX
*
ERROR at line 1:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
ERROR: current transaction is aborted, commands ignored until end of
transaction block;
No query has been executed with that handle {25P02,NativeErr = 1}
ORA-02063: preceding 3 lines from GATEWAY_POSTGRES
26 апр 21, 15:07    [22314503]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DBlink Oracle-> Postgres  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19050
matrosov
andrey_anonymous
пропущено...

Идентификаторы в двойных кавычках никуда не приводятся. Для того их и "кавычат".

попробовал так:
SQL> select * from public.test_table@GATEWAY_POSTGRES.IBOX;
select * from public.test_table@GATEWAY_POSTGRES.IBOX
*
ERROR at line 1:
ORA-00903: invalid table name

Пойдите уже на посгрю и посмотрите, как именно называется табличка.
Скорее всего, Вам поможет
select * from "PUBLIC"."TEST_TABLE"@GATEWAY_POSTGRES.IBOX;

но то это не точно :)
26 апр 21, 15:12    [22314507]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DBlink Oracle-> Postgres  [new]
matrosov
Member

Откуда:
Сообщений: 7
andrey_anonymous
matrosov
пропущено...

попробовал так:
SQL> select * from public.test_table@GATEWAY_POSTGRES.IBOX;
select * from public.test_table@GATEWAY_POSTGRES.IBOX
*
ERROR at line 1:
ORA-00903: invalid table name

Пойдите уже на посгрю и посмотрите, как именно называется табличка.
Скорее всего, Вам поможет
select * from "PUBLIC"."TEST_TABLE"@GATEWAY_POSTGRES.IBOX;

но то это не точно :)

она называется public.test_table как в исходных данных.
сори я сразу не вопроса)
т.е. select * from "public"."test_table" в isql работает

Сообщение было отредактировано: 26 апр 21, 15:12
26 апр 21, 15:16    [22314512]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DBlink Oracle-> Postgres  [new]
landy
Member

Откуда:
Сообщений: 1511
matrosov

попробовал так:
SQL> select * from public.test_table@GATEWAY_POSTGRES.IBOX;
select * from public.test_table@GATEWAY_POSTGRES.IBOX
*
ERROR at line 1:
ORA-00903: invalid table name
и так:

SQL> select "id" from test_table@GATEWAY_POSTGRES.IBOX;
select "id" from test_table@GATEWAY_POSTGRES.IBOX
*
ERROR at line 1:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
ERROR: current transaction is aborted, commands ignored until end of
transaction block;
No query has been executed with that handle {25P02,NativeErr = 1}
ORA-02063: preceding 3 lines from GATEWAY_POSTGRES


ну а так пробовали?
 select * from "public"."test_table"@GATEWAY_POSTGRES
26 апр 21, 16:08    [22314560]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DBlink Oracle-> Postgres  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 53140

Может, стоит вместо пробования разных танцев с бубном таки посмотреть как конкретно
таблицы видны на стороне Оракула и какие конкретно запросы приходят в Постгрес?..

Posted via ActualForum NNTP Server 1.5

26 апр 21, 16:19    [22314567]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DBlink Oracle-> Postgres  [new]
matrosov
Member

Откуда:
Сообщений: 7
landy,

да конечно пробовал. ошибка выше.
26 апр 21, 16:21    [22314569]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DBlink Oracle-> Postgres  [new]
matrosov
Member

Откуда:
Сообщений: 7
Вообщем все гораздо интереснее.
Эта конфигурация без проблем работает с PG версии PostgreSQL 9.6.12 .
с PG версии PostgreSQL 9.6.12 она не работает -
получаю ошибку
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
ERROR: current transaction is aborted, commands ignored until end of transaction block;
No query has been executed with that handle {25P02,NativeErr = 1}

Возможно будут какие то идеи?

Сообщение было отредактировано: 26 апр 21, 16:17
26 апр 21, 16:23    [22314570]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DBlink Oracle-> Postgres  [new]
landy
Member

Откуда:
Сообщений: 1511
А на другом конце postgres какой версии?
Вы случаем не пытаетесь драйверами от 8 версии подключаться к 9?
26 апр 21, 16:38    [22314590]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DBlink Oracle-> Postgres  [new]
landy
Member

Откуда:
Сообщений: 1511
посмотрите док-т ID 2520893.1 - может поможет?
26 апр 21, 16:41    [22314598]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DBlink Oracle-> Postgres  [new]
matrosov
Member

Откуда:
Сообщений: 7
landy
А на другом конце postgres какой версии?
Вы случаем не пытаетесь драйверами от 8 версии подключаться к 9?

Спасибо что то однозначно с версионностью драйверов тот который работает с 9 версией не работает с 12(
26 апр 21, 16:46    [22314603]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DBlink Oracle-> Postgres  [new]
landy
Member

Откуда:
Сообщений: 1511
можно еще попробовать в драйвере odbc
ConnSettings            = "SET CLIENT_ENCODING to 'UTF8' "


а в init для hs установить
HS_LANGUAGE = AMERICAN_AMERICA.AL32UTF8
26 апр 21, 16:46    [22314604]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DBlink Oracle-> Postgres  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7253
matrosov,

Попробуйте обертку
HS_FDS_SHAREABLE_NAME=/usr/lib64/libodbc.so


Это рекомендованная настройка, так как системная обертка правильно обрабатывает не реализованные в драйвере функции
26 апр 21, 21:45    [22314753]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DBlink Oracle-> Postgres  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7253
matrosov,

И еще, при работе с 64 utf, я использую такие настройки (часть у Вас уже установлены)
HS_FDS_SQLLEN_INTERPRETATION=64
HS_FDS_FETCH_ROWS=1
HS_FDS_SUPPORT_STATISTICS = FALSE
HS_KEEP_REMOTE_COLUMN_SIZE = LOCAL
HS_NLS_LENGTH_SEMANTICS = CHAR
HS_NLS_NCHAR = UCS2

set ODBCINI=/etc/odbc.ini
26 апр 21, 21:48    [22314754]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить