通过我的研究,我找不到该问题的重复项(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 Net连接描述符-@(...)
瘦样式服务名称-name@
LDAP语法-@ldap
遗留语法-oci:path/@
TMSNames别名-@name


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

但是您发现URL中有cndc参数。这实际上有99.9%的可能是@ldap数据源。

带有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。

参考文献:


Database JDBC Developer's Guide and ReferenceData Sources and URLs

关于java - 反向工程师JDBC Oracle连接字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57642119/

10-16 19:02