Oracle 19c多租户架构下设置用户密码永不过期及登录锁定策略说明_20260430

在 Oracle 19c 多租户架构中,业务用户通常创建在具体的 PDB 里,而不是 CDB$ROOT 中。因此,查看用户状态、修改密码策略前,必须先进入对应 PDB。否则可能出现"查不到用户"或"改了但没生效"的情况。

一、进入数据库并切换到对应 PDB

先切换到 Oracle 用户,并确认当前实例:

复制代码
su - oracle
echo $ORACLE_SID

如果需要切换实例,例如本次环境使用 UTF8CDB1

复制代码
export ORACLE_SID=UTF8CDB1
sqlplus / as sysdba

进入 SQL*Plus 后,查看当前 CDB 下有哪些 PDB:

复制代码
show pdbs;

示例结果:

复制代码
CON_ID  CON_NAME   OPEN MODE
------  ---------  ----------
3       IETQMS     READ WRITE
5       QMS        READ WRITE

切换到对应 PDB,例如进入 QMS

复制代码
alter session set container=QMS;

确认当前所在容器:

复制代码
show con_name;

如果显示:

复制代码
CON_NAME
------------------------------
QMS

说明已经进入 QMS PDB。后续查询用户、修改 Profile,都只针对当前 PDB 生效。

二、查看用户是否锁定或密码是否过期

复制代码
set lines 200 pages 200
col username for a30
col account_status for a30
col profile for a20
col expiry_date for a20

select
    username,
    account_status,
    profile,
    to_char(expiry_date,'yyyy-mm-dd hh24:mi:ss') expiry_date
from dba_users
where oracle_maintained = 'N'
order by username;

重点看两列:

字段 含义
ACCOUNT_STATUS 用户状态,OPEN 表示正常
EXPIRY_DATE 密码过期时间,空值表示当前不会过期

如果用户状态是 OPEN,并且 EXPIRY_DATE 为空,说明用户当前正常,密码不会因生命周期到期而过期。实际检查中,QMSADMINQMS_ADMIN 等用户状态为 OPEN,且 EXPIRY_DATE 为空,说明密码永不过期已生效。

三、查看 Profile 密码策略

Oracle 用户密码过期和锁定策略由 Profile 控制。常见业务用户一般使用 DEFAULT Profile。

复制代码
set lines 200
col profile for a20
col resource_name for a35
col limit for a30

select profile, resource_name, limit
from dba_profiles
where profile = 'DEFAULT'
  and resource_name in (
    'FAILED_LOGIN_ATTEMPTS',
    'PASSWORD_LOCK_TIME',
    'PASSWORD_LIFE_TIME',
    'PASSWORD_GRACE_TIME'
  )
order by resource_name;

常见推荐结果:

复制代码
FAILED_LOGIN_ATTEMPTS   10
PASSWORD_GRACE_TIME     7
PASSWORD_LIFE_TIME      UNLIMITED
PASSWORD_LOCK_TIME      1

含义如下:

参数 含义
FAILED_LOGIN_ATTEMPTS = 10 连续输错密码 10 次后锁定
PASSWORD_LOCK_TIME = 1 锁定 1 天后自动解锁
PASSWORD_LIFE_TIME = UNLIMITED 密码永不过期
PASSWORD_GRACE_TIME = 7 密码过期宽限期,密码永不过期时基本不触发

四、设置密码永不过期

进入对应 PDB 后执行:

复制代码
alter profile DEFAULT limit PASSWORD_LIFE_TIME unlimited;

如果想一次性整理成推荐策略,可以执行:

复制代码
alter profile DEFAULT limit
    FAILED_LOGIN_ATTEMPTS 10
    PASSWORD_LOCK_TIME 1
    PASSWORD_LIFE_TIME UNLIMITED
    PASSWORD_GRACE_TIME 7;

这套配置的效果是:

复制代码
密码永不过期;
连续输错 10 次会锁定;
锁定 1 天后自动解锁。

五、验证是否生效

查看 Profile:

复制代码
select profile, resource_name, limit
from dba_profiles
where profile = 'DEFAULT'
  and resource_name in (
    'FAILED_LOGIN_ATTEMPTS',
    'PASSWORD_LOCK_TIME',
    'PASSWORD_LIFE_TIME',
    'PASSWORD_GRACE_TIME'
  )
order by resource_name;

确认看到:

复制代码
PASSWORD_LIFE_TIME    UNLIMITED

再查看用户:

复制代码
select
    username,
    account_status,
    profile,
    to_char(expiry_date,'yyyy-mm-dd hh24:mi:ss') expiry_date
from dba_users
where oracle_maintained = 'N'
order by username;

如果业务用户 ACCOUNT_STATUS = OPEN,且 EXPIRY_DATE 为空,就说明密码永不过期已经生效。

六、注意事项

alter profile DEFAULT 只影响当前所在 PDB。比如在 QMS 执行,只影响 QMS;在 IETQMS 执行,只影响 IETQMS。如果有多个 PDB,需要分别切换进去执行:

复制代码
alter session set container=QMS;
alter profile DEFAULT limit PASSWORD_LIFE_TIME unlimited;

alter session set container=IETQMS;
alter profile DEFAULT limit PASSWORD_LIFE_TIME unlimited;

alter session set container=YJXT;
alter profile DEFAULT limit PASSWORD_LIFE_TIME unlimited;

已经处于 EXPIRED & LOCKED 的用户,不会因为修改 Profile 自动变成 OPEN。这类用户大多是 Oracle 组件用户、示例用户或历史遗留用户,生产环境不建议随便解锁。

七、总结

Oracle 用户密码是否过期,不是直接修改 DBA_USERS.EXPIRY_DATE,而是通过 Profile 里的 PASSWORD_LIFE_TIME 控制。

生产环境推荐配置:

复制代码
PASSWORD_LIFE_TIME      UNLIMITED
FAILED_LOGIN_ATTEMPTS   10
PASSWORD_LOCK_TIME      1
PASSWORD_GRACE_TIME     7

应用账号可以设置密码永不过期,但失败登录锁定策略不要关闭。业务要稳,安全的门栓也要留着。

相关推荐
2401_834636991 小时前
Linux 负载均衡全实战:Nginx+HAProxy+LVS 从原理到落地
linux·nginx·负载均衡
鹏大师运维7 小时前
为什么信创电脑装软件总提示“软件包架构不匹配”?
linux·运维·架构·国产化·麒麟·deb·统信uos
007张三丰7 小时前
软件测试专栏(11/20):测试框架开发:pytest深度解析与插件体系
运维·服务器·自动化测试·pytest·测试框架
海南java第二人8 小时前
Nebula Graph 实战:基于图数据库存储 CMDB 实体关系
数据库·图数据库·nebula
weixin_604236678 小时前
华三 路由器 极简核心配置
运维·服务器·网络·h3c·h3c路由器
曹牧8 小时前
oracle:“not all variables bound”
数据库·oracle
数据库百宝箱8 小时前
Oracle RMAN Image Copy 本地恢复
数据库·oracle
鹤落晴春8 小时前
【Linux复习】管理SELinux安全性
linux·运维·服务器
yz_aiks9 小时前
Linux Jar包配置Systemd自启动实战:从排查到配置全流程
linux·python·jar·自启动·systemd
AI智图坊9 小时前
多件装组合SKU图的批量生产效率分析:从PS手工到AI自动化的工作流改造
大数据·运维·人工智能·gpt·ai作画·自动化·aigc