Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / из PostgreSQL в Oracle - проблемы с oracle_fdw / 17 сообщений из 17, страница 1 из 1
17.07.2018, 13:45
    #39675028
michailnm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из PostgreSQL в Oracle - проблемы с oracle_fdw
есть
Oracle server 12.2.0.1.0 win64

PostgreSQL 10.4 win64

Oracle client 18.1.0.0.0 win64

oracle_fdw 2.0.0 pg10 win64

оракл и постгрес установлены на разных машинах


устанавливаем oracle_fdw
Код: sql
1.
CREATE EXTENSION oracle_fdw;


пришлось поставить Oracle client 18.1.0.0.0 win64
иначе были ошибки
PS старый клиент 12.2.0.1-win-x32 не удалял - он используется для другого софта


настраиваем
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE SERVER vm_220_oradb_12
FOREIGN DATA WRAPPER oracle_fdw
OPTIONS (dbserver 'vm-220-oradb-tst:1522/orcl12');
GRANT USAGE ON FOREIGN SERVER vm_220_oradb_12 TO postgres;
CREATE USER MAPPING FOR postgres
SERVER vm_220_oradb_12
OPTIONS (user 'devsys', password 'devsys');




проверяем
Код: sql
1.
SELECT oracle_diag('vm_220_oradb_12');


получаемoracle_fdw 2.0.0, PostgreSQL 10.4, Oracle client 18.1.0.0.0, Oracle server 12.2.0.1.0
типа работает - коннект есть


используем
Код: plsql
1.
2.
3.
4.
5.
6.
CREATE FOREIGN TABLE test1 (
NAME VARCHAR(100) NOT NULL
) SERVER vm_220_oradb_12
--OPTIONS (schema 'DEVSYS', table 'TEST1') ;
OPTIONS (table 'TEST1');
select * from test1 ;


получаем ошибку
получаемforeign-data wrapper handler function 16616 did not return an FdwRoutine struct
Код: sql
1.
2.
CREATE SCHEMA ora_devsys;
IMPORT FOREIGN SCHEMA "DEVSYS" from SERVER vm_220_oradb_12 INTO ora_devsys;


получаем туже ошибку

поиск по этой ошибке ничего не дал

куда копать как исправлять ?

PS причем судя по доступной док-ции oracle_fdw - это проецирование данных из оракла в постгрес,
для использования в запросах/выборках или обновлениях
а меня интересует вызов ф-ций из оракла (свое АПИ) - такой возможности тут не увидел
есть есть такая возможность просьба подсказать/показать как
...
Рейтинг: 0 / 0
17.07.2018, 14:29
    #39675067
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из PostgreSQL в Oracle - проблемы с oracle_fdw
michailnm,

а это вопрос к установке и исходнику вашего стороннего fdw, он не соблюдает требования API для реализации FDW интерфейса: https://github.com/postgres/postgres/blob/REL_10_STABLE/src/backend/foreign/foreign.c#L296
...
Рейтинг: 0 / 0
17.07.2018, 15:03
    #39675100
michailnm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из PostgreSQL в Oracle - проблемы с oracle_fdw
отписался автору oracle_fdw https://github.com/laurenz/oracle_fdw/issues/261

