资讯专栏INFORMATION COLUMN

Oracle使用psqlODBC访问PostgreSQL

IT那活儿 / 2175人阅读
Oracle使用psqlODBC访问PostgreSQL
[
说明
]


Oracle数据库网关可以透明地访问其他数据库,Oracle HS Agent将SQL语句转换为非Oracle数据库(PostgreSQL)可以理解的SQL语句,并通过ODBC 数据源发送该SQL语句,在PostgreSQL中执行后将结果返回Oracle数据库,本文介绍如何配置并访问PostgreSQL数据库。


[
测试环境
]


Oracle 服务器

操作系统:RHEL 6.9

软件版本:Oracle 11.2.0.4

主机地址:192.168.21.13

监听端口:1521

PostgreSQL 服务器

操作系统:RHEL 7.8

软件版本:PostgreSQL 10.2

主机地址:192.168.21.125

服务端口:5432

数据库名:MYPGDB

用户密码:mypguser/oracle


[
配置
]


PostgreSQL 服务器


安装并创建相关数据库,使用pgadmin测试,确保远程连接正常。


Oracle 服务器

安装 unixODBC 软件包

 yum -y install unixODBC*

安装 PostgreSQL ODBC 驱动

 yum -y install postgresql-odbc postgresql-libs

为驱动创建数据源

 odbcinst -j
 
 odbc_config --odbcini --odbcinstini

配置 psqlODBC驱动库

默认已经创建了[PostgreSQL]条目。

 # Example driver definitions
 
 # Driver from the postgresql-odbc package
 # Setup from the unixODBC package
 [PostgreSQL]
 Description     = ODBC for PostgreSQL
 Driver          = /usr/lib/psqlodbc.so
 Setup           = /usr/lib/libodbcpsqlS.so
 Driver64        = /usr/lib64/psqlodbc.so
 Setup64         = /usr/lib64/libodbcpsqlS.so
 FileUsage       = 1
 
 # Driver from the mysql-connector-odbc package
 # Setup from the unixODBC package
 [MySQL]
 Description     = ODBC for MySQL
 Driver          = /usr/lib/libmyodbc5.so
 Setup           = /usr/lib/libodbcmyS.so
 Driver64        = /usr/lib64/libmyodbc5.so
 Setup64         = /usr/lib64/libodbcmyS.so
 FileUsage       = 1

创建数据源


数据源名称为 pgdsn,可自定义其他名称,注意在后继配置中引用时保持一致。


PostgreSQL数据库名为 MYPGDB, 服务器/端口为 192.168.21.125/5432, 用户名/密码为 mypguser/oracle。

 [pgdsn]
 Driver = PostgreSQL
 Description = PostgreSQL ODBC Driver
 Database = MYPGDB
 Servername = 192.168.21.125
 Username = mypguser
 Password = oracle
 Port = 5432
 UseDeclareFetch = 1
 CommLog = /tmp/pgodbclink.log
 Debug = 1
 LowerCaseIdentifier = 1

测试 ODBC 连接

 [root@rhel69rac1 ~]# isql pgdsn
 +---------------------------------------+
 | Connected!                           |
 |                                       |
 | sql-statement                         |
 | help [tablename]                     |
 | quit                                 |
 |                                       |
 +---------------------------------------+
 
 SQL> select current_database(),inet_server_port();
 +-----------------------------------------------------------------+-----------------+
 | current_database                                               | inet_server_port|
 +-----------------------------------------------------------------+-----------------+
 | MYPGDB                                                           | 5432           |
 +-----------------------------------------------------------------+-----------------+
 SQLRowCount returns -1
 1 rows fetched
 SQL>

创建 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


调整 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)
 )

重启监听

 lsnrctl stop
 lsnrctl start

创建 Database Link

 SQL> create public database link pglink connect to "mypguser" identified by "oracle" using pgdsn;

访问测试

注意表名需要添加双引号。

 SQL> select count(*) from "pg_settings"@pglink;

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/130075.html

相关文章

  • 一款在线ER模型设计工具,支持MySQL、SQLServer、OraclePostgresql s

    摘要:给大家介绍一款在线模型生成的工具,可以针对多种数据库的文件在线生成模型图表,支持等数据库。 给大家介绍一款在线ER模型生成的工具,可以针对多种数据库的DDL文件在线生成ER模型图表,支持MySQL、SQLServer、Oracle、PostgreSQL等数据库。主要功能如下: 支持表的创建,同时可以根据数据库的类型不同编辑表结构、字段类型、主键、默认值、索引、备注信息等等 支持视图,...

    魏宪会 评论0 收藏0
  • 阿里云如何打破Oracle迁移上云的壁垒

    摘要:摘要第九届中国数据库技术大会,阿里云数据库产品专家萧少聪带来以阿里云如何打破迁移上云的壁垒为题的演讲。于是,阿里云给出了上面的解决方案。 摘要: 2018第九届中国数据库技术大会,阿里云数据库产品专家萧少聪带来以阿里云如何打破Oracle迁移上云的壁垒为题的演讲。Oracle是指数据库管理系统,面对Oracle迁移上云的壁垒,阿里云如何能够打破它呢?本文提出了Oracle 到云数据库P...

    aristark 评论0 收藏0
  • 阿里云如何打破Oracle迁移上云的壁垒

    摘要:摘要第九届中国数据库技术大会,阿里云数据库产品专家萧少聪带来以阿里云如何打破迁移上云的壁垒为题的演讲。于是,阿里云给出了上面的解决方案。 摘要: 2018第九届中国数据库技术大会,阿里云数据库产品专家萧少聪带来以阿里云如何打破Oracle迁移上云的壁垒为题的演讲。Oracle是指数据库管理系统,面对Oracle迁移上云的壁垒,阿里云如何能够打破它呢?本文提出了Oracle 到云数据库P...

    chavesgu 评论0 收藏0
  • Navicat使用Instant Client创建连接到Oracle数据库的正确姿势

    摘要:今天就和大家分享一下使用连接数据库的正确姿势。在普通的情况下,用户可以通过和来访问数据库中的数据。通俗地讲,就是一个使用来访问数据库的一个图形化界面。他是这么描述的看不懂没关系要么谷歌要么度娘。原理,请自行谷歌。 太长不看版: 1.你什么操作系统,Instant Client就选什么操作系统 2.你的navicat是多少位(32、64),Instant Client就选多少位 3.你的...

    yanwei 评论0 收藏0
  • Navicat使用Instant Client创建连接到Oracle数据库的正确姿势

    摘要:今天就和大家分享一下使用连接数据库的正确姿势。在普通的情况下,用户可以通过和来访问数据库中的数据。通俗地讲,就是一个使用来访问数据库的一个图形化界面。他是这么描述的看不懂没关系要么谷歌要么度娘。原理,请自行谷歌。 太长不看版: 1.你什么操作系统,Instant Client就选什么操作系统 2.你的navicat是多少位(32、64),Instant Client就选多少位 3.你的...

    DevTTL 评论0 收藏0
  • Navicat使用Instant Client创建连接到Oracle数据库的正确姿势

    摘要:今天就和大家分享一下使用连接数据库的正确姿势。在普通的情况下,用户可以通过和来访问数据库中的数据。通俗地讲,就是一个使用来访问数据库的一个图形化界面。他是这么描述的看不懂没关系要么谷歌要么度娘。原理,请自行谷歌。 太长不看版: 1.你什么操作系统,Instant Client就选什么操作系统 2.你的navicat是多少位(32、64),Instant Client就选多少位 3.你的...

    Cobub 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<