Oracle配置dblink访问PostgreSQL的操作方法

Oracle dblink的底层是通过ODBC连接PostgreSQL执行SQL的,需安装unixODBC和PostgreSQL ODBC驱动(它们的配置文件是:odbcinst.ini和odbc.ini),还需配置Oracle网络使用这个驱动。以下操作都是在Oracle服务器上进行:

以root用户安装unixODBC:

yum install unixODBC unixODBC-devel.x86_64

unixODBC相当于Linux中管理所有数据库ODBC驱动的管理器。

以root用户安装PostgreSQL ODBC驱动
编译安装,以root执行:

yum install libpq5-devel.x86_64
wget https://ftp.postgresql.org/pub/odbc/versions/src/psqlodbc-12.02.0000.tar.gz
tar xf psqlodbc-12.02.0000.tar.gz
cd psqlodbc-12.02.0000
./configure
make
make install

默认安装到/user/local/lib

配置odbcinst.ini和odbc.ini,以root用户执行:

vim /etc/odbcinst.ini(不区分大小写)

/usr/local/lib/psqlodbcw.so 是PostgreSQL ODBC驱动的库。
/usr/lib64/libodbcpsqlS.so 是unixODBC的库。

vim /etc/odbc.ini

这里Driver应与odbcinst.ini中的[PostgreSQL]对应,可以取任何名字,但两者需要相同。其它参数视具体PostgreSQL服务器而定。[PG]是一个连接PostgreSQL的配置名称,其它应用程序(如Oracle)就是引用这个名称访问PostgreSQL。
测试一下这个ODBC连接能否工作:

配置Oracle网络,以oracle用户执行,涉及3个Oracle配置文件的修改:

$ORACLEHOME/network/admin/listener.ora
$ORACLEHOME/hs/admin/init<SID_NAME>.ora
$ORACLEHOME/network/admin/tnsnames.ora

1)在listener.ora中,增加一项配置(红圈部分),它代表PostgreSQL提供的数据库服务,Oracle将PostgreSQL也看成一个Oracle实例,SID_NAME = PGINSTANCE是给它定义一个实例名,这个名称任意,但是这个名称决定了第二个配置文件$ORACLEHOME/hs/admin/init<SID_NAME>.ora的文件名,例如initPGINSTANCE.ora。

2)$ORACLEHOME/hs/admin/init<SID_NAME>.ora
实例PGINSTANCE连接PostgreSQL数据库时,Oracle会到$ORACLEHOME/hs/admin/下找名为initPGINSTANCE.ora的配置文件,里面是关于ODBC连接的信息,Oracle使用这些信息连接PostgreSQL,例如,在我的环境中,这个文件内容如下:

HS_FDS_CONNECT_INFO = PG 这个参数指向odbc.ini文件中的ODBC连接名称[PG],参考前面。HS_FDS_SHAREABLE_NAME =/usr/local/lib/psqlodbcw.so 这个参数设置PostgreSQL ODBC驱动的路径,与odbcinst.ini中Driver64相同。
如果PostgreSQL的字符编码是UTF8,那么下面两个参数应该这样设置:

HS_NLS_NCHAR=UCS2
HS_LANGUAGE=AMERICAN_AMERICA.AL32UTF8

3)在tnsnames.ora中,增加一项(红圈):

pglink是客户端到PostgreSQL实例的连接配置,只要注意一点:“SID = PGINSTANCE”中,SID应设置为listener.ora中PostgreSQL的实例名,例如这里就是PGINSTANCE。pglink这个名称,将在创建dblink时使用。

创建dblink
在sqlplus或其它终端执行

create database link dl_pgsql connect to "postgres" identified by "post123" using 'pglink';

其中'pglink'是tnsnames.ora文件里定义的,这里把Oracle数据库作为客户端,去连接pglink所指的实例。
"postgres" identified by "post123" 是指PostgreSQL中的用户。
这各名称为dl_pgsql的dblink所连接的PostgreSQL数据库名由odbc.ini的Database参数指定。postgres用户应该对Database所指的数据库,有足够访问权限。

通过dblink访问PostgreSQL
假设emp表在名为postgres的数据库中的名为public的schema下,Oracle完成上面的配置后,可以这样访问:

select * from "public"."emp"@dl_pgsql;

创建和使用别名

CREATE SYNONYM emp_table FOR "public"."emp"@dl_pgsql;
select * from emp_table;