странно что раньше на это не напарывались
наверное проблема в свежем
Oracle client 18.1.0.0.0 win64
но поставить Oracle client 12.2.0.1.0 win64 не могу - они запрещают его ставить если в имени машины есть символ _
:(


PS а что порекомендуете для вызова ф-ций здыйд оракла из постгреса ?
встречал упоминания odbclink https://github.com/manio/odbc-link
но там все давно заброшено
...
Рейтинг: 0 / 0
17.07.2018, 15:26
    #39675112
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из PostgreSQL в Oracle - проблемы с oracle_fdw
michailnmотписался автору oracle_fdw https://github.com/laurenz/oracle_fdw/issues/261

странно что раньше на это не напарывались
наверное проблема в свежем
Oracle client 18.1.0.0.0 win64
но поставить Oracle client 12.2.0.1.0 win64 не могу - они запрещают его ставить если в имени машины есть символ _
:(

А sqlplus от 18-го клиента на сервере с postgres точно может подключиться к Oracle с указанными параметрами? Проверяли?

michailnmPS а что порекомендуете для вызова ф-ций здыйд оракла из постгреса ?
встречал упоминания odbclink https://github.com/manio/odbc-link
но там все давно заброшено
Можно на стороне Oracle создать представления, которые будут вызывать нужные функции.
А на представления создавать внешние таблички.
...
Рейтинг: 0 / 0
17.07.2018, 15:49
    #39675123
michailnm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из PostgreSQL в Oracle - проблемы с oracle_fdw
Павел ЛузановА sqlplus от 18-го клиента на сервере с postgres точно может подключиться к Oracle с указанными параметрами? Проверяли?
нормально коннектится
запросы выполняются

Павел ЛузановМожно на стороне Oracle создать представления, которые будут вызывать нужные функции.
А на представления создавать внешние таблички.
тоже вариант
но будут неудобства с IN параметрами
а с OUT уже наверное совсем плохо
хотя можно будет писать свои обертки чтобы обойти
в общем не очень удобный вариант вытанцовывается

PS в оракле через dbms_hs_passthrough работаю с посгресом
там с параметрами и ф-циями проблем никаких
хотелось бы и в постгресе по аналогии, но все таки слишком разные системы
...
Рейтинг: 0 / 0
17.07.2018, 16:21
    #39675141
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из PostgreSQL в Oracle - проблемы с oracle_fdw
michailnmПавел ЛузановА sqlplus от 18-го клиента на сервере с postgres точно может подключиться к Oracle с указанными параметрами? Проверяли?
нормально коннектится
запросы выполняются

Я бы копал в сторону проблем установки, ибо oracle_fdw точно рабочий продукт.
Если собирали из исходников, то с каким клиентом oracle? Может старый клиент как-нибудь "закрался".

michailnmПавел ЛузановМожно на стороне Oracle создать представления, которые будут вызывать нужные функции.
А на представления создавать внешние таблички.
тоже вариант
но будут неудобства с IN параметрами
а с OUT уже наверное совсем плохо
хотя можно будет писать свои обертки чтобы обойти
в общем не очень удобный вариант вытанцовывается

Параметры можно через global temp table (оформленную как внешняя таблица) передавать.
Но без оберток точно не обойтись.

Про аналог гетерогенных сервисов в постгресе не слышал.
...
Рейтинг: 0 / 0
17.07.2018, 17:09
    #39675181
michailnm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из PostgreSQL в Oracle - проблемы с oracle_fdw
[quot Павел Лузанов]michailnmпропущено...
Я бы копал в сторону проблем установки, ибо oracle_fdw точно рабочий продукт.
Если собирали из исходников, то с каким клиентом oracle? Может старый клиент как-нибудь "закрался".

не собирал, взял готовое https://github.com/laurenz/oracle_fdw/releases/tag/ORACLE_FDW_2_0_0
да надо будет попробовать на чистой машине с 12-м ораклом и 12-м клиентом

[quot Павел Лузанов]michailnmпропущено...
Параметры можно через global temp table (оформленную как внешняя таблица) передавать.
Но без оберток точно не обойтись.

спасибо за идею, если получится разобраться попробую использовать
...
Рейтинг: 0 / 0
17.07.2018, 19:26
    #39675246
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из PostgreSQL в Oracle - проблемы с oracle_fdw
michailnmспасибо за идею, если получится разобраться попробую использовать
Да идей то у нас полно )), так что настраивайте oracle_fdw.

Допустим есть в oracle процедура с in и out параметрами.
Для её вызова делаем временную табличку, где столбцы это параметры процедуры.
На табличку вешаем триггер на вставку для вызова процедуры и заполнения out параметров.
Временная табличка с удалением строк по концу транзакции.
Можно и до конца сеанса оставлять, можно добавить столбец со временем вызова процедуры, но это от потребностей зависит.

Oracle:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create procedure multiply(p1 in number, p2 in number, p3 out number)
is begin p3 := p1 * p2; end;
/
create global temporary table run_multiply (
    p1 number,
    p2 number,
    p3 number
) on commit delete rows;

create trigger run_multiply_trg 
    before insert on run_multiply for each row
    begin multiply(:NEW.p1, :NEW.p2, :NEW.p3); end;
/


Postgres с предварительно настроенным foreign server и user mapping:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
postgres=# import foreign schema "SCOTT" limit to (run_multiply) 
    from server oracle_srv into public;
IMPORT FOREIGN SCHEMA

postgres=# insert into run_multiply (p1,p2) values (2,2) returning *;
 p1 | p2 | p3 
----+----+----
  2 |  2 |  4
(1 row)

INSERT 0 1
postgres=# insert into run_multiply (p1,p2) values (5,5) returning *;
 p1 | p2 | p3 
----+----+----
  5 |  5 | 25
(1 row)

INSERT 0 1
postgres=# select * from run_multiply;
 p1 | p2 | p3 
----+----+----
(0 rows)


