powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / dblink to PG
25 сообщений из 29, страница 1 из 2
dblink to PG
    #40015406
Bauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

Нужно создать дблинк из под RDBMS 10G to PostgreSQL.
Если я правильно понял, для этого необходим Оракл Гейтвей.
Но, его мы не покупали...

Скажите, можно ли как-то заставить работать такой линк без использования Гейтвея?

Best Regards, Bauer.
...
Рейтинг: 0 / 0
dblink to PG
    #40015428
MazoHist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
dblink to PG
    #40015432
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bauer,

ODBC не требует лицензирования

support.oracle.com: Database Gateway and Generic Connectivity (DG4ODBC) Licensing Considerations (Doc ID 232482.1)...
While the Database Gateway for ODBC (DG4ODBC) does not require an additional license from Oracle, a third party ODBC driver is required, which may require a purchase independent of Oracle.



Other, database-specific gateways (Database Gateway for SQL Server (DG4MSQL), Database Gateway for Sybase(DG4Sybase), Database Gateway for DRDA (DG4DRDA), Database Gateway for Teradata (DG4Tera), etc.) require the purchase of additional licensing.
...


как подключится, вам уже подсказали
...
Рейтинг: 0 / 0
dblink to PG
    #40015433
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bauer,

База на какой ОС?
...
Рейтинг: 0 / 0
dblink to PG
    #40015436
Bauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim Lejnin
Bauer,

База на какой ОС?


Linux 2.6.39-400.215.10.el5uek
...
Рейтинг: 0 / 0
dblink to PG
    #40015437
Bauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim Lejnin
Bauer,

ODBC не требует лицензирования

support.oracle.com: Database Gateway and Generic Connectivity (DG4ODBC) Licensing Considerations (Doc ID 232482.1)...
While the Database Gateway for ODBC (DG4ODBC) does not require an additional license from Oracle, a third party ODBC driver is required, which may require a purchase independent of Oracle.



Other, database-specific gateways (Database Gateway for SQL Server (DG4MSQL), Database Gateway for Sybase(DG4Sybase), Database Gateway for DRDA (DG4DRDA), Database Gateway for Teradata (DG4Tera), etc.) require the purchase of additional licensing.
...


как подключится, вам уже подсказали

RDBMS 10.2.0.4
Не совсем понял...
Что бы у меня появился DG4ODBC, мне ведь всяко надо ставить Oracle gateway?
Или я что-то путаю?
...
Рейтинг: 0 / 0
dblink to PG
    #40015476
Bauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадим,

или имеется ввиду, что можно создать этот линк с использованием hsodbc?
...
Рейтинг: 0 / 0
dblink to PG
    #40015546
Bauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
[oracle@testdb ~]$ isql -v detrix
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> SELECT count(*) FROM pg_catalog.pg_user;
+---------------------+
| count               |
+---------------------+
| 2                   |
+---------------------+
SQLRowCount returns 1
1 rows fetched
SQL>



Установил Оракл Гейтвей (/u01/app/oracle/product/11.2.0/db_1/).
Пытаюсь настроить далее...



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
# listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = detrix)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (PROGRAM = dg4odbc)
    )

  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.186.30.55)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )




Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

detrix =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.186.30.55)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = detrix)
    )
       (HS=OK)
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
[oracle@testdb ~]$ lsnrctl status

LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 05-NOV-2020 16:50:04

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.186.30.55)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.4.0 - Production
Start Date                05-NOV-2020 16:41:53
Uptime                    0 days 0 hr. 8 min. 10 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.186.30.55)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Services Summary...
Service "INSISDB" has 1 instance(s).
  Instance "TEST", status READY, has 1 handler(s) for this service...
