You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle 12c执行CREATE PROFILE语句遇ORA-02376错误求助

解决Oracle 12.1中CREATE PROFILE的ORA-02376错误

问题原因

你遇到的ORA-02376: invalid or redundant resource错误,是因为CREATE PROFILE语句中使用了INACTIVE_ACCOUNT_TIME参数——这个参数是Oracle 12c R2(12.2.0.1及以上版本)才新增的资源限制项,而你的数据库版本是12.1.0.2.0,不支持该参数,因此被判定为无效资源。

解决方案

方案1:修改CREATE PROFILE语句

直接移除语句中的INACTIVE_ACCOUNT_TIME 3024000部分,修改后的可执行语句如下:

CREATE PROFILE "ORA_STIG_PROFILE" LIMIT 
COMPOSITE_LIMIT DEFAULT 
SESSIONS_PER_USER DEFAULT 
CPU_PER_SESSION DEFAULT 
CPU_PER_CALL DEFAULT 
LOGICAL_READS_PER_SESSION DEFAULT 
LOGICAL_READS_PER_CALL DEFAULT 
IDLE_TIME 15 
CONNECT_TIME DEFAULT 
PRIVATE_SGA DEFAULT 
FAILED_LOGIN_ATTEMPTS 3 
PASSWORD_LIFE_TIME 5184000/86400 
PASSWORD_REUSE_TIME 31536000/86400 
PASSWORD_REUSE_MAX 10 
PASSWORD_LOCK_TIME UNLIMITED 
PASSWORD_GRACE_TIME 432000/86400;

方案2:模拟INACTIVE_ACCOUNT_TIME功能(12.1版本)

如果需要实现“闲置账户自动锁定”的功能,12.1版本可以通过定时任务手动实现:

  1. 创建PL/SQL存储过程,检查用户最后登录时间,对超过指定时长未登录的用户执行锁定:
CREATE OR REPLACE PROCEDURE LOCK_INACTIVE_USERS IS
BEGIN
  FOR user_rec IN (
    SELECT username 
    FROM dba_users 
    WHERE last_login <= SYSDATE - (3024000/86400) -- 对应原参数的3024000秒(35天)
      AND account_status = 'OPEN'
      AND username NOT IN ('SYS', 'SYSTEM', 'SYSMAN', 'DBSNMP') -- 排除系统核心用户
  ) LOOP
    EXECUTE IMMEDIATE 'ALTER USER ' || user_rec.username || ' ACCOUNT LOCK';
  END LOOP;
END;
/
  1. 创建定时任务,定期执行上述存储过程(示例为每天凌晨2点执行):
BEGIN
  DBMS_SCHEDULER.CREATE_JOB(
    job_name        => 'LOCK_INACTIVE_USERS_JOB',
    job_type        => 'STORED_PROCEDURE',
    job_action      => 'LOCK_INACTIVE_USERS',
    start_date      => SYSTIMESTAMP,
    repeat_interval => 'FREQ=DAILY;BYHOUR=2;BYMINUTE=0;BYSECOND=0',
    enabled         => TRUE,
    comments        => 'Lock users who have not logged in for 35 days'
  );
END;
/

内容的提问来源于stack exchange,提问作者ddelafuente

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 08:10:20