错误“ORA-01017:用户名/密码无效;尝试使用OCCI和GCC连接到Oracle数据库时出现“logon denied

x7yiwoj4  于 2023-08-06  发布在  Oracle
关注(0)|答案(1)|浏览(179)

这是我们使用GCC连接到Oracle数据库时遇到的问题。目前,客户端和服务器都运行在相同的环境中,即运行RHEL 8。我们正在将操作系统从CentOS 7迁移到RHEL 8,并且相同的应用程序代码在CentOS 7下运行时成功连接并查询数据库。
下面是应用程序代码:

#include <occi.h>

if (!oracleEnvironment) oracleEnvironment = oracle::occi::Environment::createEnvironment();
oracle::occi::Connection *databaseConnection = oracleEnvironment-createConnection("our_username", "our_password");

字符串
我们知道我们正在使用的用户名和密码是正确的(尽管在我发布在这里的代码示例中它们被修改了),因为我们已经通过在同一台机器上运行sqlplus并使用该用户名和密码进行连接来验证了这一点。
因此,当我们在CentOS 7和gcc 10.2.1下运行时,它工作得很好。但是在RHEL 8和gcc 10.3.1下,它没有,我们得到了Oracle错误。有时我们也会得到错误“ORA-24960:属性OCI_ATTR_USERNAME大于允许的最大长度255”,而不是无效的用户名/密码错误。但同样,这在CentOS 7下工作正常,但在RHEL 8下则不行。
我怀疑ORA-01017错误和ORA-24960错误是相关的,或者可能有相同的根本原因,因为我发现以下问题的答案都建议相同的解决方案,即更改GCC标志_GLIBCXX_USE_CXX11_ABI的值:

然而,我尝试更改该标志并重建我的应用程序,我仍然遇到了同样的问题。
前两个问题的答案似乎表明当前版本的GCC(可能是从GCC 7开始)与当前版本的Oracle OCCI不兼容。但GCC 7已经可用了6年多。那么,事实是否如此呢?

7gcisfzg

7gcisfzg1#

@ChristopherJones在对这个问题的评论中建议,我应该查看Oracle的文档,看看Oracle说什么版本的GCC与我的Oracle软件版本兼容。我最终从Oracle找到了这个,它说:
注意:对于使用g5.3、g6.3、g7.3和g8而不是libocci.so.21.1库的Linux-x86-64上的OCCI应用程序,请链接到$ORACLE_HOME/lib/libocci_gcc53.so.21.1库。
所以,链接到这个备用库似乎解决了这个问题

相关问题