
01
下载 Oracle 透明网关软件


02
安装Oracle透明网关软件

03
安装unixODBC
04
下载 openGauss ODBC驱动和libpq驱动

05
配置Oracle LISTENER/TNSNAME
cd $ORACLE_HOME/network/adminn listener.oraLISTENER_HS =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1567))))SID_LIST_LISTENER_HS=(SID_LIST=(SID_DESC=(SID_NAME=mogdb)(ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1)(ENV="LD_LIBRARY_PATH=/u01/app/oracle/product/19c/dbhome_1/hs/odbc")(PROGRAM=dg4odbc))(SID_DESC=(SID_NAME=mogdb2)(ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1)(ENV="LD_LIBRARY_PATH=/u01/app/oracle/product/19c/dbhome_1/hs/odbc ")(PROGRAM=dg4odbc)))
LISTENER_HS为监听名字,可随意选择 1567为端口号,可随意选择,不重复即可 mogdb/mogdb2为透明网关SID, 理论上可随意选择(不超过8位,不以数字开头) /u01/app/oracle/product/19c/dbhome_1 为ORACLE_HOME,根据实际情况做相应改动即可
n tnsnames.oramogdbtns =(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1567))(CONNECT_DATA=(SID=mogdb))(HS=OK))Mogdb2tns =(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1567))(CONNECT_DATA=(SID=mogdb2))(HS=OK))
mogdbtns为TNS名字,可随意选择 1567为端口号,对应listener内容 mogdb为透明网关SID, 对应listener内容
06
配置 ODBC.ini
cd $ORACLE_HOME/hs/adminvi odbc.ini[MOGDB]Servername=192.168.2.131Port=10086Database=postgresDriver=/u01/app/oracle/product/19c/dbhome_1/hs/odbc/psqlodbcw.soUsername=tpccPassword=tpcc@123[MOGDB2]Servername=192.168.2.131Port=10199Database=postgresDriver=/u01/app/oracle/product/19c/dbhome_1/hs/odbc/psqlodbcw.soUsername=tpccPassword=tpcc@123
MOGDB/MOGDB2为ODBC的数据源名称,可任选 Driver为ODBC驱动解压目录下的psqlodbcw.so Servername/Port/ Database/ Username/Password 为目标库相应信息
07
配置 hs/admin/init.ora
cd $ORACLE_HOME/hs/adminvi init<SID>.ora
HS_FDS_CONNECT_INFO = MOGDBset ODBCINI = /home/oracle/.odbc.iniHS_FDS_SHAREABLE_NAME = /home/oracle/ogodbc/lib/psqlodbcw.soHS_FDS_QUOTE_IDENTIFIER = FALSEset LowerCaseIdentifier = onHS_FDS_TRACE_LEVEL = 1HS_NLS_NCHAR = UCS2
HS_FDS_CONNECT_INFO 对应 odbc.ini 里面的数据源名字 ODBCINI 对应上一步odbc.ini的完整路径及文件名 HS_FDS_SHAREABLE_NAME 对应odbc.ini的驱动文件 HS_FDS_QUOTE_IDENTIFIER = FALSE 解决字段名大小写问题 set LowerCaseIdentifier = on 解决字段名大小写问题 HS_FDS_TRACE_LEVEL 开始时可以设置大一点,方便Debug, 比如255, 稳定下来可以改为0或者1。 HS_NLS_NCHAR = UCS2 有时候连接失败需要设置这个参数,应该是字符集不匹配时。
08
启动listener并简单测试
lsnrctl start LISTENER_HS
tnsping mogdbAttempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1567)) (CONNECT_DATA = (SERVER = DEDICATED) (SID_NAME = mogdb) (SERVICE_NAME = mogdb)) (HS=OK))OK (10 msec)
09
创建dblink
mogdb_link是dblink名字 ‘mogdb’对应tnsnames.ora里的内容 注意前面的user和pass加双引号,using后面的mogdb加单引号
10
测试dblink
Select * from pg_class@mogdb_link;select “relname” from pg_class@mogdb;
11
遗留问题
如果语句报错,后面的访问也会报错
表名大小写问题
关于作者
END
MogDB 是云和恩墨基于 openGauss 开源内核进行增强提升,推出的一款安稳易用的企业级关系型数据库。其具备金融级高可用和全密态计算的极致安全、面向多核处理器的极致性能、AI自诊断调优的极致智能能力,能够满足从核心交易到复杂计算的企业级业务需求。
访问官网了解更多:www.mogdb.io
产品兼容适配申请:partner@enmotech.com
进入交流群:Roger_database


文章转载自MogDB,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




