为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8
【操作系统】:CentOS Linux release 7.9.2009 (Core)
【CPU】:
【问题描述】*:使用dblink查询时,提示想应文件不存在,实际上是存在的。仅在Oracle RAC下异常,单实例下不会这个错误。
SQL Error [28500] [99999]: ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[unixODBC][Driver Manager]Can't open lib '/home/oracle/dmdata/bin/libdodbc.so' : file not found {01000}
ORA-02063: preceding 2 lines from DMLINK_xxx
ldd /home/oracle/dmdata/bin/libdodbc.so看下呢
把ODBC里相关*.so,共3个到$DM_HOME/bin下,复制到/home/oracle/dmdata/bin/下,再试试
[dmdba@NODE01 /opt/unixODBC-2.3.0 2023-08-18 09:11:54]
$ find ./ -name "*.so"
./cur/.libs/libodbccr.so
./odbcinst/.libs/libodbcinst.so
./DriverManager/.libs/libodbc.so
/home/oracle/dmdata/bin/目录加到用户环境变量里,LD_LIBRARY_PATH和PATH都加,再试试
Oracle到DM?,两端环境变量都加试试
和我遇到的问题一模一样, 最后怎么解决的呢
一摸一样的问题,请问解决了吗
oracle侧HS的配置内存发下看看
这个问题配置HS_FDS_SHAREABLE_NAME=libodbc.so
其中libodbc.so使用绝对路径
在OracleRAC结构和单实例ASM存储架构,都会存在这个问题。初步判断是这两种架构的监听程序都运行在grid用户下造成的。
解决方法:
1、需要安装部署19C版本的透明网关(gateway)。需要注意的是在安装透明网关需要更改安装的路径以及只选择安装ODBC模块即可。关于透明网关的配置需要在新安装的目录下进行配置;
2、在配置监听时需要在 grid
用户下的 listener.ora
进行添加,并最好使用 1522
端口,避免与业务端口 1521
冲突。重启监听并查看 LISTENER2
状态。例如:
LISTENER2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522))
)
)
SID_LIST_LISTENER2 =
(SID_LIST =
(SID_DESC =
(SID_NAME = dg4odbc)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/gw_1) #新的透明网关路径
(PROGRAM = dg4odbc)
)
)
3、OracleRAC环境需要所有节点都进行上述的操作,其他的配置基本和在单实例的Oracle数据库环境一致
另:我测试的Oracle版本为:Oracle 11.2.0.4
。希望该方法能帮助到你。
这边是缺失了对应的包,具体可以参考:
https://blog.csdn.net/Th3researchers/article/details/112786909