Debugging 如何在Oracle异构服务环境中调试ODBC驱动程序?

Debugging 如何在Oracle异构服务环境中调试ODBC驱动程序?,debugging,gdb,shared-libraries,sqlplus,isql,Debugging,Gdb,Shared Libraries,Sqlplus,Isql,Oracle异构服务是Oracle DB的一项功能,它允许数据库通过ODBC驱动程序与非Oracle DB通信 使用ODBC客户端工具(如isql)调试ODBC驱动程序相当简单 使用isql-我可以在初始命令提示符下输入驱动程序信息。isql和类似工具接受ODBC DSN名称并直接加载驱动程序。因此,当我在GDB命令提示符下键入:info sharedlibrary时,我看到加载了我感兴趣的ODBC共享库 如何使用sqlplus或其他Oracle客户端工具实现同样的功能? 但是,对于sqlplu

Oracle异构服务是Oracle DB的一项功能,它允许数据库通过ODBC驱动程序与非Oracle DB通信

使用ODBC客户端工具(如isql)调试ODBC驱动程序相当简单

使用isql-我可以在初始命令提示符下输入驱动程序信息。isql和类似工具接受ODBC DSN名称并直接加载驱动程序。因此,当我在GDB命令提示符下键入:info sharedlibrary时,我看到加载了我感兴趣的ODBC共享库

如何使用sqlplus或其他Oracle客户端工具实现同样的功能? 但是,对于sqlplus,不知道何时加载驱动程序

如何使用Oracle异构服务调试ODBC驱动程序(“动态加载的库”)

环境:Linux 调试器:GDB Oracle异构服务:

sqlplus
(CLI)或
sqldeveloper
(GUI)纯粹是执行Oracle数据库查询的接口。在Oracle HS上下文中,工具本身不加载ODBC驱动程序。Oracle数据库通过
dg4odbc
间接加载ODBC驱动程序。我花了一些时间才发现这个事实。要使用
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 :)