通过我的研究,我找不到该问题的重复项(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中有cn
和dc
参数。这实际上有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 Reference,Data Sources and URLs
关于java - 反向工程师JDBC Oracle连接字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57642119/