如何从 DataGrip 连接到 Oracle Cloud 中的 Oracle 21c

mad*_*ead 1 oracle datagrip oracle-cloud-infrastructure oracle21c

我在 Oracle Cloud 中创建了一个自治事务处理数据库。周围没有现成的 JDBC 链接,但有“钱包”。有实例钱包和区域钱包。Oracle 表示应使用其中之一(最好是实例钱包)来连接到该数据库实例。

钱包是一个 ZIP 文件,里面有十几个文件。我已经下载了一个实例钱包并将其解压缩。现在我尝试将 DataGrip 连接到此实例。

DataGrip 中有一个连接类型,钱包中TNS有一个著名的连接类型,所以我想我应该使用它们。连接类型接受一个参数,我猜它是该钱包的目录。钱包中列出了一些服务名称,AFAIU,它们的优先级不同,例如一个用于低优先级查询,另一个用于中优先级查询,一个用于最高优先级问题。我可以接受中等优先级,所以我这样做了:tnsnames.oraTNSTNSADMINtnsnames.ora

没有运气

如您所见,我收到错误:

[08006][17002] IO Error: The Network Adapter could not establish the connection
SSO KeyStore not available.
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索了一下,但这个话题似乎很复杂。Oracle有很多连接参数以及连接过程中涉及的证书,我真的很新,我只想连接到这个实例。为什么它应该如此复杂?我可以直接在 DataGrip 中使用这个钱包吗?

mad*_*ead 5

看来我做的一切都是正确的,唯一的问题实际上是驱动程序版本。

截至今天(2021 年 2 月 2 日),DataGrip 中最新可用的 Oracle 驱动程序版本为 19.8.0.0:

最新可用的 Oracle 驱动程序版本

为了解决这个问题,我刚刚在 DataGrip 中创建了另一个 Oracle 驱动程序并手动提供了最新的 JAR:

  1. 转到Oracle Database 21c (21.1) JDBC 驱动程序和 UCP 下载
  2. 下载与您的 Java 版本相对应的 ZIPped JDBC 驱动程序和配套 JAR:8 或 11。或者仅下载 Java 8 的版本 ( ojdbc8-full.tar.gz)。它应该适用于任何现代 Java。
  3. 在 DataGrip 的驱动程序目录中为您的驱动程序创建新的子目录。类似~/.config/JetBrains/DataGrip2020.3/jdbc-drivers/Oracle/21.1Linix 的东西。
  4. 将驱动程序解压缩到该目录中。
  5. 在 DataGrip 中配置新驱动程序。只需克隆现有的 Oracle 驱动程序并将“驱动程序文件”替换为 ZIP 中的驱动程序文件即可。 Oracle 21 驱动程序
  6. 使用这个新驱动程序连接到实例: 成功!