2025年jdbc连接oracle加密传输(jdbc连接oracle数据库的连接字符串)

jdbc连接oracle加密传输(jdbc连接oracle数据库的连接字符串)Oracle 透明网关是 Oracle 公司的一个连接访问异构数据库的组件 通过透明网关 Oracle 可以以数据库链接 dblink 的方式连接异构数据库 目前 通过 Oracle Database Gateway for ODBC 可以实现在 Oracle 数据库中直接访问 MogDB 数据库 下面是具体的实现步骤 01 下载 Oracle 透明网关软件 登录 https edelivery oracle com 搜索 database gateway 选择合适版本



Oracle 透明网关是 Oracle 公司的一个连接访问异构数据库的组件。通过透明网关,Oracle 可以以数据库链接(dblink)的方式连接异构数据库。
目前,通过 Oracle Database Gateway for ODBC,可以实现在 Oracle 数据库中直接访问 MogDB 数据库。
下面是具体的实现步骤:

01

下载 Oracle 透明网关软件

登录 https://edelivery.oracle.com,搜索 database gateway:

选择合适版本,点击Continue:
选择合适操作系统平台,开始下载。

02

安装Oracle透明网关软件

不同版本界面可能不一样,解压,并运行 https://mp.weixin.qq.com/runInstaller,关键步骤在于选择 Oracle Database Gateway for ODBC:
完成安装。

03

安装unixODBC

root用户直接运行:
yum install unixODBC unixODBC-devel

04

下载 openGauss ODBC驱动和libpq驱动

https://opengauss.org/zh/download/
并一起解压到$ORACLE_HOME/hs/ogodbc下(或者其他地方也可以)。

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,根据实际情况做相应改动即可
可支持一个监听负责多个数据库,通过多个SID_DESC实现;
也可以把SID_DESC加到现有的LISTENER当中,实现默认LISTENER同时监听普通连接和透明网关连接。
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内容
如果连接多个数据库,则需要建立多个tnsname。

06

配置 ODBC.ini

目录和文件名其实可任选,为了方便管理,建议$ORACLE_HOME/hs/admin:
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
此处SID对应listerner.ora里面的 SID_NAME的定义,如果多个SID_NAME,则需要多份init.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
名字对应listener里的名字:
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)
注意,此处的OK 仅代表LISTENER正常工作,还未和远程数据库发生关系。

09

创建dblink

Create database link mogdb_link connect to useridentified by passusing mogdb;
  • mogdb_link是dblink名字
  • ‘mogdb’对应tnsnames.ora里的内容
  • 注意前面的user和pass加双引号,using后面的mogdb加单引号

10

测试dblink

Select * from pg_class@mogdb_link;select “relname” from pg_class@mogdb;
目前字段名称需要加括号,暂无合适的绕过方法;
如果可以,建议修改应用,涉及远程表的部分SQL中使用字段名称小写+双引号的方式,如果实在不想改应用代码,可联系云和恩墨的工程师进行定制化调整。

11

遗留问题

  • 如果语句报错,后面的访问也会报错
需要显式rollback 或者断开会话重连。
odbc.ini里面设置ForExtensionConnector=1可能可以解决这个问题,还需要进一步测试验证。
  • 表名大小写问题
访问 MogDB 的表的指定字段需要使用小写并加双引号。
如果可以,建议修改应用,涉及远程表的部分SQL中使用字段名称小写+双引号的方式,如果实在不想改应用代码,可联系云和恩墨的工程师进行定制化调整。


关于作者

罗海雄,数据库研发架构师,性能优化专家,2012 ITPUB 全国SQL大赛冠军。超十年企业级系统设计与优化经验,资深架构师与优化大师,对SQL优化理解尤其深入。曾服务于甲骨文公司。

【特别推荐】“openGauss Developer Day 2024”将于6月21日,在北京昆泰嘉瑞文化中心召开。云和恩墨将在当天下午1:30-3:30承办一场专题论坛,携手河北移动、鼎捷软件,为您呈现 MogDB 数据库技术的创新突破和在生态与市场方面的成果,还有盖国强领衔的Liveshow为您答疑解惑✨

我们诚邀您现场参与!现在就点击下方图片了解大会详情,并扫码即刻报名~

👇🏻云和恩墨专属报名通道

(记得勾选“云和恩墨分论坛”哦~)


数据驱动,成就未来,云和恩墨,不负所托!


云和恩墨创立于2011年,是业界领先的“智能的数据技术提供商”。公司总部位于北京,在国内外35个地区设有本地办公室并开展业务。

云和恩墨以“数据驱动,成就未来”为使命,致力于将创新的数据技术产品和解决方案带给全球的企业和组织,帮助客户构建安全、高效、敏捷且经济的数据环境,持续增强客户在数据洞察和决策上的竞争优势,实现数据驱动的业务创新和升级发展。

自成立以来,云和恩墨专注于数据技术领域,根据不断变化的市场需求,创新研发了系列软件产品,涵盖数据库、数据库存储、数据库云管和数据智能分析等领域。这些产品已经在集团型、大中型、高成长型客户以及行业云场景中得到广泛应用,证明了我们的技术和商业竞争力,展现了公司在数据技术端到端解决方案方面的优势。

在云化、数字化和智能化的时代背景下,云和恩墨始终以正和多赢为目标,感恩每一位客户和合作伙伴的信任与支持,“利他先行”,坚持投入于数据技术核心能力,为构建数据驱动的智能未来而不懈努力。

我们期待与您携手,共同探索数据力量,迎接智能未来。

编程小号
上一篇 2025-02-25 20:46
下一篇 2025-02-14 16:17

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/19401.html