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

Откуда:
Сообщений: 23
Здравствуйте

На рабочем месте стоит Oracle XE
На сервере IBM DB2

Нужно в сеансе Oracle
вставить данные из таблицы DB2 в таблицу Oracle.

Не могу настроить Oracle.

Делаю по аналогии

Помогите, плиз
27 дек 10, 22:30    [10008006]     Ответить | Цитировать Сообщить модератору
 Re: DBLink в Oracle к DB2  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7128
NEFed
Здравствуйте

На рабочем месте стоит Oracle XE
На сервере IBM DB2

Нужно в сеансе Oracle
вставить данные из таблицы DB2 в таблицу Oracle.

Не могу настроить Oracle.

Делаю по аналогии

Помогите, плиз


Встретил в лесу в лесу волк Красную шапочку, и умер...
Это сказка без подробностей.

Мессир, дьявол кроется в деталях, телепаты знакомые с Oracle встречаются крайне редко.

Попробуйте ответить на следующие вопросы:
1) Какая ОС
2) Сколько продуктов Oracle у Вас установлено на рабочем месте и в каких директориях
(У каждой своя TNS_ADMIN) - директория для файлов конфигурации TNS
3) Файлы конфигурации: listener.ora tnsnames.ora hsinit, команда создания DBLINK (пароли, IP стыдливо прикрыть)
4) Что показывает команда lsnrctl status
5) Проходит ли тест ODBC DSN, и точно ли он определен как system wide DSN
6) команда
select count(*)  from all_tables@DB2LINK;
что возвращает?

Короче, опишите что Вы делали, а мы попытаемся найти ошибку.

p.s. Для оформления файлов конфигурации, команд, используйте теги
28 дек 10, 02:52    [10008523]     Ответить | Цитировать Сообщить модератору
 Re: DBLink в Oracle к DB2  [new]
NEFed
Member

Откуда:
Сообщений: 23
Vadim Lejnin,

1) Какая ОС
На рабочем месте - WinXP Prof, на сервере (mainframe IBM) z/os.

2) Сколько продуктов Oracle у Вас установлено на рабочем месте и в каких директориях
Oracle XE Server: D:\oraclexe\app\oracle\product\10.2.0\server
JDeveloper (не требует установки): D:\JDeveloper

3) Файлы конфигурации: listener.ora tnsnames.ora hsinit, команда создания DBLINK (пароли, IP стыдливо прикрыть)

listener.ora:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = D:\oraclexe\app\oracle\product\10.2.0\server)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = D:\oraclexe\app\oracle\product\10.2.0\server)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = DB2Name)
      (ORACLE_HOME = D:\oraclexe\app\oracle\product\10.2.0\server)
      (PROGRAM = hsodbc)
    )
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
      (ADDRESS = (PROTOCOL = TCP)(HOST = HostLocal)(PORT = 1521))
    )
  )
LISTENER =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = HostServer)(PORT = 5036))
  )

DEFAULT_SERVICE_LISTENER = (XE)

tnsnames.ora:
XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = HostLocal)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

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

ORACLR_CONNECTION_DATA = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) 
    ) 
    (CONNECT_DATA = 
      (SID = CLRExtProc) 
      (PRESENTATION = RO) 
    ) 
  ) 

DB2Name =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = HostServer)(PORT = 5036))
    )
    (CONNECT_DATA =
      (SID = DB2Name)
    )
    (HS = OK)
  )

initDB2Name.ora:
# 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 = DB2Name
HS_FDS_TRACE_LEVEL = OFF


#
# Environment variables required for the non-Oracle system
#
#set <envvar>=<value>

Создание DBLink:
create public database link DB2Name connect to DB2Log by "DB2Pas" using 'DB2Name';

4) Что показывает команда lsnrctl status
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 30-ДЕК-2010 16:48:06

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

Connecting to (ADDRESS=(PROTOCOL=TCP)(HOST=HostServer)(PORT=5036))
TNS-12569: TNS:packet checksum failure

