文档章节

【转发】oracle 使用dblink访问postgresql数据库

Rocky-Wang
 Rocky-Wang
发布于 2015/04/20 14:58
字数 1189
阅读 49
收藏 0
点赞 0
评论 0

转发: http://www.itpub.net/thread-1892551-1-1.html

原作者: haoyinpeng


oracle数据库访问postgre数据库(使用dblink)

背景:

oracle数据库11g for centos 6.5 64bit IP:192.168.7.241

postgre 数据库9.3 for windows7 64bit  ip:192.168.7.254


参考网站:http://www.uptimemadeeasy.com/li ... bc-driver-on-linux/

这个网站是教安装odbc驱动并且用isql工具测试是否能连接上远程的postgre数据库


由于oracle访问非oracle系统,故需要非oracle系统的odbc驱动包来协助访问

一、先使用isql工具测试是否能用odbc驱动连接到postgre数据库

1、首先在centos 6.5下安装postgre的odbc驱动包

系统默认的是postgresql-odbc包,版本是8.1 。也可以自己下载9.3版本的。

下载9.3版本的odbc包步骤:

  (1)、wget http://yum.postgresql.org/9.3/re ... 93-9.3-1.noarch.rpm

  (2)、rpm -ivh ./pgdg-centos93-9.3-1.noarch.rpm

  (3)、yum install postgresql93-odbc.x86_64  unixODBC 注:unixODBC可能默认装系统的时候就已经安装上了



2、安装工作完成,接下来是配置,配置文件主要由/etc/odbcinst.ini 和 /etc/odbc.ini 

   (1)、/etc/odbcinst.ini 文件配置

[root@oracleserver etc]# cat odbcinst.ini

# Example driver definitions

[ODBC] 

Trace = yes  

TraceFile = /usr/etc/sql01.log #这个是设置一个跟踪日志,可以查看你连接的错误

# Driver from the postgresql-odbc package

# Setup from the unixODBC package

[PostgreSQL] #这个名字自己取,但是要注意和另外一个文件odbc.ini的某处保持一致

Description        = ODBC for PostgreSQL  #这个是个名称,随意取

Driver                = /usr/pgsql-9.3/lib/psqlodbc.so  #这里是你安装的postgre的odbc驱动文件,如果不和我的目录相同就用rpm -qal|grep postgre命令查看下路径

Setup                = /usr/lib/libodbcpsqlS.so  #这里是unixODBC的驱动路径,和我不同路径的用rpm -qal|grep unixODBC 找找

FileUsage        = 1  


  (2)、 /etc/odbc.ini 文件配置

[root@oracleserver etc]# cat odbc.ini

[PG_LINK]  #这个名字很重要是自定义的,待会儿用isql工具的时候就是使用这个名字来连接的,后续用oracle访问的时候这个名字会在多处用到

Description         = PostgreSQL connection to SallyDB

Driver              = PostgreSQL #这个名字是在上个配置文件/etc/odbcinst.ini 中的中括号里面的那个自定义的名字

Database            = MGTest  #postgre数据库的名字,大小写区分

Servername          = 192.168.7.254  #postgre数据库的ip地址或者主机名

UserName            = dbuser  #postgre数据库账户

Password            = 123     #postgre数据库密码

Port                = 5432    #postgre数据库端口

Protocol            = 9.3     

ReadOnly            = No

RowVersioning       = No

ShowSystemTables    = No

ConnSettings        =

   (3)、使用命令isql PG_LINK 正常连接  #这个PG_LINK就是你odbc.ini文件中的中括号内自定义的名字

[root@oracleserver etc]# isql PG_LINK

+---------------------------------------+

| Connected!                            |

|                                       |

| sql-statement                         |

| help [tablename]                      |

| quit                                  |

|                                       |

+---------------------------------------+

SQL> 

至此:isql工具测试成功


二、配置oracle数据库访问postgre数据库需要配置4个文件

    参考网站:http://dbaspot.wordpress.com/201 ... om-oracle-database/ 

这个网站我按照它的做法最后和上面一个哥们遇到的问题一样,提示ORA-28500: connection from ORACLE to a non-Oracle system returned this message:

connction string lacks some options {08001,NativeErr = 202} 其实是.odbc.ini文件里面少了个steup选项


1、在oracle自己的目录/home/oracle/下面创建一个.odbc.ini,这是个隐藏文件前面有点。下面文件中的Driver Setup 我是单独又写了一遍,也可以引用/etc/odbc.ini那样的写法,不过前提得是oracle用户要有权限访问那个文件

