Oracle数据库网关可以透明地访问其他数据库,Oracle HS Agent将SQL语句转换为非Oracle数据库(PostgreSQL)可以理解的SQL语句,并通过ODBC 数据源发送该SQL语句,在PostgreSQL中执行后将结果返回Oracle数据库,本文介绍如何配置并访问PostgreSQL数据库。
操作系统:RHEL 6.9
软件版本:Oracle 11.2.0.4
主机地址:192.168.21.13
监听端口:1521
操作系统:RHEL 7.8
软件版本:PostgreSQL 10.2
主机地址:192.168.21.125
服务端口:5432
数据库名:MYPGDB
用户密码:mypguser/oracle
安装并创建相关数据库,使用pgadmin测试,确保远程连接正常。
yum -y install unixODBC*
yum -y install postgresql-odbc postgresql-libs
odbcinst -j
odbc_config --odbcini --odbcinstini
默认已经创建了[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
[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_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
注意集群环境的监听文件位置为$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_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
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
摘要:摘要第九届中国数据库技术大会,阿里云数据库产品专家萧少聪带来以阿里云如何打破迁移上云的壁垒为题的演讲。于是,阿里云给出了上面的解决方案。 摘要: 2018第九届中国数据库技术大会,阿里云数据库产品专家萧少聪带来以阿里云如何打破Oracle迁移上云的壁垒为题的演讲。Oracle是指数据库管理系统,面对Oracle迁移上云的壁垒,阿里云如何能够打破它呢?本文提出了Oracle 到云数据库P...
阅读 1247·2023-01-11 13:20
阅读 1555·2023-01-11 13:20
阅读 1008·2023-01-11 13:20
阅读 1675·2023-01-11 13:20
阅读 3968·2023-01-11 13:20
阅读 2510·2023-01-11 13:20
阅读 1305·2023-01-11 13:20
阅读 3474·2023-01-11 13:20