5) Проходит ли тест ODBC DSN, и точно ли он определен как system wide DSN
Тест проходит.
Специалист сказал: system wide DSN.
В JDeveloper нормальное соединение с DB2.

6) команда
select count(*) from all_tables@DB2LINK;
что возвращает?
ORA-28545: error diagnosed by Net8 when connecting to an agent Unable to retrieve text of NETWORK/NCR message 12569 ORA-02063: preceding 2 lines from DB2Name
30 дек 10, 21:56    [10024263]     Ответить | Цитировать Сообщить модератору
 Re: DBLink в Oracle к DB2  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7128
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
      (ADDRESS = (PROTOCOL = TCP)(HOST = HostLocal)(PORT = 1521))
    )
  )
LISTENER =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = HostServer)(PORT = 5036))
  )

Убираете помеченную часть, у Вас уже есть секция для сервера TNS
с именем LISTENER. (Имя по умолчанию)
Вариант с поднятием сервера TNS с другим именем не рассматриваем, бо
Вы пока не разобрались со стандартной установкой

DB2Name =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = HostServer)(PORT = 5036))
    )
    (CONNECT_DATA =
      (SID = DB2Name)
    )
    (HS = OK)
  )

Меняете PORT=1521 ( так как у Вас установлен в listener.ora )
перезагрузите службу Listener, и повторите тесты:
lsnrctl status
tnsping DB2Name 10
sqlplus user/password
SQL> select count(*) from all_tables@DB2LINK;
30 дек 10, 23:19    [10024380]     Ответить | Цитировать Сообщить модератору
 Re: DBLink в Oracle к DB2  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7128
Вот еще замечание, сразу не заметил:
(ADDRESS = (PROTOCOL = TCP)(HOST = HostLocal)(PORT = 1521))
Заменить HostLocal на HostServer
30 дек 10, 23:27    [10024398]     Ответить | Цитировать Сообщить модератору
 Re: DBLink в Oracle к DB2  [new]
NEFed
Member

Откуда:
Сообщений: 23
Vadim Lejnin,

Спасибо за ответ. Наконец добрался до работы...

Вот, что я сделал.
Возможно не совсем правильно понял то, что нужно...

listener.ora:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = D:\oraclexe\app\oracle\product\10.2.0\server)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = D:\oraclexe\app\oracle\product\10.2.0\server)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = DB2Name)
      (ORACLE_HOME = D:\oraclexe\app\oracle\product\10.2.0\server)
      (PROGRAM = hsodbc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
      (ADDRESS = (PROTOCOL = TCP)(HOST = HostLocal)(PORT = 1521))
    )
  )

DEFAULT_SERVICE_LISTENER = (XE)

tnsnames.ora:

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = HostLocal)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

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

ORACLR_CONNECTION_DATA = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) 
    ) 
    (CONNECT_DATA = 
      (SID = CLRExtProc) 
      (PRESENTATION = RO) 
    ) 
  ) 

DB2Name =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = HostLocal)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = DB2Name)
    )
    (HS = OK)
  )

D:\>lsnrctl reload

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 11-ЯНВ-2011 15:30
:28

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
The command completed successfully

D:\>lsnrctl status

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 11-ЯНВ-2011 15:30
:36

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
Start Date 11-ЯНВ-2011 09:35:15
Uptime 0 days 5 hr. 55 min. 24 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Default Service XE
Listener Parameter File D:\oraclexe\app\oracle\product\10.2.0\server\network\a
dmin\listener.ora
Listener Log File D:\oraclexe\app\oracle\product\10.2.0\server\network\l
og\listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC_FOR_XEipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=HostLocal)(PORT=1521
)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=8080))(Presentation=
HTTP)(Session=RAW))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "DB2Name" has 1 instance(s).
Instance "DB2Name", status UNKNOWN, 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 "XEXDB" has 1 instance(s).
Instance "xe", status READY, has 1 handler(s) for this service...
Service "XE_XPT" has 1 instance(s).
Instance "xe", status READY, has 1 handler(s) for this service...
Service "xe" has 1 instance(s).
Instance "xe", status READY, has 1 handler(s) for this service...
The command completed successfully