[root@oracleserver oracle]# cat .odbc.ini

[PG_LINK]

Description         = PostgreSQL connection to SallyDB

Driver              = /usr/pgsql-9.3/lib/psqlodbc.so

Setup                    = /usr/lib/libodbcpsqlS.so  

Database            = MGTest

Servername          = 192.168.7.254

UserName            = dbuser

Password            = 123

Port                = 5432

Protocol            = 9.3

ReadOnly            = No

RowVersioning       = No

ShowSystemTables    = No

ConnSettings        =

2、配置透明网关。在$ORACLE_HOME/hs/admin/下面创建initPG_LINK.ora文件 ,这个文件名字中的PG_LINK也是上面你自定义的名字

[oracle@oracleserver admin]$ cat initPG_LINK.ora

HS_FDS_CONNECT_INFO = PG_LINK #这个PG_LINK和你的.odbc.ini文件中的自定义的名字相同

HS_FDS_TRACE_LEVEL = 255

HS_FDS_SHAREABLE_NAME=/usr/pgsql-9.3/lib/psqlodbc.so

HS_LANGUAGE=AMERICAN_AMERICA.WE8ISO8859P1

set ODBCINI=/home/oracle/.odbc.ini  #这里也可以指定最初用isql工具连接而配置的那个/etc/odbc.ini前提是得能让oracle用户有权限访问那个文件

3、配置tnsnames.ora文件,在oracle服务器端的tnsnames.ora文件中增加以下行,下面的俩PG_LINK都要保持一致,host和port是你oracle服务器的IP和端口,不是postgre的 

PG_LINK  =

  (DESCRIPTION=

    (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.241)(PORT=1521))

    (CONNECT_DATA=(SID=PG_LINK))

    (HS=OK)

  )

4、配置listener.ora文件,在监听文件中增加以下行。 SID_LIST_LISTENER后面的这个LISTENER是你监听器的名字,默认的都是这个。


SID_LIST_LISTENER=

  (SID_LIST=

      (SID_DESC=

         (SID_NAME=PG_LINK)

         (ORACLE_HOME=/opt/oracle11R2/11g) #$ORACLE_HOME目录

         (ENV="LD_LIBRARY_PATH=/usr/pgsql-9.3/lib/:/opt/oracle11R2/11g/bin/")#这行好像可以不要,如果报错再添加上

         (PROGRAM=dg4odbc)

      )

  )

以上4个步骤配置完成之后就可以在oracle数据库创建dblink连接postgresql数据库了

create database link db_link_name connect to "dbuser" identified by "123" using 'PG_LINK'; 

访问postgre的数据库表是需要在表名字上加上双引号:

select * from "tbla"@PG_LINK;


© 著作权归作者所有

共有 人打赏支持
Rocky-Wang
粉丝 4
博文 34
码字总数 43517
作品 0
深圳
数据库管理员
PostgreSQL的postgres_fdw跨库使用

PostgreSQL的数据库逻辑上是相互独立的,和Oracle类似,如果要访问其他数据库,需要做跨库操作,Postgres本身提供了一些扩展,比如dblink,pgsqlfdw等,高版本的建议使用postgresfdw,也就是p...

kenyon_君羊
2014/04/01
0
4
PostgreSQL数据库dblink和postgres_fdw扩展使用比较

在之前的两篇文章中,章郎虫分别介绍了dblink和postgresfdw两个扩展。今天我在这里初略地说下使用dblink和postgresfdw后的实际感受和区别。 postgresfdw远程可写功能是9.3版本出来后才新加的...

章郎虫
2013/11/07
0
1
PostgreSQL 变态并行拉取单表的方法 - 按块并行(按行号(ctid)并行) + dblink 异步调用

标签 PostgreSQL , 按块扫描 , 采样 , 并行 , 采样扫描 , 数据同步 , 数据全量同步 背景 数据同步是一个较为常见的需求,为了提高性能,并行是一个非常简单暴力的手段。但是通常只能做到不同...

德哥
05/06
0
0
EDB PPAS(Oracle 兼容版) Oracle与PostgreSQL 兼容模式的参数配置切换

标签 PostgreSQL , EDB , PPAS , 参数 , Oracle模式 , PostgreSQL模式 背景 EDB PPAS是EDB推出的一款同时兼容Oracle和PostgreSQL协议的数据库,在去O的场景中,使用非常广泛,价格便宜,同时...

德哥
05/06
0
0
Oracle migration to Greenplum - (含 Ora2pg)

