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

jdbc连接oracle加密传输(jdbc连接oracle数据库的连接字符串)Oracle 透明网关是 Oracle 公司的一个连接访问异构数据库的组件 通过透明网关 Oracle 可以以数据库链接 dblink 的方式连接异构数据库 o p 目前 通过 Oracle Database Gateway for ODBC 可以实现在 Oracle 数据库中直接访问 MogDB 数据库 o p 下面是具体的实现步骤 o p 01 下载 Oracle

大家好,我是讯享网,很高兴认识大家。




讯享网

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

01

下载 Oracle 透明网关软件

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

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

02

安装Oracle透明网关软件

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

03

安装unixODBC

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

04

下载 openGauss ODBC驱动和libpq驱动

https://opengauss.org/zh/download/

并一起解压到\(ORACLE_HOME/hs/ogodbc下(或者其他地方也可以)。</span><o:p></o:p></section><section style="font-size: 15px;color: rgb(33, 33, 34);letter-spacing: 1px;line-height: 1.75;padding-left: 5px;padding-right: 5px;margin-bottom: 24px;"><section style="margin: 10px 0%;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;"><section style="display: inline-block;vertical-align: bottom;width: 10%;border-bottom: 6px solid rgb(249, 120, 30);border-bottom-right-radius: 0px;height: auto;align-self: flex-end;flex: 0 0 auto;"><section style="font-size: 23px;color: rgb(249, 120, 30);text-align: center;"><p><strong>05</strong></p></section></section><section style="display: inline-block;vertical-align: bottom;width: 90%;border-width: 0px;height: auto;padding-left: 10px;align-self: flex-end;flex: 0 0 auto;"><section style=""><section style="display: inline-block;min-width: 10%;vertical-align: top;"><section style="text-align: right;margin-right: 0%;margin-bottom: -5px;margin-left: 0%;"><section style="display: inline-block;width: 189px;height: 31px;vertical-align: top;overflow: hidden;"><svg viewbox="0 0 1 1" style="float:left;line-height:0;width:0;vertical-align:top;"></svg></section></section><section style="text-align: justify;"><p style="text-wrap: wrap;"><strong>配置Oracle LISTENER/TNSNAME</strong></p></section></section></section></section></section></section><section style="text-indent: 2em;margin-bottom: 16px;line-height: 1.75em;"><span style="font-size: 15px;letter-spacing: 1px;text-indent: 2em;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;"></span></section><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="ruby"><code><span class="code-snippet_outer">cd&nbsp;\)ORACLE_HOME/network/admin n&nbsp;&nbsp;listener.ora LISTENER_HS&nbsp;= &nbsp;&nbsp;(DESCRIPTION_LIST&nbsp;= &nbsp;&nbsp;&nbsp;&nbsp;(DESCRIPTION&nbsp;= &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ADDRESS&nbsp;=&nbsp;(PROTOCOL&nbsp;=&nbsp;TCP)(HOST&nbsp;=&nbsp;127.0.0.1)(PORT&nbsp;=&nbsp;1567)) &nbsp;&nbsp;&nbsp;&nbsp;) &nbsp;&nbsp;) SID_LIST_LISTENER_HS= &nbsp;&nbsp;(SID_LIST= &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(SID_DESC= &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(SID_NAME=mogdb) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ENV=“LD_LIBRARY_PATH=/u01/app/oracle/product/19c/dbhome_1/hs/odbc”) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(PROGRAM=dg4odbc) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(SID_DESC= &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(SID_NAME=mogdb2) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ENV=“LD_LIBRARY_PATH=/u01/app/oracle/product/19c/dbhome_1/hs/odbc&nbsp;”) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(PROGRAM=dg4odbc) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) &nbsp;&nbsp;)
/o:p
其中: /o:p
  • LISTENER_HS为监听名字,可随意选择 /o:p
  • 1567为端口号,可随意选择,不重复即可 /o:p
  • mogdb/mogdb2为透明网关SID, 理论上可随意选择(不超过8位,不以数字开头) /o:p
  • /u01/app/oracle/product/19c/dbhome_1 为ORACLE_HOME,根据实际情况做相应改动即可 /o:p
