Oracle使用psqlODBC访问PostgreSQL [说明] Oracle数据库网关可以透明地访问其他数据库,Oracle HS Agent将SQL语句转换为非Oracle数据库(PostgreSQL)可以理解的SQL语句, 并通过ODBC 数据源发送该SQL语句,在PostgreSQL中执行后将结果返回Oracle数据库,本文介绍如何配置并访问PostgreSQL数据库。 [测试环境] Oracle 服务器 操作系统:Red Hat Enterprise Linux Server release 7.4 (Maipo) 软件版本:Oracle 11.2.0.4 主机地址:192.168.56.101 监听端口:1521 PostgreSQL 服务器 操作系统:Red Hat Enterprise Linux Server release 7.4 (Maipo) 软件版本:PostgreSQL 12.0 主机地址:192.168.56.101 服务端口:5432 数据库名:runoobdb 用户密码:testuser/123456 [配置] 1 PostgreSQL 服务器 安装并创建相关数据库,使用pgadmin测试,确保远程连接正常。 2 Oracle 服务器 2.1 安装相关包 安装 unixODBC 软件包 yum -y install unixODBC* 安装 PostgreSQL ODBC 驱动 yum -y install postgresql-odbc postgresql-libs 2.2创建数据源 为驱动创建数据源 odbcinst -j odbc_config --odbcini --odbcinstini 2.3配置 psqlODBC驱动库 /etc/odbcinst.ini 默认已经创建了[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 2.4创建数据源 数据源名称为 pgdsn,可自定义其他名称,注意在后继配置中引用时保持一致。 PostgreSQL数据库名为 runoobdb, 服务器/端口为 192.168.56.101/5432, 用户名/密码为 testuser/123456 /etc/odbc.ini [pgdsn] Driver = PostgreSQL Description = PostgreSQL ODBC Driver Database = runoobdb Servername = 192.168.56.101 Username = testuser Password = 123456 Port = 5432 UseDeclareFetch = 1 CommLog = /tmp/pgodbclink.log Debug = 1 LowerCaseIdentifier = 1 2.5 测试 ODBC 连接 [oracle@rhel7 admin]$ isql pgdsn +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> select current_database(),inet_server_port(); +-----------------------------------------------------------------+-----------------+ | current_database | inet_server_port| +-----------------------------------------------------------------+-----------------+ | runoobdb | 5432 | +-----------------------------------------------------------------+-----------------+ 2.6 创建 Oracle 数据库网关 在 $ORACLE_HOME/hs/admin 目录下创建 init<sid>.ora 文件,本测试为 initpgdsn.ora。 HS_FDS_CONNECT_INFO = pgdsn HS_FDS_TRACE_LEVEL = DEBUG HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so HS_NLS_NCHAR=UCS2 HS_LANGUAGE=AMERICAN_AMERICA.AL32UTF8 set ODBCINI=/etc/odbc.ini 2.7 调整 Oracle 监听配置 注意集群环境的监听文件位置为$ORACLE_HOME/network/admin/listener.ora ,rac环境为grid 下面的文件 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) ) ) 2.8 添加 Oracle TNS 配置 配置文件为 $ORACLE_HOME/network/admin/tnsnames.ora pgdsn = (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST = 192.168.56.101)(PORT = 1521)) (CONNECT_DATA=(sid=pgdsn)) (HS=OK) ) 2.9 重启监听 lsnrctl stop lsnrctl start 2.10 创建 Database Link SQL> create public database link pglink connect to "testuser" identified by "123456" using 'pgdsn'; 2.11 访问测试 注意表名需要添加双引号。 SQL> select count(*) from "pg_settings"@pglink; select * from "t1"@pglink; create public database link pglink connect to "postgres" identified by "123123" using 'pgdsn'; 19.3 连接14.5过程中报错如下: [oracle@zc ~]$ isql -v pgdsn [08001][unixODBC]SCRAM authentication requires libpq version 10 or above [oracle@zc ~]$ odbcinst -j unixODBC 2.3.11 DRIVERS............: /etc/odbcinst.ini SYSTEM DATA SOURCES: /etc/odbc.ini FILE DATA SOURCES..: /etc/ODBCDataSources USER DATA SOURCES..: /home/oracle/.odbc.ini SQLULEN Size.......: 8 SQLLEN Size........: 8 SQLSETPOSIROW Size.: 8 检查应该是密码验证方式的问题 将密码改为trust 后暂时过去了,正规的办法应该升级客户端
Oracle使用psqlODBC访问PostgreSQL
来源:这里教程网
时间:2026-03-03 21:22:28
作者:
编辑推荐:
- Oracle使用psqlODBC访问PostgreSQL03-03
- Oracle standby redo log配置03-03
- [20250128]21C下测试CBC latch相关测试5.txt03-03
- 量子计算与人工智能融合的发展趋势03-03
- 全局临时表的妙用03-03
- 湖南家具月球表面床,一键开启太空梦境03-03
- Oracle添加ASM磁盘故障03-03
- 一车封神的小米汽车,2025还能躺赢吗03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 湖南家具月球表面床,一键开启太空梦境
湖南家具月球表面床,一键开启太空梦境
26-03-03 - Oracle添加ASM磁盘故障
Oracle添加ASM磁盘故障
26-03-03 - 一车封神的小米汽车,2025还能躺赢吗
一车封神的小米汽车,2025还能躺赢吗
26-03-03 - 原以为微软、亚马逊、阿里云云计算大局已定!没想到有这四大变数
原以为微软、亚马逊、阿里云云计算大局已定!没想到有这四大变数
26-03-03 - hyper.js,hyper.js是什么,hyper-v批量管理工具的使用教程
- hyper v 系统,hyper v 系统是什么,hyper-v批量管理工具的使用教程
- Oracle GoldenGate Veridata 23c安装(二)
Oracle GoldenGate Veridata 23c安装(二)
26-03-03 - 19c rac在深信服超融合的半自动安装
19c rac在深信服超融合的半自动安装
26-03-03 - 代码签名证书有效期变更
代码签名证书有效期变更
26-03-03 - 群友删除了dual表同义词的分析和处理
群友删除了dual表同义词的分析和处理
26-03-03