标签 PostgreSQL , Oracle , Greenplum , PL/SQL , Ora2pg 背景 Oracle在OLTP领域毫无疑问是非常不错的数据库,但是OLAP领域,可以有更好的选择,特别是在数据量大到一定程度的时候,Oracle用...

德哥
05/06
0
0
PostgreSQL 批量导入性能 (采用dblink 异步调用)

标签 PostgreSQL , unlogged table , 批量 , dblink 背景 批量导入数据,怎样能挖掘出系统的比较极限的潜能? 瓶颈通常在哪里? 1、WAL lock 2、INDEX lock 3、EXTEND LOCK 4、autovacuum 干扰...

德哥
05/06
0
0
PostgreSQL的DBLink使用

习惯了Oracle的Dblink带来的便捷,我们来看一下PostgreSQL的DBLINK,该工具需要编译安装一下使用,倒也不是很复杂。 DB版本:9.1.3 1.编译安装 [postgres@localhost dblink]$ pwd/home/post...

kenyon_君羊
2012/04/26
0
3
数据库案例集锦 - 开发者的《如来神掌》

标签 PostgreSQL , PG DBA cookbook , PG Oracle兼容性 , PG 架构师 cookbook , PG 开发者 cookbook , PG 应用案例 背景 「剑魔独孤求败,纵横江湖三十馀载,杀尽仇寇,败尽英雄,天下更无抗...

德哥
2017/06/09
0
0
postgresql9.5 物化视图测试

copyright http://cupegraf.com/ 视图是指数据库只存储定义该视图的查询语句(内容是查询时产生),而物化视图是一个其查询语句查询后的内容并存储的视图(内容是创建物化视图刷新视图时产生,...

廖君
2015/07/30
0
0
阿里云RDS PostgreSQL OSS 外部表实践 - (dblink异步调用封装并行) 从OSS并行导入数据

标签 PostgreSQL , oss对象存储 , 阿里云RDS PG , 并行写 , dblink , 异步调用 , 异步任务监控 , OSS外部表 , 数据传输 背景 《阿里云RDS PostgreSQL OSS 外部表实践 - (dblink异步调用封装并...

德哥
05/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

知识点总结

jq如何拿到data-info的自定义属性 1.1 原生可以获取到所有属性el.attrbutes 1.2 jq的$(el).attr('属性名称') 继承的几种方式,原型链 2.1 扩展原型对象实现继承 2.2 替换原型对象实现继承 2....

litCabbage
7分钟前
0
0
python语言规范

http://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_style_rules/...

ghou-靠墙哭
11分钟前
0
0
istio 监控,遥测 (理论)

Istio提供了一种灵活的模型来强制执行授权策略并收集网格中服务的遥测。 基础架构后端旨在提供用于构建服务的支持功能。它们包括诸如访问控制系统,遥测捕获系统,配额执行系统,计费系统等之...

xiaomin0322
13分钟前
0
0
阿里资深专家面试问题收集

corejava hashcode相等的两个对象一定相等吗?equals呢?反过来相等吗? 介绍一下集合框架? hashtable,hashmap底层实现是什么?hashtable和concurrenthashmap底层实现的区别? hashmap和treemap的...

undefine
14分钟前
6
0
alpine安装软件指定安装源

linux-alpine安装软件指定安装源 一、永久修改apk下载源地址 vi etc/apk/repositories 替换成阿里源 http://mirrors.aliyun.com/alpine/v3.8/main/http://mirrors.aliyun.com/alpine/v3...

我心中有猛狗
14分钟前
0
0
Centos7通过yum安装nginx

添加源地址(直接install可能不是最新版本的) sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 安装 sudo yum install -y ng......

iplusx
16分钟前
0
0
ef .core Dapper Helper

using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Threading.Tasks; using Dapper; using Dap......

Lytf
18分钟前
0
0
iOS 小笔记

1.以下代码打印什么     __block int val = 10;    void (^blk)(void) = ^{        printf("val=%d\n",val);        };       val = 2;    blk(); /...

风了个1
20分钟前
0
0
【Spring Boot 系列 Spring Boot示例程序】

入门程序步骤,创建一个Maven项目。继承Spring Boot官方提供的父工程。再引入一个Web的应用启动器。 1、选择一个合适的IDEA工具 创建一个Maven工程,并添加如下配置 <parent> <...

HansonReal
21分钟前
0
0
217. Contains Duplicate - LeetCode

Question 217. Contains Duplicate Solution 题目大意:判断数组中是否有重复元素 思路:构造一个set,不重复就加进去,重复返回true,如果数据量大的话,可以用布隆过滤器 Java实现: publ...

yysue
25分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部