通过我的研究,我无法找到此问题的重复项( these answers 中的任何一个都不包含类似的格式),但如果它已经存在,请对其进行标记。
我有以下 JDBC 连接字符串来连接到 Oracle 数据库,我正尝试对其进行逆向工程以在其他地方连接,但我不知道哪些组件是服务器,哪些是数据库。
jdbc:oracle:thin:@word1://word2:port/word3,cn=word4,dc=word5,dc=word6
这用于作为 Sqoop 作业的一部分进行连接。用户名和密码是单独提供的,因此我不相信这些组件中的任何一个都是用户名或密码。有人可以帮我映射这些词及其用例吗?
这些都是数据库吗?
最佳答案
要对该 URL 进行反向工程,您可以从 @word1
开始.
根据 Oracle 文档(请参阅下面的引用资料),URL 中 jdbc:oracle:thin:
后面的部分是数据源。有多种不同的数据源类型,下一个第一个组件的语法(包括 @
如果存在)将确定类型。该文档列出了以下数据源类型:
- Oracle Net 连接描述符 -
@(...)
- 精简服务名称 -
name@
- LDAP 语法 -
@ldap
- 遗赠语法 -
oci:path/@
- TMSNames 别名 -
@name
如果没有更多上下文,您只需阅读文档即可根据数据源类型解码 URL 的其余部分。
但你透露有cn
和dc
URL 中的参数。这使得 99.9% 的可能性这实际上是 @ldap
数据源。
带有 LDAP 数据源的 JDBC URL 的结构是:
jdbc:oracle:thin:@ldap://<host>:<port>/<name>,<ldap context param>...
哪里<host>
和<port>
用于 LDAP 服务,LDAP 上下文参数是名称=值对的列表,其中应包括 cn=OracleContext
。
这告诉 JDBC 驱动程序查找 <name>
在具有给定上下文的 LDAP 服务器中,然后使用关联信息建立数据库连接。我找不到关于 <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。
引用文献:
关于java - 逆向工程 JDBC Oracle 连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57642119/