Для oracle временная таблица и триггер - лишние объекты и нужны только вызова процедуры по fdw.
Не самый прямой путь, но работает.
...
Рейтинг: 0 / 0
18.07.2018, 14:11
    #39675652
michailnm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из PostgreSQL в Oracle - проблемы с oracle_fdw
удалось таки заставить работать oracle_fdw

для этого на чистую машину с Win2016
уставил
- оригинальный PostgreSQL 10 ( https://www.postgresql.org/download/windows/ , https://www.openscg.com/bigsql/oscg_download?file=packages/PostgreSQL-10.4-1-win64-bigsql.exe&user=${auth.authName})
- oracle 12.2.0.1-win-x64-client

провел теже настройки
и ошибка ушла!

значит проблема была Oracle client 18.1.0.0.0 win64 или в Postgres Pro
...
Рейтинг: 0 / 0
18.07.2018, 15:12
    #39675702
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из PostgreSQL в Oracle - проблемы с oracle_fdw
michailnmзначит проблема была Oracle client 18.1.0.0.0 win64 или в Postgres Pro
А можете для локализации проблемы повторить со сборкой от Postgres Pro?

P.S. Я бы и сам попробовал, но нет нужных виндовых ресурсов.
...
Рейтинг: 0 / 0
18.07.2018, 17:24
    #39675794
michailnm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из PostgreSQL в Oracle - проблемы с oracle_fdw
деинсталлировал original PostgreSQL
установил https://repo.postgrespro.ru/pgpro-10/win/PostgresPro_10.4.1_64bit_Setup.exe
провел все те же настройки
и на самом последнем этапе проверки
Код: sql
1.
select * from test1


получил
foreign-data wrapper handler function 16395 did not return an FdwRoutine struct

Можно сделать вывод - проблема в PostgresPro

оставил описание на сайте postgrespro.ru через форму обратной связи
...
Рейтинг: 0 / 0
18.07.2018, 17:39
    #39675798
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из PostgreSQL в Oracle - проблемы с oracle_fdw
michailnm,

вы бы хоть сразу предупреждали, что ставили какую-то левую сборку вместо postgresql. С laurenz нехорошо получилось.
...
Рейтинг: 0 / 0
18.07.2018, 17:52
    #39675803
michailnm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из PostgreSQL в Oracle - проблемы с oracle_fdw
Melkij вы бы хоть сразу предупреждали, что ставили какую-то левую сборку вместо postgresql. С laurenz нехорошо получилось.
до сих пор считал что PostgresPro весьма стабильна и почти официальна
теперь ученый

laurenz -у написал все что выяснил
...
Рейтинг: 0 / 0
18.07.2018, 18:28
    #39675820
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из PostgreSQL в Oracle - проблемы с oracle_fdw
michailnmдо сих пор считал что PostgresPro весьма стабильна и почти официальна

А здесь дело не в стабильности.
Сборки oracle_fdw собирались с одной версией постгреса, а вы пробовали их использовать на другой (PostgresPro Standard).
Это хоть и форк, но там какие-нибудь имена библиотек поменялись или еще что.

Думаю, что для PostgresPro Standard нужно собирать oracle_fdw из исходников.
...
Рейтинг: 0 / 0
19.07.2018, 23:49
    #39676537
Victor Spirin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из PostgreSQL в Oracle - проблемы с oracle_fdw
Собрал oracle_fdw версию 2.1 с PostgresPro Standard 10.4.1 и Client Shared Library 64-bit - 12.2.0.1.0.
Если есть возможность, проверьте:
http://vvs.ru/pg/oracle_fdw-2.1.0-pg10pro-std-win64.zip
...
Рейтинг: 0 / 0
20.07.2018, 14:14
    #39676901
michailnm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из PostgreSQL в Oracle - проблемы с oracle_fdw
Victor SpirinСобрал oracle_fdw версию 2.1 с PostgresPro Standard 10.4.1 и Client Shared Library 64-bit - 12.2.0.1.0.
Если есть возможность, проверьте:
http://vvs.ru/pg/oracle_fdw-2.1.0-pg10pro-std-win64.zip
проверил на PostgresPro
получившаяся связка
Код: plaintext
oracle_fdw 2.1.0devel, PostgreSQL 10.4, Oracle client 18.1.0.0.0, Oracle server 12.2.0.1.0
работает нормально
...
Рейтинг: 0 / 0
20.07.2018, 20:22
    #39677093
Ivan Panchenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из PostgreSQL в Oracle - проблемы с oracle_fdw
Спасибо.
Скорее всего, мы включим сборку oracle_fdw в следующие релизы Postgres Pro.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / из PostgreSQL в Oracle - проблемы с oracle_fdw / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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