java - 逆向工程 JDBC Oracle 连接字符串

标签 java oracle jdbc connection-string sqoop

通过我的研究,我无法找到此问题的重复项( 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 的其余部分。

但你透露有cndc 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/

相关文章:

java - 如何将单词列表拆分为二维字母数组?

java - 编辑 while 循环

java - JUnit 5 缓存管理器初始化数据测试 - 空缓存管理器

oracle - SELECT COUNT(*) 与使用显式游标获取两次

java - 准备语句错误

java - 分层设计中对象创建中的@Assisted\@Provider用法

sql - 如何在 plsql 中搜索 30 分钟间隔?

oracle - odp.net 追踪

java.sql.SQLException : No suitable driver on tomcat 8. 5

java - Tomcat 集成在 Eclipse 数据库连接中