介绍
Oracle数据库网关可以透明地访问其他数据库,通过ODBC数据源发送SQL语句,在PostgreSQL中执行后将结果返回Oracle数据库。本文将介绍如何使用psqlODBC访问PostgreSQL数据库。

本文的小编小本本,在RHEL6.9上使用Oracle11.2.0.4和PostgreSQL10.2进行了测试。
配置
首先需要在PostgreSQL服务器上安装并创建相关数据库,通过pgadmin测试,确保远程连接正常。
在Oracle服务器上安装unixODBC软件包和PostgreSQL ODBC驱动,并为驱动创建数据源。可以使用以下命令创建数据源,其中驱动库默认已经创建了[PostgreSQL]条目。
[pgdsn]
Driver=PostgreSQL
Description=PostgreSQLODBCDriver
Database=MYPGDB
Servername=192.168.21.125
Username=mypguser
Password=oracle
Port=5432
UseDeclareFetch=1
CommLog=/tmp/pgodbclink.log
Debug=1
LowerCaseIdentifier=1
接下来需要测试ODBC连接。使用以下命令测试:
isql pgdsn
若连接成功,可以看到pgdsn数据源名称被显示。
创建Oracle数据库网关
在$ORACLE_HOME/hs/admin目录下创建init.ora文件,可以命名为initpgdsn.ora。在文件中添加以下信息:
HS_FDS_CONNECT_INFO=pgdsn
HS_FDS_TRACE_LEVEL=DEBUG
HS_FDS_SHAREABLE_NAME=/usr/lib64/libodbc.so
set ODBCINI=/etc/odbc.ini
注意需要使用set命令来配置ODBCINI。
接下来需要调整Oracle监听配置。注意,在集群环境中,监听文件的位置为$GRID_HOME/network/admin/listener.ora。
LISTENER=
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.21.13)(PORT=1521))
(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))
)
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=pgdsn)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1)
(ENVS="LD_LIBRARY_PATH=/usr/local/lib:/usr/lib64:/u01/app/oracle/product/11.2.0/db_1")
(PROGRAM=dg4odbc)
)
)
在Oracle TNS配置文件 $ORACLE_HOME/network/admin/tnsnames.ora 中添加如下配置:
pgdsn=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.21.13)(PORT=1521))
(CONNECT_DATA=(sid=pgdsn))
(HS=OK)
)
重启监听,创建DatabaseLink 来访问测试。需要注意的是,表名需要添加双引号。
create public database link pglink connect to "mypguser" identified by "oracle" using pgdsn;
select count(*) from "pg_settings"@pglink;
结论
本文介绍了如何使用psqlODBC来访问PostgreSQL数据库。Oracle数据库网关可以透明地访问其他数据库,在使用时需要注意配置和测试。希望本文能对使用Oracle数据库网关进行PostgreSQL访问的读者提供一些帮助。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/5888.html