D:\>tnsping DB2Name 10

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 11-ЯНВ-2
011 15:30:49

Copyright (c) 1997, 2005, Oracle. All rights reserved.

Used parameter files:
D:\oraclexe\app\oracle\product\10.2.0\server\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = HostLocal)(PORT = 1521))) (CONNECT_DATA = (SID = DB2Name))
(HS = OK))
OK (40 msec)
OK (10 msec)
OK (20 msec)
OK (10 msec)
OK (20 msec)
OK (10 msec)
OK (20 msec)
OK (20 msec)
OK (10 msec)
OK (20 msec)

select count(*) from all_tables@DB2Name

ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[Generic Connectivity Using ODBC][Microsoft][Диспетчер драйверов ODBC]
Источник данных не найден и не указан драйвер,
используемый по умолчанию (SQL State: IM002; SQL Code: 0)
ORA-02063: preceding 2 lines from DB2Name
12 янв 11, 22:40    [10062752]     Ответить | Цитировать Сообщить модератору
 Re: DBLink в Oracle к DB2  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7128
У Вас написано использовать ODBC DSN: DB2Name
initDB2Name.ora

#
# HS init parameters
#
HS_FDS_CONNECT_INFO = DB2Name
HS_FDS_TRACE_LEVEL = OFF


Но hsodbc при попытке прочитать данные из данного DSN получает ошибку:

Ошибка hsodbc
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[Generic Connectivity Using ODBC][Microsoft][Диспетчер драйверов ODBC]
Источник данных не найден и не указан драйвер,
используемый по умолчанию
(SQL State: IM002; SQL Code: 0)
ORA-02063: preceding 2 lines from DB2Name