Service "INSISDB_XPT" has 1 instance(s).
  Instance "TEST", status READY, has 1 handler(s) for this service...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "detrix" has 1 instance(s).
  Instance "detrix", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[oracle@testdb ~]$



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
[oracle@testdb ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Thu Nov 5 16:53:56 2020

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.


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

SQL> create public database link DETRIX_LNK connect to "postgres" identified by "postgres" using 'detrix';

Database link created.

SQL> SELECT count(*) FROM pg_catalog.pg_user@DETRIX_LNK;
SELECT count(*) FROM pg_catalog.pg_user@DETRIX_LNK
                                        *
ERROR at line 1:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
ORA-02063: preceding line from DETRIX_LNK

SQL>




Чет не могу сообразить...
Подскажите, что не так делаю? С тнснэймс что-то не так?
...
Рейтинг: 0 / 0
dblink to PG
    #40015547
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*deleted*
...
Рейтинг: 0 / 0
dblink to PG
    #40015549
Bauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
(SID = detrix)
менял на 
(SERVICE_NAME = detrix)
результат тот же...
...
Рейтинг: 0 / 0
dblink to PG
    #40015586
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bauer,

в $ORACLE_HOME/hs/admin должен быть файл initdetrix.ora
с содержимым типа такого
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
HS_FDS_CONNECT_INFO = detrix
HS_FDS_SHAREABLE_NAME = /usr/pgsql-9.6/lib/psqlodbcw.so
HS_FDS_SQLLEN_INTERPRETATION=64
HS_FDS_TRACE_LEVEL = 0

HS_NLS_NCHAR=UCS2
HS_LANGUAGE = AMERICAN_AMERICA.AL32UTF8

set ODBCINI=/etc/odbc.ini
set ODBCSYSINI=/etc
set LD_LIBRARY_PATH=/usr/pgsql-9.6/lib;/usr/lib64;...
...
Рейтинг: 0 / 0
dblink to PG
    #40015594
Bauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, точно, есть такой...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
# This is a sample agent init file that contains the HS parameters that are
# needed for an ODBC Agent. 

#
# HS init parameters
#
HS_FDS_CONNECT_INFO = detrix
HS_FDS_TRACE_LEVEL = OFF
HS_FDS_SHAREABLE_NAME = /usr/lib64/psqlodbc.so
#
# ODBC specific environment variables
#
set ODBCINI=/etc/odbc.ini


#
# Environment variables required for the non-Oracle system
#
...
Рейтинг: 0 / 0
dblink to PG
    #40015597
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bauer,

и называется initdetrix.ora ?
...
Рейтинг: 0 / 0
dblink to PG
    #40015599
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще пути добавить до библиотек postgres

Код: plsql
1.
2.
3.
4.
5.
6.
    (SID_DESC =
      (SID_NAME = detrix)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (PROGRAM = dg4odbc)
       (ENVS=LD_LIBRARY_PATH=/usr/local/lib:/usr/lib64:/u01/app/oracle/product/11.2.0/db_1)
    )
...
Рейтинг: 0 / 0
dblink to PG
    #40015608
Bauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, файл зовется именно так.

Подправил листинер:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
# listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = detrix)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (PROGRAM = dg4odbc)
       (ENVS=LD_LIBRARY_PATH=/usr/local/lib:/usr/lib64:/u01/app/oracle/product/11.2.0/db_1)
    )

  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.186.30.55)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )



