通过我的研究,我无法找到这个问题的副本(这些答案中都没有包含类似的格式),但如果它已经存在,请将其标记为这样。
我有以下 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 中有cn
和dc
参数。 这使得这实际上是一个@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