【转发】oracle 使用dblink访问postgresql数据库
2015-04-20 00:00
405 查看
转发: 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;
原作者: 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;
相关文章推荐
- ORACLE使用dblink实现跨服务器访问数据
- oracle_fdw的使用:从PostgreSQL中访问Oracle数据库,实现数据库数据的同步
- 【Oracle】使用dblink+minus方式迁移数据
- Oracle通过DBLink操作数据表,报错“ORA-22992:无法使用从远程表选择的lob定位器”
- Oracle DBLINK 简单使用 oracle在进行跨库访问时,可以通过创建dblink实现,今天就简单的介绍下如果创建dblink,以及通过dblink完成插入、修改、删除等操
- Oracle DBLINK --跨库访问数据
- 使用Ora2Pg工具把数据从Oracle导入到PostgreSQL
- Oracle快照及dblink使用(两台服务器数据同步)
- 使用Oracle DBLink进行数据库之间对象的访问操作
- Oracle跨服务器访问使用dblink
- SQL 教程数据库包括:Oracle, Sybase, SQL Server, DB2, Access 等等,您将学到如何使用 SQL 访问和处理数据系统中的数据
- Oracle 快照及 dblink使用 (两台服务器数据同步)
- dblink访问 ORA-00997: 非法使用 LONG 数据类型
- Oracle 跨域访问其他实例数据 dblink 方式
- 使用Oracle DBLink进行数据库之间对象的访问操作
- 搭建Oracle dblink访问PostgreSQL
- oracle dblink 创建使用 垮库转移数据
- Oracle两个数据库访问,DbLink使用
- ORACLE 使用DBLINK访问远程数据库
- PostGresql组件部署和Oracle访问PostGresql的dblink配置