到此这篇关于Oracle配置dblink访问PostgreSQL的文章就介绍到这了,更多相关Oracle dblink访问PostgreSQL内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • oracle创建dblink方法示例

    1.应用场景: 现有两个数据库,一个是nc650115,一个是nc56,现要通过dblink在nc650115连接nc56. 2.先在nc650115查看是否拥有创建dblink权限.在nc650115中执行 select * from user_sys_privs where privilege like upper('%DATABASE LINK%'); 有权限显示如下 没有权限到sys里面授权 grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DA

  • PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤

    背景: 同一个项目两个系统分别使用了PG库和Oracle库,Oracle是生产库,数据动态更新,现在在PG库中需要实时的获取到更新的数据进行统计,基于此种方式,可以通过ETL的工具实现,但是需要定期进行维护等,于是想着是否可以通过类似于Oracle数据库DBLINK的方式去实现,经过网上查找相关资料,发现可以通过oracle_fdw实现. 测试环境: 本地搭建测试环境,基础配置如下: Oracle数据库测试服务器(IP:192.168.1.110):WIN10操作系统,Oracle数据库版本为1

  • Oracle配置dblink访问PostgreSQL的操作方法

    Oracle dblink的底层是通过ODBC连接PostgreSQL执行SQL的,需安装unixODBC和PostgreSQL ODBC驱动(它们的配置文件是:odbcinst.ini和odbc.ini),还需配置Oracle网络使用这个驱动.以下操作都是在Oracle服务器上进行: 以root用户安装unixODBC: yum install unixODBC unixODBC-devel.x86_64 unixODBC相当于Linux中管理所有数据库ODBC驱动的管理器. 以root用户安

  • Oracle 配置连接远程数据库的教程

    客户机为了和服务器连接,必须先和服务器上的监听进程联络.ORACLE通过tnsnames.ora文件中的连接描述符来说明连接信息.一般tnsnames.ora 是建立在客户机上的.如果是客户机/服务器结构,整个网络上只有一台机器安装了ORACLE数据库服务器,那么只需在每个要访问ORACLE服务器的客户机上定义该文件,在服务器上无需定义.但是,如果网络上有多台机器均安装了ORACLE数据库服务器,并且服务器之间有数据共享的要求,那么在每台服务器上都必须定义该文件.tnsnames.ora文件缺省

  • Oracle 配置远程访问教程

    服务端配置 如果不想自己写,可以通过 Net Manager 来配置. 以下配置文件中的 localhost 改为 ip 地址,否则,远程不能访问. 1.网络监听配置 # listener.ora Network Configuration File: C:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora # Generated by Oracle configuration tools. SID_LIST

  • ORACLE 配置邮件服务器操作示例

    本文实例讲述了ORACLE 配置邮件服务器操作.分享给大家供大家参考,具体如下: 在Oracle sql developer中执行 必须有Begin END 1 创建 ACL BEGIN dbms_network_acl_admin.create_acl(acl => 'email.xml', DESCRIPTION => 'Enables network permissions for the e-mail server', principal => 'C##ESD_MONITOR',

  • VMware配置多节点环境的操作方法

    本教程使用CentOS 7 64位, 为每个虚拟机分配2GB内存和20G硬盘空间,请按需分配内存和硬盘空间网络连接使用桥接模式 启动虚拟机,使用dhclient工具为虚拟机自动分配一个可用的ip地址(dhclient是一个DHCP协议客户端,它使用DHCP协议或者BOOTP协议或在这两个协议都不可用时使用静态地址来配置一个或多个网络接口.),可以看到该工具为虚拟机分配的IP地址为192.168.0.103. 固定IP地址:编辑网络配置文件  vim /etc/sysconfig/network-

  • oracle中dblink查看、创建、使用以及删除实例代码

    目录 一.查看dblink 二.创建dblink 三.删除dblink 补充:DBLink 的使用查询 总结 一.查看dblink --查看全部用户 SELECT OWNER,OBJECT_NAME FROM DBA_OBJECTS WHERE OBJECT_TYPE='DATABASE LINK'; --查看全部用户 SELECT * FROM DBA_DB_LINKS; --查看本用户 SELECT * FROM USER_DB_LINKS; 二.创建dblink 1.如果没有权限的话给权限

  • 使用dep 配置golang 开发环境的操作方法

    概要 golang 的包管理一直没有官方统一的解决方案,因此也产生了很多非官方的包管理工具. 之前我一直使用的 gb(https://getgb.io/) 能够很好的隔开各个 golang 工程,当时 gb 创建的工程不太融入已有的 GOPATH 中. gb 相当于是把工程的目录作为 GOPATH,并且它的 vendor 目录也和 golang 自己的 vendor 不太一样. dep 的 Roadmap 中已经制定了成为 golang 官方包管理工具的计划, 所以,使用 dep 来组织自己的

  • Oracle中dblink的实际应用示例详解

    前言 本文介绍的是关于Oracle同义词+dblink的实际应用,下面话不多说了,来一起看看详细的介绍吧. 业务需求:原数据库(10.2.0.4.0),新数据库(11.2.0.3) 由于程序的需求原因,现在需要把新库上的某个用户直接映射到老库用户下: 1. 备份原库的用户 nohup exp scott/scott OWNER=scott BUFFER=10240000 STATISTICS=none RESUMABLE=y FILE=scott_all_exp.dmp LOG=scott_al

  • Linux Nginx 配置SSL访问实例详解

    Linux Nginx 配置SSL访问实例详解 生成证书 可以通过以下步骤生成一个简单的证书: 首先,进入你想创建证书和私钥的目录,例如: $ cd /usr/local/nginx/conf 创建服务器私钥,命令会让你输入一个口令: $ openssl genrsa -des3 -out server.key 1024 创建签名请求的证书(CSR): $ openssl req -new -key server.key -out server.csr 在加载SSL支持的Nginx并使用上述私钥

  • mac下配置和访问阿里云服务器(Ubuntu系统)的图文教程

    1.购买云服务器(http://www.aliyun.com/?spm=5176.3047821.1.1.vHFBuw) 注册帐号,在产品页面选择合适的服务器,进入详细页面选择配置,购买. 购买完成后进入管理控制台--云虚拟主机.ECS云服务器查看服务器状态. 2.注册域名.阿里云也提供域名注册和购买的功能,输入域名查询后购买即可.(国内注册域名后需要网络备案,备案操作和流程在阿里云里面有教程,有点麻烦) 3.域名解析.进入管理控制台--云解析,选择已注册的域名,点击后面的"解析"按钮

随机推荐