gpt4 book ai didi

c++ - 宽限期内的 OCILogon - ORA-28002

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:37:29 27 4
gpt4 key购买 nike

当我使用 SQL*Plus 连接到密码进入宽限期的用户(Oracle 11g、Oracle 8i)时,出现错误消息但连接仍然成功:

SQL*Plus:

=====================================

SQL> connect gumiplesku
Enter password:
ERROR:
ORA-28002: the password will expire within 7 days


Connected.
SQL> select User from dual;


USER

======================================

gumiplesku

=====================================

另一方面,在我的 C++ OCI 代码中执行 OCILogon2,如果我尝试连接同一个用户,我会得到一个 OCI_ SUCCESS_ WITH_ INFO “错误”,但如果我继续,我得到的 OCISvcCtx* 似乎无效(即使它不为空),因为尝试执行 OCIAttrGet OCIStmtExecute 给我一个 OCI_INVALID_HANDLE 错误。

用户应该在他的所有宽限期内成功连接到数据库,直到他的密码完全过期。那么,当我得到一个错误的句柄时,SQL*Plus 怎么可以正常连接呢?我应该尝试以不同的方式连接吗?

非常感谢。

最佳答案

这有点超出我的经验,但由于没有人回答我会试一试。

我记得您可以安装某种错误处理程序回调。由于您可以通过 OCIErrorGet (?) 获取错误信息,我假设它触发了正常的错误处理机制。是否有可能有一个错误处理程序在发生“错误”时关闭连接而不检查这种特殊情况?

这也让我想起很久以前遇到的一个问题,如果您将错误的句柄类型传递给 OCI 函数,它们可能会以奇怪的方式失败。查看 OCIErrorGet 文档,可能是您传入了 OCI_HTYPE_ERROR 和一个环境句柄,或者 OCI_HTYPE_ENV 和一个错误句柄.

您是否多次调用 OCIErrorGet? Oracle 可以生成多个错误,也许您必须在继续之前检索所有错误?但这似乎并不合理。

除了那些远景,我会尝试一个简单的 OCI example或来自 Oracle 的任何示例代码,看看它是否有相同的问题。如果不是,则回溯找出造成差异的原因。

关于c++ - 宽限期内的 OCILogon - ORA-28002,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1121718/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com