为多个数据库之间的整合和迁移做poc,尝试使用oracle gateway和heterogeneous service来中转访问,测试过好多次,最终发现只有在32位的oracle当中才能成功配置。
配置环境如下:
windows 2003 32bit 或 windows 2008 64bit
oracle10g 32bit 或 oracle11g 32bit
source and target:oracle 或 mysql 或 postgresql 或 greenplum ......
我的配置方式是使用一台独立终端来作为类似跳转的机器,实际的source db和target db均在其他的主机上,这样至少3台涉及到的主机。
linux也是可以的,但是现在没实际用到,,唯一需要注意的unixodbc版本的问题,因此这里主要描述在windows2008 dc server当中访问greenplum的配置过程。
0. 安装oracle database
注意是含了一个实例,略。
1. 安装psqlodbc驱动
略。
2. 配置odbc for greenplum
注意选择ansi,使用unicode会对char等字符类型的字段无法查询和显示,略。
3. 配置hs sid
hs\admin\initgp.ora:
hs_fds_connect_info = gp
hs_fds_trace_level = debug
4. 配置hs listener
listener.ora:
(sid_desc =
(program = dg4odbc)# hsodbc for 10g
(oracle_home = c:\oracle\product\11.2.0\dbhome_1)
(sid_name = gp)
#(envs= ld_library_path = /usr/lib:/u01/app/oracle/product/10.2.0/db_1/lib) # for linux
)
5. 配置tns
tnsnames.ora:
gp =
(description=
(address=(protocol=tcp)(host=localhost)(port=1521))
(connect_data=(sid=gp))
(hs=ok)
)
6. 遇到的问题:
6.0. ora-01017: 用户名/口令无效; 登录被拒绝
sql> create public database link postgresql connect to dba identified by isdba
using 'gp';
数据库链接已创建。
sql> select * from a1@postgresql;
select * from a1@postgresql
