我正在尝试使用 Jetbrains DataGrip 连接到 Oracle 自治数据仓库数据库。Oracle 为我提供了一个钱包文件(一个 zip),其中包含 tnsnames.ora、一个密钥库、ojdbc.properties 和一些其他文件。
我在使用此信息使用 DataGrip 连接到数据库时遇到了很多麻烦。我在 DataGrip 支持论坛上找到了一个帖子,但我也没有运气。
Jetbrains 支持线程:https
://intellij-support.jetbrains.com/hc/en-us/community/posts/360001792539-Connect-with-Oracle-Cloud
相关 Oracle 文档:https ://docs.oracle.com/en /cloud/paas/autonomous-data-warehouse-cloud/adwud/connect-using-client-application.html
我做了什么:
1. 创建“TNS_ADMIN”环境变量并将其设置为:
C:\\Users\\xxx\\Documents\\[folder with wallet files]
2. 将 Oracle JDBC 驱动程序文件(ojdbc8.jar、osdt_cert.jar、oraclepki.jar、osdt_core.jar)添加到 DataGrip 中的标准 Oracle 驱动程序
3. 编辑 'sqlnet.ora' 文件以包含钱包文件的路径
4. 在数据源 VM 选项中添加以下内容:
-Doracle.net.tns_admin=C:\\Users\\xxx\\Documents\\[folder with wallet files]
-Djavax.net.ssl.trustStore=truststore.jks
-Djavax.net.ssl.trustStorePassword=[password]
-Djavax.net.ssl.keyStore=keystore.jks
-Djavax.net.ssl.keyStorePassword=[password]
-Doracle.net.ssl_server_dn_match=true
-Doracle.net.ssl_version=1.2
- 将连接类型设置为仅 URL
- 在 URL 字段中尝试了不同的连接字符串:
jdbc:oracle:thin:@//adb.eu-frankfurt-1.oraclecloud.com:1522/xxxxxx_adw1_high.adwc.oraclecloud.com?TNS_ADMIN=C:\\Users\\xxx\\Documents\\[folder with wallet files]
jdbc:oracle:thin:@xxxxxx_adw1_high.adwc.oraclecloud.com?TNS_ADMIN=C:\\Users\\xxx\\Documents\\[folder with wallet files]
jdbc:oracle:thin:@//adb.eu-frankfurt-1.oraclecloud.com:1522/mnr6yzqr22jgywm_adw1_high.adwc.oraclecloud.com
结果:
Connection to ADW1 failed.
[08006][17002] IO Error: Got minus one from a read call, connect lapse 32 ms.,
Authentication lapse 0 ms.
我还尝试使用“服务名称”和“TNS”连接类型并填写来自 tnsnames.ora 的信息。没有骰子,同样的错误。
还尝试将 'tcp.validnode_checking' 参数显式设置为 null。
(连接工作正常与 sqldeveloper)
这样做的正确方法是什么?
DataGrip 2021.1 为 Oracle 21.1 JDBC 驱动程序提供所有必需的 jar 文件。
阅读有关使用钱包的 Oracle 连接的DataGrip 帮助。
还有一些额外的Oracle参考资料。