1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

Oracle使用psqlODBC访问PostgreSQL

介绍

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