【问题标题】:Set oracle user password expiry/grace period设置 oracle 用户密码到期/宽限期
【发布时间】:2014-07-14 15:18:00
【问题描述】:

我有一个应用程序将其数据存储在 Oracle 11g Express Edition 数据库中。当 Oracle 用户密码开始过期(进入宽限期)时,应用程序抛出异常 (ORA-28002) 并停止工作。我需要想办法让应用程序在此期间保持运行并通知管理员,以便在密码过期之前更改密码。

然而我真正的问题是,我需要在宽限期内设置我的数据库用户,这样我就可以对我的应用程序进行编程和测试,看看我的代码是否有效。我试图更改 dba_users 中的到期日期,但我没有执行此操作所需的权限。我什至不确定这是不是正确的方法。

我可以做些什么来让数据库服务器认为我的用户帐户即将到期,以便我可以编写代码来处理该事件?

【问题讨论】:

    标签: oracle


    【解决方案1】:

    您需要在数据库级别执行此操作的权限。普通用户甚至不能明确锁定或过期他自己的帐户。 (如果你的个人资料是这样设置的,你可以故意使用错误的密码来锁定它)

    我知道使您的用户过期的唯一其他方法(没有数据库级命令)是通过将时钟向前设置来欺骗数据库。

    如果您没有 DBA 权限,则您不太可能拥有更改系统时钟的权限。

    我试图更改 dba_users 中的到期日期,但我没有 执行此操作所需的权限。我什至不确定这是正确的 接近。

    不,不要更改 DBA_USERS。您需要使用“ALTER PROFILE”命令更改默认配置文件的 PASSWORD_GRACE_TIME。所有相关的更改都需要 ALTER PROFILE 系统权限才能执行此操作。因此,没有 DBA 权限,您将无法做到。

    【讨论】:

      【解决方案2】:

      查看 USER_USERS

      它将为您提供登录用户自己的到期日期,以便您的应用程序可以在帐户到期之前警告用户。

      【讨论】:

        【解决方案3】:

        已解决: 不知何故,我的数据库管理员将用户配置文件从 DEFAULT 更改为 EXPIREPROFILE。然后我修改了配置文件的密码生命周期和宽限期:

        ALTER PROFILE EXPIREPROFILE LIMIT PASSWORD_LIFE_TIME 1;
        ALTER PROFILE EXPIREPROFILE LIMIT PASSWORD_GRACE_TIME 21;
        

        我的帐户已过期并更改了密码。当我查看 dba_users 时,密码到期日期是明天。但在那之后帐户并没有立即过期,而是进入了 21 天的宽限期。

        现在我可以编写代码来处理这种特定情况并对其进行测试。谢谢大家的帮助:)

        【讨论】:

          猜你喜欢
          • 2011-10-07
          • 1970-01-01
          • 2010-12-18
          • 1970-01-01
          • 2020-08-18
          • 2020-07-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多