DataGrip 2025.2 Help

无法通过 OCI 连接到 Oracle

如果无法通过 OCI 连接到 Oracle 数据库,请尝试以下方法解决问题:

  1. 确保版本兼容。

  2. 检查文件和环境。

检查版本兼容性

在不同机器上安装

当 Oracle Instant Client 安装在不同的机器上时,Oracle Instant Client 和 Oracle Server 的版本可能不同。 例如,Oracle Client 19.x 可以成功连接到 Oracle Server 11.2。 但 JDBC 驱动程序的版本必须与 Oracle Instant Client 的版本相同。 否则,您将看到类似 Native library cannot be loadedIncompatible version of libocijdbc 的错误。

例如,考虑以下 Oracle 设置:

  • Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

  • Oracle Instant Client 19.8.0.0

如果我们使用 Oracle 驱动程序 19.3.0.0,将会出现 Incompatible version of libocijdbc。 但如果我们切换到 Oracle 驱动程序 19.8.0.0,连接将会成功。 请参考以下动画。

Incompatible version of libocijdbc

在同一台机器上安装

当 Oracle Instant Client 安装在与 Oracle Server 相同的机器上时,JDBC 驱动程序使用本地库连接到 Oracle Server。 而这个本地库是 Oracle Server 软件的一部分。 因此,JDBC 驱动程序的版本必须与 Oracle Server 的版本相同。

汇总表

不同机器

同一台机器

Oracle Instant Client 和 Server 的版本

可能不同

将会相同(因为 Oracle Instant Client 是 Oracle Server 软件的一部分)

JDBC 驱动程序的版本

与 Oracle Instant Client 相同

与 Oracle Server 的版本相同

检查版本

  1. 要在 DataGrip 中查找 JDBC 驱动程序版本,请执行以下操作:

    1. 数据源和驱动程序 对话框(Ctrl+Alt+Shift+S )中,选择数据源并单击 驱动程序 列表,然后选择 转到驱动程序 以访问对话框的 驱动程序 选项卡。

    2. 驱动程序 选项卡中,在 驱动程序文件 面板中找到 JDBC 驱动程序版本。

    有关配置驱动程序的更多信息,请参阅 为现有数据源配置 JDBC 驱动程序

  2. 检查 Oracle Instant Client 和 Server 的版本。

文件和环境变量

要求

需要以下 OCI 包:

  1. 基础包

  2. SQL*Plus 包

  3. JDBC 补充包

可以从 oracle.com 上的 Oracle Instant Client 下载页面 下载适用于您的操作系统的包。

步骤 1。 检查解压的文件

从下载的包中提取的所有文件必须位于同一目录中。

  • 找到包含解压后 Instant Client 文件的目录(例如, ~/Oracle/instantclient_19_8/ ),并确保没有文件丢失。

  1. 找到包含 Instant Client 文件的目录(例如, ~/Oracle/instantclient_19_8/ )。

  2. 确保没有文件丢失。

  3. 确保 oraclepki.jar 位于该目录中。

  4. 确保 wallet 文件位于 钱包 目录中的 网络 目录内。 wallet 文件的路径可能如下所示: ~/Oracle/instantclient_19_8/network/wallet

    wallet 文件路径

步骤 2。 (可选)检查环境变量

这是可选的。 设置环境变量后,您可以使用 sqlplus 工具连接到 Oracle 实例。 请注意,这些设置仅适用于当前命令提示符会话。

  • 检查以下环境变量:

    export ORACLE_HOME=~/Oracle/instantclient_19_8
    export TNS_ADMIN=$ORACLE_HOME/network/admin
    export NLS_LANG=English_America.UTF8
    export PATH=$PATH:$ORACLE_HOME
    set ORACLE_HOME=C:\Oracle\instantclient_19_8
    set TNS_ADMIN=%ORACLE_HOME%\network\admin
    set NLS_LANG=English_America.UTF8
    set PATH=%PATH%:%ORACLE_HOME%

步骤 3。 验证 ORA 文件配置

确保 tnsnames.ora 文件是通过以下方法组成的:

  1. 文件的位置应如下所示: <directory_with_extracted_files>/network/admin directory_with_extracted_files步骤 1 中检查。

    例如, ~/Oracle/instantclient_19_8/network/admin

  2. tnsnames.ora 文件应具有以下结构:

    MyTNSAlias = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = db.my.domain.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = my_service.my.domain.com) ) )

    请参考以下文件示例:

    # tnsnames.ora Network Configuration File: /Users/jetbrains/Oracle/instantclient_19_8/network/admin/tnsnames.ora # Generated by Oracle configuration tools. MyTNSAlias = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) HOST = my_host.jetbrains.com) (PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = datagrip.jetbrains.com) ) ) AnotherAlias = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = another_host.jetbrains.com) (PORT = 1521))

tnsnames.ora sqlnet.ora 文件包含在一个包含 wallet 文件的 ZIP 压缩包中。 有关下载钱包的更多信息,请参阅 在 docs.oracle.com 上的 Download Client Credentials (Wallets)

  1. 文件位置应如下所示 ~/Oracle/instantclient_19_8/network/admin

  2. admin 目录中打开 sqlnet.ora 文件,并确保 DIRECTORY 属性的值是 wallet 的路径。 在我们的案例中,路径如下所示:

    WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/Users/jetbrains/Oracle/instantclient_19_8/network/wallet"))) SSL_SERVER_DN_MATCH=yes

    请参考以下 admin 目录和配置文件的截图。

    配置 TNS 文件
最后修改日期: 2025年 9月 26日