powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ошибка DBlink Oracle-> Postgres
24 сообщений из 24, страница 1 из 1
Ошибка DBlink Oracle-> Postgres
    #40065944
matrosov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день Ув. Форумчане. Уже неделя как я не могу попасть из 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

полный трейс гетвея во вложении
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40065961
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор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]

Знаете что-нибудь о регистрозависимых именах объектов?
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40065964
matrosov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous,
Спасибо что не прошли мимо. Ну насколько я помню в случае с pg все приводиться в нижнему регистру. Или я неправильно понял вопрос?
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40065967
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
matrosov
неправильно понял вопрос?

Идентификаторы в двойных кавычках никуда не приводятся. Для того их и "кавычат".
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40065972
matrosov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40065975
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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

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


но то это не точно :)
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40065978
matrosov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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

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


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

она называется public.test_table как в исходных данных.
сори я сразу не вопроса)
т.е. select * from "public"."test_table" в isql работает
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40066014
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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


ну а так пробовали?
Код: plsql
1.
 select * from "public"."test_table"@GATEWAY_POSTGRES
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40066019
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, стоит вместо пробования разных танцев с бубном таки посмотреть как конкретно
таблицы видны на стороне Оракула и какие конкретно запросы приходят в Постгрес?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40066021
matrosov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
landy,

да конечно пробовал. ошибка выше.
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40066022
matrosov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем все гораздо интереснее.
Эта конфигурация без проблем работает с 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}

Возможно будут какие то идеи?
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40066040
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А на другом конце postgres какой версии?
Вы случаем не пытаетесь драйверами от 8 версии подключаться к 9?
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40066045
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
посмотрите док-т ID 2520893.1 - может поможет?
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40066049
matrosov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
landy
А на другом конце postgres какой версии?
Вы случаем не пытаетесь драйверами от 8 версии подключаться к 9?

Спасибо что то однозначно с версионностью драйверов тот который работает с 9 версией не работает с 12(
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40066050
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно еще попробовать в драйвере odbc
Код: plsql
1.
ConnSettings            = "SET CLIENT_ENCODING to 'UTF8' "



а в init для hs установить
Код: plsql
1.
HS_LANGUAGE = AMERICAN_AMERICA.AL32UTF8
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40066118
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
matrosov,

Попробуйте обертку
Код: plsql
1.
HS_FDS_SHAREABLE_NAME=/usr/lib64/libodbc.so



Это рекомендованная настройка, так как системная обертка правильно обрабатывает не реализованные в драйвере функции
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40066119
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
matrosov,

И еще, при работе с 64 utf, я использую такие настройки (часть у Вас уже установлены)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
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
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40103064
Real_imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Бьюсь над этой же проблемой.
Продвинулся чуть дальше автора.

disql -v database_name

+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+

SQL> select * from rooms;

SQLRowCount returns 191
191 rows fetched

Тут всё в порядке, получаю ожидаемый ответ.
На стороне Postgres вижу запрос от Oracle (Смотрю через обозреватель DBeaver):

select * from rooms;

Теперь пытаюсь сделать запрос через dblink.

[oracle@test Рабочий стол]$ sqlplus

SQL*Plus: Release 11.2.0.1.0 Production on Fri Oct 8 13:59:04 2021

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Enter user-name: **********
Enter password: ***********

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> CREATE DATABASE LINK pg_link CONNECT TO "dblinkuser" IDENTIFIED BY password USING 'database_name';

Database link created.

SQL> select * from "rooms"@pg_link;
select * from "rooms"@pg_link
*
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 PG_LINK


SQL>

В DBeaver вижу, что в сторону Postgresql прилетает запрос:

SELECT * FROM "rooms"

т.е. вроде бы всё, то же самое но нет точки с запятой в конце запроса. В итоге Постгрес прерывает этот запрос.
Может кто подскажет как добавить ";" в конец запроса?
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40103067
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема не в этом запросе, а в вызовах API, которые идут после него. Расширяй
трассировку.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40103071
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Real_imp,

ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
Cause: The cause is explained in the forwarded message.
Action: See the non-Oracle system's documentation of the forwarded message.

Ошибка на стороне Postgres.
Вот её описание:

Код: plaintext
1.
2.
ERROR: current transaction is aborted, commands ignored until end of
transaction block;
No query has been executed with that handle {25P02,NativeErr = 1}

Разбирайтесь, что там не так.
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40103076
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вероятнее всего Оракул хочет закоммитить транзакцию, а Слон отвечает "какая
транзакция, не было тут никакой транзакции".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40103465
Real_imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL*Plus,

Естественно Postgres будет выдавать ошибку. Если на него подавать запрос без закрывающего знака ";"
Проблема не в Postgres.
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40103526
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Real_imp,

Real_imp
Естественно Postgres будет выдавать ошибку. Если на него подавать запрос без закрывающего знака ";"


Oracle SqlDeveloper
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT query
FROM pg_stat_activity
WHERE state = 'active'

query
-------
SELECT query
FROM pg_stat_activity
WHERE state = 'active'



Что я делаю не так?
...
Рейтинг: 0 / 0
Ошибка DBlink Oracle-> Postgres
    #40107677
Real_imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
РЕШЕНИЕ для моего случая.
Важно!
Вводные данные:
На стороне Oracle: OS Oracle 6
На стороне Ubuntu: Postgresql v12

При запросе через dblink на стороне Оракла вижу ошибку:
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 PG_LINK

При этом на стороне Ubuntu в логах postgresql (/var/log/postgresql/.../errors.log) вылавливаю ошибку:
column d.adsrc does not exist

Оказалось, что с версии postgresql v12 и выше таблица с данным столбцом d.adsrc упразднена.
Решением стало понижение версии postgresql до v11
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ошибка DBlink Oracle-> Postgres
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]