逆向工程师 JDBC Oracle 连接字符串

Reverse Engineer JDBC Oracle Connection String

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

我有以下 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 文档只是举了一个例子。

我能找到的最好的是:

Database Service Name: The database service name tells the driver what database to connect to. For example, if the database is named "dmart", dmart should be entered as the database service name.

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

“@ldap”可以替换为 "ldaps:",表示 LDAP over SSL。

参考文献: