Как отладить драйвер ODBC в среде гетерогенных служб Oracle? - PullRequest
0 голосов
/ 30 мая 2018

Гетерогенные службы Oracle - это функция базы данных Oracle, которая позволяет базе данных взаимодействовать с базами данных, отличными от Oracle, через их драйверы ODBC.

Отладить драйвер ODBC с помощью клиентских инструментов ODBC, таких как isql, довольно просто..

С помощью isql - я могу ввести информацию о драйвере в начальной командной строке.isql и аналогичные инструменты принимают имя ODBC DSN и напрямую загружают драйвер.Таким образом, когда я набираю: info sharedlibrary в командной строке GDB, я вижу загруженную разделяемую библиотеку ODBC, в которой я заинтересован в отладке.

Как я могу сделать то же самое, используя sqlplus или другой клиентский инструмент Oracle?Однако в sqlplus невозможно сказать, когда загружается драйвер.

Как отладить драйвер ODBC («динамически загружаемая библиотека») с помощью гетерогенных служб Oracle?

Среда: Linux Debugger:Гетерогенные службы GDB Oracle: https://docs.oracle.com/cd/A81042_01/DOC/server.816/a76960/hs_conce.htm

1 Ответ

0 голосов
/ 09 октября 2018

sqlplus (CLI) или sqldeveloper (GUI) являются чисто интерфейсами для выполнения запросов к базе данных Oracle.В контексте Oracle HS сами инструменты не загружают драйвер ODBC.Это база данных Oracle, которая загружает драйвер ODBC косвенно через dg4odbc.Мне потребовалось некоторое время, чтобы обнаружить этот факт.Для отладки с помощью gdb выполните следующие действия:

# Connect to Oracle DB:
sqlplus system/oracle@0.0.0.0:1521/orcl12c

# After connecting, dg4odbc is still not activated
# Run a single query for Oracle DB to load the ODBC driver
# After, initial query dg4odbc is active
[oracle@oracle_vm ~]$ ps aux|grep dg4odbc
oracle   17905 17.5  1.0 497392 63244 ? Ssl  13:56   0:01 dg4odbcNORTHWIND_MYSQL (LOCAL=NO)

# Use the PID from above process to debug in GDB
[oracle@oracle_vm ~]$ gdb dg4odbc 17905

# You can now debug the ODBC driver which is loaded by dg4odbc
# You can check by running "info sharedlibrary" at the GDB prompt
# Happy Debugging :)
...