使用 Oracle 11g 客户端连接到 Oracle 19C 服务器

Posted

技术标签:

【中文标题】使用 Oracle 11g 客户端连接到 Oracle 19C 服务器【英文标题】:Connecting to Oracle19C Server using Oracle11g client 【发布时间】:2021-03-02 07:43:33 【问题描述】:

全部

我正在尝试连接到 Oracle 19C 数据库。我安装了两个 Oracle 客户端(11g 和 12c),因为我们需要支持遗留程序。我可以通过 12c 客户端与任何使用 sqlplus 的用户毫无问题地连接。但是,如果我对任何用户使用 11g (11.2.0) 客户端。我总是得到:

ERROR:
ORA-01017: invalid username/password; logon denied

两个客户端都有完全相同的 sqlnet.ora 和 tnsnames.ora 文件,因此两个客户端都指向同一个数据库。

有什么想法吗?我需要在 19c 服务器中设置一些特定的配置吗?还是我需要在 11g 客户端中进行一些更改?这甚至可能吗?

谢谢。

【问题讨论】:

或许可以看看SQL Net协议设置docs.oracle.com/en/database/oracle/oracle-database/18/spmsu/… 不要忘记,让您的数据库服务器兼容 11g 密码本质上是回滚 Oracle 为您实施的安全改进。如果您确实像 Connor 建议的那样调整 sql net 参数,您应该检查您需要登录的用户是否将 11g 密码哈希存储在数据库中 - dba_users 有一个您应该检查的 password_versions 列,如果它不包含足够旧的版本,那么您需要在更改 sqlnet 参数并连接新会话后重置密码。 我的 19c 实例在服务器端的 sqlnet.ora 文件已经有: SQLNET.AUTHENTICATION_SERVICES= (NTS) NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT) SQLNET.ALLOWED_LOGON_VERSION_SERVER=11 并且 dba_users 列包含: SQL> select USERNAME,ACCOUNT_STATUS,PASSWORD_VERSIONS from dba_users where username like 'user%';用户名 - - - - - - - - - - - - - - - - - - - - - - - - - ------------------------------- ACCOUNT_STATUS PASSWORD_VERSIONS user1 OPEN 11G 12C 您的 11.2.0 客户端必须至少修补到 11.2.0.3 或 11.2.0.4。少的东西不兼容 19c 服务器。 【参考方案1】:

看看Client / Server Interoperability Support Matrix for Different Oracle Versions (Doc ID 207303.1)

#9 - 仅限 11.2.0.3 或 11.2.0.4。对于 Oracle 自治事务处理和 Oracle 自治数据仓库,还有其他限制,11.2.0.4 是受支持的最低客户端版本。

通常安装多个 Oracle 客户端(即 32 位和 64 位各一个)是个坏主意。

对于某些组件,例如“Oracle OleDB Provider”甚至不可能只安装一个版本(同样,32 位和 64 位各一个)。这是旧 Windows COM 架构的限制。

对于其他组件,它可能会起作用,但是您需要相应地设置您的 %PATH% 环境变量,使其指向安装当前所需版本的正确文件夹。

【讨论】:

以上是关于使用 Oracle 11g 客户端连接到 Oracle 19C 服务器的主要内容,如果未能解决你的问题,请参考以下文章

通过 java 从网络机器连接到 Oracle 11g 失败

navicat premium怎么连接oracle 11g数据库

使用 ODBC 和用户输入连接字符串在 C# 应用程序中连接到 Oracle 11g

如何将 Laravel 8 连接到 oracle 11g 数据库?

Oracle forms 11g 可以连接到 DB2 或 SQL Server 吗?

无法连接到Oracle Database 11g Express Edition