反向工程 JDBC Oracle 连接字符串



通过我的研究,我无法找到这个问题的副本(这些答案中都没有包含类似的格式),但如果它已经存在,请将其标记为这样。

我有以下 JDBC 连接字符串连接到 Oracle 数据库,我正在尝试对其进行逆向工程以连接到其他地方,但我不知道哪些组件是服务器,哪些是数据库。

jdbc:oracle:thin:@word1://word2:port/word3,cn=word4,dc=word5,dc=word6

这用于作为 Sqoop 作业的一部分进行连接。用户名和密码是单独提供的,因此我认为这些组件中的任何一个都不是用户名或密码。有人可以帮我映射这些词以及它们的用例是什么吗?

这些是数据库吗?

要对此 URL 进行反向工程,请从@word1开始

。根据 Oracle 文档(请参阅下面的参考资料),jdbc:oracle:thin:后面的 URL 部分是数据源。 有各种不同的数据源类型,下一个第一个组件的语法(包括@如果存在)将决定类型。 该文档列出了以下数据源类型:

  • Oracle 网络连接描述符 -@(...)
  • 瘦式服务名称 -name@
  • LDAP 语法 -@ldap
  • 遗赠语法 -oci:path/@
  • TMSNames 别名 -@name

如果没有更多上下文,则只需阅读文档即可根据数据源类型解码 URL 的其余部分。

但是您已经发现 URL 中有cndc参数。 这使得这实际上是一个@ldap数据源的可能性为 99.9%。

具有 LDAP 数据源的 JDBC URL 的结构为:

jdbc:oracle:thin:@ldap://<host>:<port>/<name>,<ldap context param>...

其中<host><port>用于 LDAP 服务,LDAP 上下文参数是名称=值对的列表,其中应包含cn=OracleContext

这会告知 JDBC 驱动程序在具有给定上下文的 LDAP 服务器中查找<name>,然后使用相关信息建立数据库连接。 我找不到<name>到底是什么的明确参考。 Oracle 文档仅举了一个例子。

我能找到的最好的是:

数据库服务名称

:数据库服务名称告诉驱动程序要连接到哪个数据库。例如,如果数据库名为"dmart",则应输入 dmart 作为数据库服务名称。

(来源:https://razorsql.com/articles/oracle_ldap_jdbc_connect.html)

"@ldap"可以替换为"ldaps:",这意味着基于 SSL 的 LDAP。

引用:

  • 数据库 JDBC 开发人员指南和参考,数据源和 URL

最新更新