Ошибка так же (

ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
ORA-02063: preceding line from DETRIX_LNK


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 hoaerr:0
Exiting hgolofns at 2020/11/05-19:46:31
Entered hgolofns at 2020/11/05-19:46:31
 libname=/usr/lib64/psqlodbc.so, funcname=SQLGetDescRecW
 peflerr=6521, libname=/usr/lib64/psqlodbc.so, funcname=SQLGetDescRecW
 hoaerr:28500
Exiting hgolofns at 2020/11/05-19:46:31
Failed to load ODBC library symbol: /usr/lib64/psqlodbc.so(SQLGetDescRecW)
Exiting hgolofn, rc=28500 at 2020/11/05-19:46:31
Exiting hgoinit, rc=28500 with error ptr FILE:hgoinit.c LINE:337 FUNCTION:hgoinit() ID:Loading ODBC aray of function ptrs
Entered hgoexit
HS Gateway:  NULL connection context at exit
Exiting hgoexit, rc=0 with error ptr FILE:hgoexit.c LINE:108 FUNCTION:hgoexit() ID:Connection context
...
Рейтинг: 0 / 0
dblink to PG
    #40015669
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bauer, сравни

HS_FDS_SHAREABLE_NAME = /usr/pgsql-9.6/lib/ psqlodbcw.so
и
HS_FDS_SHAREABLE_NAME = /usr/lib64/ psqlodbc.so

зачем тупо копировать пути?
Код: plsql
1.
/usr/local/lib:/usr/lib64:


нужны пути как у тебя в системе
...
Рейтинг: 0 / 0
dblink to PG
    #40015850
Bauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, сорри, дело было поздним вечером, возможно недоглядел...
По сути, линк работает...
Но, на стороне постгреса (9.3) бд под UTF8

На мою ОС, самые свежие дорова, это:
unixODBC-libs-2.2.11-10.el5
unixODBC-2.2.11-10.el5
postgresql-odbc-08.01.0200-3.1

Нет нормального отображения полей таблиц.

Пробовал всякие кодировки, не помогает...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
# This is a sample agent init file that contains the HS parameters that are
# needed for an ODBC Agent. 

#
# HS init parameters
#
HS_FDS_CONNECT_INFO = detrix
HS_FDS_TRACE_LEVEL = 0
HS_FDS_SHAREABLE_NAME = /usr/lib64/psqlodbc.so
#HS_LANGUAGE = ENGLISH_AMERICA.WE8MSWIN1252
#HS_LANGUAGE=american_america.we8mswin1252
#HS_LANGUAGE = AMERICAN_AMERICA.UTF8
HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1
#HS_LANGUAGE = AMERICAN_AMERICA.CL8MSWIN1251
#HS_LANGUAGE = AMERICAN_AMERICA.AL32UTF8
HS_NLS_NCHAR=UCS2
#HS_FDS_SUPPORT_STATISTICS = FALSE
#
# ODBC specific environment variables
#
set ODBCINI=/etc/odbc.ini


#
# Environment variables required for the non-Oracle system
#
...
Рейтинг: 0 / 0
dblink to PG
    #40016042
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
HS_LANGUAGE=AMERICAN_AMERICA.AL32UTF8
#--HS_FDS_TRACE_LEVEL=DEBUG
#--HS_LANGUAGE = AMERICAN_AMERICA.UTF8
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
...
Рейтинг: 0 / 0
dblink to PG
    #40016047
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще
Лучше вместо

Код: plsql
1.
HS_FDS_SHAREABLE_NAME = /usr/pgsql-9.6/lib/psqlodbcw.so



использовать обертку
Код: plsql
1.
HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so



так как, это убережет от ошибок, если не все функции ODBC реализованы в драйвере БД
...
Рейтинг: 0 / 0
dblink to PG
    #40016087
Bauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim Lejnin
Попробуйте:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
HS_LANGUAGE=AMERICAN_AMERICA.AL32UTF8
#--HS_FDS_TRACE_LEVEL=DEBUG
#--HS_LANGUAGE = AMERICAN_AMERICA.UTF8
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



Вадим, спасибо, теперь хоть что-то стало выводить, правда как-то криво пока...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
[oracle@testdb /]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Nov 6 22:18:45 2020

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.


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

SQL> select * from "pg_catalog"."pg_user"@DETRIX_LNK;

u   usesysid u u u u p valuntil           u
- ---------- - - - - - ------------------ -
       16384           00-DECEMBER-00
          10           00-DECEMBER-00

SQL>




При HS_LANGUAGE=AMERICAN_AMERICA.AL32UTF8 - не работает...
Выставил HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1


При HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so работает так же как и при:
HS_FDS_SHAREABLE_NAME = /usr/lib64/psqlodbc.so
...
Рейтинг: 0 / 0
dblink to PG
    #40016111
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> При HS_LANGUAGE=AMERICAN_AMERICA.AL32UTF8 - не работает...
> Выставил HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1

we8iso пойдет толькo если не важен русский
Ставьте тогда уж CL8MSWIN1251, точнее ту кодировку, что и в БД
Код: plsql
1.
select parameter||'='||value as p from NLS_DATABASE_PARAMETERS;



Тут еще вопросы настройки Терминала/Фонтов


> При HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so работает так же как и при:
> HS_FDS_SHAREABLE_NAME = /usr/lib64/psqlodbc.so

убережет от ошибок, если не все функции ODBC реализованы в драйвере БД
Oracle рекомендует использовать libodbc.so
была статья на MOS, искать лень
...
Рейтинг: 0 / 0
dblink to PG
    #40016188
Bauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
SQL> select parameter||'='||value as p from NLS_DATABASE_PARAMETERS;

P
--------------------------------------------------------------------------------
NLS_LANGUAGE=AMERICAN
NLS_TERRITORY=AMERICA
NLS_CURRENCY=$
NLS_ISO_CURRENCY=AMERICA
NLS_NUMERIC_CHARACTERS=.,
NLS_CHARACTERSET=AL32UTF8
NLS_CALENDAR=GREGORIAN
NLS_DATE_FORMAT=DD-MON-RR
NLS_DATE_LANGUAGE=AMERICAN
NLS_SORT=BINARY
NLS_TIME_FORMAT=HH.MI.SSXFF AM

P
--------------------------------------------------------------------------------
NLS_TIMESTAMP_FORMAT=DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT=HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT=DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY=$
NLS_COMP=BINARY
NLS_LENGTH_SEMANTICS=BYTE
NLS_NCHAR_CONV_EXCP=FALSE
NLS_NCHAR_CHARACTERSET=AL16UTF16
NLS_RDBMS_VERSION=10.2.0.4.0

20 rows selected.

SQL>



Попробовал выставить так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
# This is a sample agent init file that contains the HS parameters that are
# needed for an ODBC Agent. 

#
# HS init parameters
#
HS_FDS_CONNECT_INFO = detrix
HS_FDS_TRACE_LEVEL = 1
#HS_FDS_SHAREABLE_NAME = /usr/lib64/psqlodbc.so
HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so
#HS_LANGUAGE = ENGLISH_AMERICA.WE8MSWIN1252
#HS_LANGUAGE=american_america.we8mswin1252
#HS_LANGUAGE = AMERICAN_AMERICA.UTF8 -- not wkd
#HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1
HS_LANGUAGE = AMERICAN_AMERICA.CL8MSWIN1251
#HS_LANGUAGE = AMERICAN_AMERICA.AL32UTF8 -- not wkd
#HS_NLS_NCHAR=UCS2
#HS_FDS_SUPPORT_STATISTICS = FALSE

#HS_LANGUAGE=AMERICAN_AMERICA.AL32UTF8
#--HS_FDS_TRACE_LEVEL=DEBUG
#--HS_LANGUAGE = AMERICAN_AMERICA.UTF8
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

#
# ODBC specific environment variables
#
set ODBCINI=/etc/odbc.ini


#
# Environment variables required for the non-Oracle system
#



Вообще запрос завис...



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
Oracle Corporation --- SATURDAY  NOV 07 2020 15:08:48.167


Heterogeneous Agent Release 
11.2.0.1.0 




Oracle Corporation --- SATURDAY  NOV 07 2020 15:08:48.167

    Version 11.2.0.1.0

HOSGIP for "HS_FDS_TRACE_LEVEL" returned "1"
HOSGIP for "HS_FDS_SHAREABLE_NAME" returned "/usr/lib64/libodbc.so"
HOSGIP for "HS_OPEN_CURSORS" returned "50"
HOSGIP for "HS_FDS_FETCH_ROWS" returned "1"
HOSGIP for "HS_LONG_PIECE_TRANSFER_SIZE" returned "65536"
HOSGIP for "HS_NLS_NUMERIC_CHARACTER" returned ".,"
HOSGIP for "HS_KEEP_REMOTE_COLUMN_SIZE" returned "LOCAL"
HOSGIP for "HS_FDS_DELAYED_OPEN" returned "TRUE"
HOSGIP for "HS_FDS_WORKAROUNDS" returned "0"
HOSGIP for "HS_FDS_MBCS_TO_GRAPHIC" returned "FALSE"
HOSGIP for "HS_FDS_GRAPHIC_TO_MBCS" returned "FALSE"
HOSGIP for "HS_FDS_RECOVERY_ACCOUNT" returned "RECOVER"
HOSGIP for "HS_FDS_TRANSACTION_LOG" returned "HS_TRANSACTION_LOG"
HOSGIP for "HS_FDS_TIMESTAMP_MAPPING" returned "DATE"
HOSGIP for "HS_FDS_DATE_MAPPING" returned "DATE"
HOSGIP for "HS_FDS_CHARACTER_SEMANTICS" returned "FALSE"
HOSGIP for "HS_NLS_LENGTH_SEMANTICS" returned "CHAR"
HOSGIP for "HS_FDS_MAP_NCHAR" returned "TRUE"
HOSGIP for "HS_FDS_RESULTSET_SUPPORT" returned "FALSE"
HOSGIP for "HS_FDS_RSET_RETURN_ROWCOUNT" returned "FALSE"
HOSGIP for "HS_FDS_PROC_IS_FUNC" returned "FALSE"
HOSGIP for "HS_FDS_REPORT_REAL_AS_DOUBLE" returned "FALSE"
 using postgres as default value for "HS_FDS_DEFAULT_OWNER"
HOSGIP for "HS_SQL_HANDLE_STMT_REUSE" returned "FALSE"
...
Рейтинг: 0 / 0
dblink to PG
    #40016300
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bauer,
в odbc.ini в параметрах коннекта к postgres поставьте

Код: plsql
1.
2.
...
ConnSettings = "SET CLIENT_ENCODING to 'UTF8'"



в гетерогенном сервисе

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
HS_FDS_CONNECT_INFO = <hs name>
HS_FDS_SHAREABLE_NAME = /usr/pgsql-9.6/lib/psqlodbcw.so
HS_FDS_SQLLEN_INTERPRETATION=64
HS_FDS_TRACE_LEVEL = 0

HS_NLS_NCHAR=UCS2
HS_LANGUAGE = AMERICAN_AMERICA.AL32UTF8

set ODBCINI=/etc/odbc.ini
set ODBCSYSINI=/etc
set LD_LIBRARY_PATH=/usr/pgsql-9.6/lib;/usr/lib64;/u01/app/oracle/product/11.2.0/xe



Насколько я помню - psqlodbc w .so - это поддержка wide символов, т е в нашем случае кириллицы(но могу путать)
Т е вы явно говорите postgres, чтобы клиенту отдавал в UTF-8, ну а у oracle соответственно выставляете тоже UTF8
...
Рейтинг: 0 / 0
dblink to PG
    #40016736
Bauer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, не помогает, ошибка та же (
Благодарю за помощь.
Буду искать решение дальше...
...
Рейтинг: 0 / 0
dblink to PG
    #40016758
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bauer,

odbcinst.ini
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
 [PostgreSQL]
 Description             = ODBC for PostgreSQL
 Driver          = /usr/lib/psqlodbc.so
 Setup           = /usr/lib/libodbcpsqlS.so
 Driver64                = /usr/lib64/psqlodbc.so
 Setup64         = /usr/lib64/libodbcpsqlS.so
 FileUsage               = 1
 



odbc.ini
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 [PORTAL]
 Description = PostgreSQL connection to PORTAL
 Driver = PostgreSQL96
 Database = portal
 Servername = 10.x.x.x
 Port = 5432
 Username = xxxxxx
 Password = xxxxxx
 Protocol = 9.6 
 #UID = portal
 #PWD = portal
 ReadOnly = No
 RowVersioning = No
 ShowSystemTables = No
 ConnSettings = "SET CLIENT_ENCODING to 'UTF8'"
 



hs service -initportal.ora
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 HS_FDS_CONNECT_INFO = portal
 HS_FDS_SHAREABLE_NAME = /usr/pgsql-9.6/lib/psqlodbcw.so
 HS_FDS_SQLLEN_INTERPRETATION=64
 HS_FDS_TRACE_LEVEL = 0 
  
 HS_NLS_NCHAR=UCS2
 HS_LANGUAGE = AMERICAN_AMERICA.AL32UTF8
                                                                                                                                                                             
 set ODBCINI=/etc/odbc.ini
 #set ODBCINSTINI=/etc
 set ODBCSYSINI=/etc
 set LD_LIBRARY_PATH=/usr/pgsql-9.6/lib;/usr/lib64;/u01/app/oracle/product/11.2.0/xe
 



установлен Oracle XE 11
listener.ora
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
 ...
 (SID_DESC=
       (SID_NAME=portal)
       (ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe)
        (PROGRAM=dg4odbc)
         (ENVS=LD_LIBRARY_PATH=/usr/pgsql-9.6/lib:/usr/lib64:/u01/app/oracle/product/11.2.0/xe/lib)
    )
  
 


tnsnames.ora

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 ...
 PORTAL =
   (DESCRIPTION =
    (ADDRESS_LIST=
     (ADDRESS = (PROTOCOL = TCP)(HOST = 10.x.x.x)(PORT = 1521))
    )
    (CONNECT_DATA =
      ( SID = portal )
    )
    ( HS=OK )
  )
  
 



на хосте с Oracle XE

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 tnsping portal
  
 TNS Ping Utility for Linux: Version 11.2.0.2.0 - Production on 10-NOV-2020 10:24:38
  
 Copyright (c) 1997, 2011, Oracle.  All rights reserved.
  
 Used parameter files:
  
  
 Used TNSNAMES adapter to resolve the alias
 Attempting to contact (DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 10.x.x.x)(PORT = 1521))) (CONNECT_DATA = ( SID = portal)) ( HS=OK))
 OK (20 msec)
 