可支持一个监听负责多个数据库,通过多个SID_DESC实现; /o:p
也可以把SID_DESC加到现有的LISTENER当中,实现默认LISTENER同时监听普通连接和透明网关连接。 /o:p
n&nbsp;&nbsp;tnsnames.oramogdbtns&nbsp;=&nbsp;&nbsp;(DESCRIPTION=&nbsp;&nbsp;&nbsp;&nbsp;(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1567))&nbsp;&nbsp;&nbsp;&nbsp;(CONNECT_DATA=(SID=mogdb))&nbsp;&nbsp;&nbsp;&nbsp;(HS=OK)&nbsp;&nbsp;)Mogdb2tns&nbsp;=&nbsp;&nbsp;(DESCRIPTION=&nbsp;&nbsp;&nbsp;&nbsp;(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1567))&nbsp;&nbsp;&nbsp;&nbsp;(CONNECT_DATA=(SID=mogdb2))&nbsp;&nbsp;&nbsp;&nbsp;(HS=OK)&nbsp;&nbsp;)

讯享网
/o:p
其中: /o:p
  • mogdbtns为TNS名字,可随意选择 /o:p
  • 1567为端口号,对应listener内容 /o:p
  • mogdb为透明网关SID, 对应listener内容 /o:p
如果连接多个数据库,则需要建立多个tnsname。 /o:p

06

配置 ODBC.ini

目录和文件名其实可任选,为了方便管理,建议 \(ORACLE_HOME/hs/admin:</span></section><section style="text-indent: 2em;margin-bottom: 16px;line-height: 1.75em;"><span style="font-size: 15px;letter-spacing: 1px;"></span></section><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="makefile"><code><span class="code-snippet_outer">cd&nbsp;\)ORACLE_HOME/hs/admin vi&nbsp;odbc.ini [MOGDB] Servername=192.168.2.131 Port=10086 Database=postgres Driver=/u01/app/oracle/product/19c/dbhome_1/hs/odbc/psqlodbcw.so Username=tpcc Password=tpcc@123 [MOGDB2] Servername=192.168.2.131 Port=10199 Database=postgres Driver=/u01/app/oracle/product/19c/dbhome_1/hs/odbc/psqlodbcw.so Username=tpcc Password=tpcc@123
/o:p
其中: /o:p
  • MOGDB/MOGDB2为ODBC的数据源名称,可任选 /o:p
  • Driver为ODBC驱动解压目录下的psqlodbcw.so /o:p
  • Servername/Port/ Database/ Username/Password 为目标库相应信息 /o:p

07

配置 hs/admin/init.ora

讯享网cd&nbsp;$ORACLE_HOME/hs/adminvi&nbsp;init&lt;SID&gt;.ora
/o:p
此处SID对应listerner.ora里面的 SID_NAME的定义,如果多个SID_NAME,则需要多份init.ora; /o:p
最核心的几个参数: /o:p
HS_FDS_CONNECT_INFO&nbsp;=&nbsp;MOGDBset&nbsp;ODBCINI&nbsp;=&nbsp;/home/oracle/.odbc.iniHS_FDS_SHAREABLE_NAME&nbsp;=&nbsp;/home/oracle/ogodbc/lib/psqlodbcw.soHS_FDS_QUOTE_IDENTIFIER&nbsp;=&nbsp;FALSEset&nbsp;LowerCaseIdentifier&nbsp;=&nbsp;onHS_FDS_TRACE_LEVEL&nbsp;=&nbsp;1HS_NLS_NCHAR&nbsp;=&nbsp;UCS2&nbsp;&nbsp;
/o:p
其中:
  • HS_FDS_CONNECT_INFO 对应 odbc.ini 里面的数据源名字 /o:p
  • ODBCINI 对应上一步odbc.ini的完整路径及文件名 /o:p
  • HS_FDS_SHAREABLE_NAME 对应odbc.ini的驱动文件 /o:p
  • HS_FDS_QUOTE_IDENTIFIER = FALSE 解决字段名大小写问题 /o:p
  • set LowerCaseIdentifier = on 解决字段名大小写问题 /o:p
  • HS_FDS_TRACE_LEVEL 开始时可以设置大一点,方便Debug, 比如255, 稳定下来可以改为0或者1。 /o:p
  • HS_NLS_NCHAR = UCS2 有时候连接失败需要设置这个参数,应该是字符集不匹配时。 /o:p

08



启动listener并简单测试

讯享网lsnrctl start LISTENER_HS
名字对应listener里的名字: /o:p
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)
/o:p
注意,此处的OK 仅代表LISTENER正常工作,还未和远程数据库****。 /o:p

09

创建dblink

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

10

测试dblink

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

11

遗留问题

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

关于作者

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

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

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

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

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

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


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

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

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

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

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

小讯
上一篇 2025-05-17 22:20
下一篇 2025-05-17 22:50

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/180715.html