Причины могут быть следующие:
  • Нет такого имени... то есть у Вас не сконфигурирован DSN DB2Name
  • Имя есть, но определено только для того пользователя под которым Вы работаете
    (например Administrator), в то время как oracle listener и oracle работают
    под windows учётной записью SYSTEM, не путать с учётной записью oracle

    Вот отрывок из документа создания DSN
    Для вашего случая Node1 и Node2 - Это один и тот же сервер
    Настройка Oracle HS Agent
    Архитектура Oracle HS agent

    Путь по которому oracle обращается к удаленной базе

    Узел #1 Oracle RDBMS
    Oracle RDBMS -> DBLink -> Oracle Client -> HS TNS Запись ->


    Узел #2 Oracle HS Agent
    -> TNS Listener -> HS Listener Запись -> HS agent -> FDC_CONNECT_INFO запись -> OtherDb Client ->


    Узел #3 OtherDB
    -> OtherDB

    ...
    Настройка ODBC DSN
    Панель создания:
    запустите ODBC Администратор:
    Панель управления -> Администрирование -> Источники данных
    Перейдите на вкладку “системный DSN”
    Выбрать пункт меню “Добавить”
    Выбрать драйвер “XXXX”
    Завершить создание пунктом “Готово”
    ...

    ...
  • 12 янв 11, 23:38    [10062885]     Ответить | Цитировать Сообщить модератору
     Re: DBLink в Oracle к DB2  [new]
    NEFed
    Member

    Откуда:
    Сообщений: 23
    Vadim Lejnin,

    Спасибо за ответ!

    •Нет такого имени... то есть у Вас не сконфигурирован DSN DB2Name

    Но почему тогда работает JDeveloper c DSN DB2Name
    Так же работает множество других клиентов (например C++ Builder)

    •Имя есть, но определено только для того пользователя под которым Вы работаете
    (например Administrator), в то время как oracle listener и oracle работают
    под windows учётной записью SYSTEM, не путать с учётной записью oracle

    Я не разбираюсь в этом вопросе, но местный специалист говорит,
    что настроено всё с учетом Вашего замечания

    То, что Вы пишете уже сделано (DSN настроен).
    Возможно я не понял, что Вы имели в виду (если можно подробнее).
    Не знаю, что делать.
    19 янв 11, 22:17    [10100307]     Ответить | Цитировать Сообщить модератору
     Re: DBLink в Oracle к DB2  [new]
    Vadim Lejnin
    Member

    Откуда:
    Сообщений: 7128
    Утро. Вот заметил еще:
    Попробуйте убрать пробелы в строке (проверить сейчас негде, да и лениво):
    HS_FDS_CONNECT_INFO = DB2Name

    HS_FDS_CONNECT_INFO=DB2Name
    20 янв 11, 16:36    [10105130]     Ответить | Цитировать Сообщить модератору
     Re: DBLink в Oracle к DB2  [new]
    NEFed
    Member

    Откуда:
    Сообщений: 23
    Vadim Lejnin
    Утро. Вот заметил еще:
    Попробуйте убрать пробелы в строке (проверить сейчас негде, да и лениво):
    HS_FDS_CONNECT_INFO = DB2Name

    HS_FDS_CONNECT_INFO=DB2Name


    Даже в примере в соответствующей папке стоят пробелы
    20 янв 11, 20:34    [10106562]     Ответить | Цитировать Сообщить модератору
     Re: DBLink в Oracle к DB2  [new]
    Vadim Lejnin
    Member

    Откуда:
    Сообщений: 7128
    Утро...
    Чудес не бывает
    hsodbc получил однозначный ответ драйвера ODBC

    Диспетчер драйверов ODBC
    [Generic Connectivity Using ODBC][Microsoft][Диспетчер драйверов ODBC]
    Источник данных не найден и не указан драйвер,
    используемый по умолчанию (SQL State: IM002; SQL Code: 0)
    


    пусть ТС тогда вывалит screenshot экрана ODBC администратора
    Где будет строчка DB2Name

    И посмотреть журнал соединения, для этого включить
    HS_FDS_TRACE_LEVEL=ON
    Файл журнала будет: %ORACLE_HOME%\hs\log
    20 янв 11, 22:45    [10106934]     Ответить | Цитировать Сообщить модератору
     Re: DBLink в Oracle к DB2  [new]
    NEFed
    Member

    Откуда:
    Сообщений: 23
    Vadim Lejnin,

    lsnrctl reload
    lsnrctl status
    tnsping DB2Name 10
    create public database link DB2Name connect to DB2Log by "DB2Pas" using 'DB2Name';
    select count(*) from TableName@DB2Name;

    Log:
    No longer listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=8080))(Presentation=HTTP)(Session=RAW))
    System parameter file is D:\oraclexe\app\oracle\product\10.2.0\server\network\admin\listener.ora
    Log messages written to D:\oraclexe\app\oracle\product\10.2.0\server\network\log\listener.log
    Trace information written to D:\oraclexe\app\oracle\product\10.2.0\server\network\trace\listener.trc
    Trace level is currently 0
    24-ЯНВ-2011 17:03:12 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=Бутылкин))(COMMAND=reload)(ARGUMENTS=64)(SERVICE=LISTENER)(VERSION=169869568)) * reload * 0
    Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=8080))(Presentation=HTTP)(Session=RAW))
    24-ЯНВ-2011 17:03:12 * service_register * xe * 0
    24-ЯНВ-2011 17:03:19 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=Бутылкин))(COMMAND=status)(ARGUMENTS=64)(SERVICE=LISTENER)(VERSION=169869568)) * status * 0
    24-ЯНВ-2011 17:03:23 * ping * 0
    24-ЯНВ-2011 17:03:23 * ping * 0
    24-ЯНВ-2011 17:03:23 * ping * 0
    24-ЯНВ-2011 17:03:23 * ping * 0
    24-ЯНВ-2011 17:03:23 * ping * 0
    24-ЯНВ-2011 17:03:23 * ping * 0
    24-ЯНВ-2011 17:03:23 * ping * 0
    24-ЯНВ-2011 17:03:23 * ping * 0
    24-ЯНВ-2011 17:03:23 * ping * 0
    24-ЯНВ-2011 17:03:23 * ping * 0
    24-ЯНВ-2011 17:03:34 * http * (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1616)) * handoff * http * 0
    24-ЯНВ-2011 17:03:39 * http * (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1621)) * handoff * http * 0
    24-ЯНВ-2011 17:03:49 * (CONNECT_DATA=(SID=DB2NAME)(CID=(USER=))) * (ADDRESS=(PROTOCOL=tcp)(HOST=111.111.111.111)(PORT=1622)) * establish * DB2NAME * 0
    24-ЯНВ-2011 17:03:50 * http * (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1624)) * handoff * http * 0
    


    К сообщению приложен файл. Размер - 7Kb
    24 янв 11, 21:32    [10123759]     Ответить | Цитировать Сообщить модератору
     Re: DBLink в Oracle к DB2  [new]
    NEFed
    Member

    Откуда:
    Сообщений: 23
    Vadim Lejnin,

    К сообщению приложен файл. Размер - 5Kb
    24 янв 11, 21:34    [10123763]     Ответить | Цитировать Сообщить модератору
     Re: DBLink в Oracle к DB2  [new]
    NEFed
    Member

    Откуда:
    Сообщений: 23
    Vadim Lejnin,

    К сообщению приложен файл. Размер - 6Kb
    24 янв 11, 21:35    [10123770]     Ответить | Цитировать Сообщить модератору
     Re: DBLink в Oracle к DB2  [new]
    Vadim Lejnin
    Member

    Откуда:
    Сообщений: 7128
    да по odbc вроде все нормально (именно с DB2 не работал, не подскажу).

    осталось проанализировать trace от hsodbc
    lejnin
    И посмотреть журнал соединения, для этого включить

    HS_FDS_TRACE_LEVEL=ON
    

    Файл журнала будет: %ORACLE_HOME%\hs\log
    25 янв 11, 03:25    [10124630]     Ответить | Цитировать Сообщить модератору
     Re: DBLink в Oracle к DB2  [new]
    NEFed
    Member

    Откуда:
    Сообщений: 23
    Спасибо за ответ.

    Vadim Lejnin
    да по odbc вроде все нормально (именно с DB2 не работал, не подскажу).

    осталось проанализировать trace от hsodbc
    lejnin
    И посмотреть журнал соединения, для этого включить

    HS_FDS_TRACE_LEVEL=ON
    

    Файл журнала будет: %ORACLE_HOME%\hs\log


    Я это сделал, но log в не появился!
    Сегодня попробую ещё.
    Может быть кто-то работал с DB2?
    25 янв 11, 07:48    [10124739]     Ответить | Цитировать Сообщить модератору
     Re: DBLink в Oracle к DB2  [new]
    Vadim Lejnin
    Member

    Откуда:
    Сообщений: 7128
    В общем то для hsodbc особой разницы нет, что DB2 что SQLServer
    особенности будут по настройке конкретного ODBC драйвера
    По поводу трасировки уточнил:
    Включение hsodbc trace:
    HS_FDS_TRACE_LEVEL = 0                              <= trace levels 0 - 4 или DEBUG
    HS_FDS_TRACE_FILE_NAME = olemsql.trc                <= trace file name
    #
    
    Файл должен появится %ORACLE_HOME%\hs\trace (создайте директорию если ее нет)
    После появления файла, проверьте что в trace файл не попал password и бизнес критические данные

    Можно также включить трасировку на стороне ODBC, Для этого (Я смотрел на сервере Windows2003 бо windows xp сейчас нет под рукой):
  • в ODBCADM перейти на вкладку Трасировка
  • нажать кнопку пуск трасировки (С установкой флажка Трасировка всех идентификационных записей
  • запомнить имя файла
  • нажать кнопку применить

    Советую для начала самому покурить над логами, может и не нужна будет помощь,
    только обязательно отписаться о причинах чтобы помочь тем кто будет после Вас.

    p.s. Будут проблемы, можете найти меня в skype (обычно сижу до 23 по Москве)
    ник такой же, как моя фамилия на форуме.
  • 25 янв 11, 14:48    [10127710]     Ответить | Цитировать Сообщить модератору
     Re: DBLink в Oracle к DB2  [new]
    Vadim Lejnin
    Member

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

    Да, еще в порядке бреда, Может у Вас имя DSN с пробелом? "DBName "
    проверте
    25 янв 11, 14:51    [10127732]     Ответить | Цитировать Сообщить модератору
     Re: DBLink в Oracle к DB2  [new]
    NEFed
    Member

    Откуда:
    Сообщений: 23
    Vadim Lejnin
    NEFed,

    Да, еще в порядке бреда, Может у Вас имя DSN с пробелом? "DBName "
    проверте


    Да, Вы правы, в порядке бреда ошибся в последней букве строки
    HS_FDS_CONNECT_INFO = DB2Name
    
    Теперь всё работает. Огромное спасибо за помощь Vadim Lejnin.

    Остался один вопрос:

    В DB2 у меня привелегии только на select определённых таблиц.
    Я обязан выполнять две команды после select?
    commit
    alter session close database link DB2Name
    
    Иными словами может случиться так, что я не выполню эти команды, после select
    а тот у кого есть привелегии на изменение таблицы не сможет её изменить?

    Или у меня самого возникнут какие-либо проблемы после многих select?


    Вот образцовые настройки Oracle (добавления выделены)

    listener.ora:
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = D:\oraclexe\app\oracle\product\10.2.0\server)
          (PROGRAM = extproc)
        )
        (SID_DESC =
          (SID_NAME = CLRExtProc)
          (ORACLE_HOME = D:\oraclexe\app\oracle\product\10.2.0\server)
          (PROGRAM = extproc)
        )
        (SID_DESC =
          (SID_NAME = DB2Name)
          (ORACLE_HOME = D:\oraclexe\app\oracle\product\10.2.0\server)
          (PROGRAM = hsodbc)
        )
      )
    
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
          (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        )
      )
    
    DEFAULT_SERVICE_LISTENER = (XE)
    
    tnsnames.ora:
    XE =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = XE)
        )
      )
    
    EXTPROC_CONNECTION_DATA =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
        )
        (CONNECT_DATA =
          (SID = PLSExtProc)
          (PRESENTATION = RO)
        )
      )
    
    ORACLR_CONNECTION_DATA = 
      (DESCRIPTION = 
        (ADDRESS_LIST = 
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) 
        ) 
        (CONNECT_DATA = 
          (SID = CLRExtProc) 
          (PRESENTATION = RO) 
        ) 
      ) 
    
    DB2Name =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SID = DB2Name)
        )
        (HS = OK)
      )
    
    initDB2Name.ora:
    # 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 = DB2Name
    HS_FDS_TRACE_LEVEL = OFF
    
    #
    # Environment variables required for the non-Oracle system
    #
    #set <envvar>=<value>
    
    27 янв 11, 20:15    [10143518]     Ответить | Цитировать Сообщить модератору
    Между сообщениями интервал более 1 года.
     Re: DBLink в Oracle к DB2  [new]
    ne_tst
    Member

    Откуда:
    Сообщений: 1
    Утро. Вот заметил еще:
    Попробуйте убрать пробелы в строке (проверить сейчас негде, да и лениво):
    HS_FDS_CONNECT_INFO = DB2Name
    HS_FDS_CONNECT_INFO=DB2Name

    This is work!!!
    21 авг 16, 13:44    [19569693]     Ответить | Цитировать Сообщить модератору
     Re: DBLink в Oracle к DB2  [new]
    2011
    Guest
    ne_tst
    Утро.
    Причем морозное.
    21 авг 16, 14:59    [19569775]     Ответить | Цитировать Сообщить модератору
    Все форумы / Oracle Ответить