в БД postgres создаем таблицу

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 portal=# create table tst (a_id int, a_name varchar(30));
 CREATE TABLE
 portal=# insert into tst values(1,'русский текст');
 INSERT 0 1
 portal=# select * from tst;
  a_id |    a_name
 ------+---------------
     1 | русский текст
 (1 row)
  
 



на хосте Oracle XE создаем тестовый db-link и проверяем
проверяем и выставляем NLS_LANG

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 $ export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
 $ sqlplus / as sysdba
 SQL>create public database link tst1 connect to "username" identified by "password" using 'PORTAL';
 SQL> desc "tst"@tst1;
  Name  Null?    Type
  ----------------------------------------- -------- ----------------------------
  a_id    NUMBER(10)
  a_name    NVARCHAR2(30)
  
 SQL> select * from "tst"@tst1;
  
       a_id
 ----------
 a_name
 --------------------------------------------------------------------------------
  1
 русский текст
  
 SQL>·



идем на хост с Oracle 10 (в моем случае это HP-UX)
добавляем в tnsnames.ora·

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
 ...
 PORTAL =
   (DESCRIPTION =
     (ADDRESS_LIST=
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.x.x.x)(PORT = 1521))
     )
     (CONNECT_DATA =
       ( SID = portal )
     )
     ( HS=OK )
   )
 и проверяем
 $ tnsping portal
  
 TNS Ping Utility for HPUX: Version 10.2.0.4.0 - Production on 10-NOV-2020 11:13:29
  
 Copyright (c) 1997,  2007, Oracle.  All rights reserved.
  
 Used parameter files:
 /d14/Oracle/10.2.0I/network/admin/VMZProd_oadb/sqlnet_ifile.ora
  
  
 Used TNSNAMES adapter to resolve the alias
 Attempting to contact (DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 10.x.x.x)(PORT = 1521))) (CONNECT_DATA = ( SID = portal)) ( HS=OK))
 OK (10 msec)
 
 $ sqlplus / as sysdba
  
 SQL*Plus: Release 10.2.0.4.0 - Production on Tue Nov 10 11:14:25 2020
  
 Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.
  
Connected to:
 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
 With the Partitioning, OLAP, Data Mining and Real Application Testing options
  
 SQL> select * from "tst"@tst1;
  
       a_id a_name
 ---------- ------------------------------------------------------------
          1 &#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533; &#65533;&#65533;&#65533;&#65533;&#65533;
  
 SQL> Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
 With the Partitioning, OLAP, Data Mining and Real Application Testing options
 $ set |grep NLS
 NLS_DATE_FORMAT=DD-MON-RR
 NLS_LANG=AMERICAN_AMERICA.CL8ISO8859P5
 NLS_NUMERIC_CHARACTERS=.,
 NLS_SORT=binary
   
 



знаки ? - это настройки терминала
идем куда-нибудь в GUI посовременнее и выполняем
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select * from "tst"@tst1
DBMS_OUTPUT:
 ------------
 

 a_id     a_name        
 -------  ------------- 
 1        русский текст 

 1 record(s) selected [Fetch MetaData: 0ms] [Fetch Data: 1ms] 

 [Executed: 11/10/2020 10:44:29 AM] [Execution: 55ms] 



Единственное, что - если у вас например поля в postgres типа TEXT - oracle 10 не поймет и не покажет. Т е поля в таблицах должны соответствовать типам, понятным Oracle
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / dblink to PG
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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