Oracle 19c默认不审计密码修改操作,必须显式执行AUDIT ALTER USER WHENEVER SUCCESSFUL;并验证dba_stmt_audit_opts中SUCCESS='YES',启用后才可通过dba_audit_trail中action_name='ALTER USER'且sql_text LIKE '%IDENTIFIED%'定位执行人、时间及目标用户。

Oracle 19c本身不记录“谁改了谁的密码”这一操作的明细日志——ALTER USER ... IDENTIFIED BY这类语句不会自动写入审计视图(如dba_audit_trail),除非你**提前启用了对应审计策略**。没开审计,就基本查不到;开了,才能从源头定位。
确认是否启用了密码修改审计
这是排查的前提。Oracle默认不审计密码修改行为,必须显式开启:
-
AUDIT ALTER USER BY ACCESS;—— 审计所有ALTER USER语句(含密码、PROFILE、表空间等变更) -
AUDIT ALTER USER WHENEVER SUCCESSFUL;—— 只审计成功执行的修改(推荐,减少噪音)
执行后,检查是否生效:
SELECT audit_option, success, failure FROM dba_stmt_audit_opts WHERE audit_option = 'ALTER USER';
若返回空或SUCCESS='NO',说明审计未启用,后续所有查询都无意义。
从DBA_AUDIT_TRAIL中提取密码修改记录
审计开启后,密码修改会作为ALTER USER语句出现在dba_audit_trail中,但需结合SQL文本判断是否为密码操作:
- 过滤条件必须包含:
action_name = 'ALTER USER'且sql_text LIKE '%IDENTIFIED%' - 关键字段:
timestamp(何时)、username(谁执行的命令)、os_username(操作系统用户)、userhost(来源主机)、sql_text(完整语句,可看到目标用户名) - 示例查询:
SELECT timestamp, username, os_username, userhost, sql_text FROM dba_audit_trail WHERE action_name = 'ALTER USER' AND sql_text LIKE '%IDENTIFIED%' AND sql_text LIKE '%scott%' -- 替换为目标用户名 ORDER BY timestamp DESC;
注意:sql_text可能被截断(取决于audit_trail参数设置),且不区分大小写;如果只看到ALTER USER scott ...而没出现IDENTIFIED,可能是用了IDENTIFIED BY VALUES方式,仍算密码修改。
没开审计时的补救线索:查SPARE4变更时间(仅限19c)
虽然Oracle不记“谁改的”,但它会在sys.user$里更新密码哈希字段SPARE4。这个字段的更新时间虽不精确到秒,但能锁定大致窗口:
- 查当前
SPARE4值和最后修改时间(需SYS权限):
SELECT name, SPARE4, ctime, mtime FROM sys.user$ WHERE name = 'SCOTT';
ctime是用户创建时间,mtime是最近一次元数据变更时间(包括密码重置)。如果mtime明显晚于预期,说明密码近期被改过;再结合v$archived_log和LogMiner,可尝试挖掘该时间段内的ALTER USER语句(前提是归档日志未被覆盖)。
但这条路极难走通:LogMiner解析出的DML/DDL不带执行者信息,sql_redo里只有ALTER USER ...,没有os_username或IP。所以mtime只能帮你确认“是否被改过”,无法回答“谁改的”。
为什么ORA-01017登录失败不能反推密码修改人
有人试图从大量ORA-01017错误日志倒推谁在试密码,这是误区:
-
ORA-01017只表示“用户名/密码不匹配”,不区分是输错、密码已过期、还是账户被锁;它不记录失败尝试的源IP或OS用户(除非额外配置了unified auditing并开启FAILED_LOGIN_ATTEMPTS) - 即使查
dba_audit_session,失败登录记录也只存returncode=1017,字段有限,无法关联到后续成功的密码修改操作 - 真正有效的线索永远只有一条:审计必须提前打开,且策略要具体到
ALTER USER
生产库上线前没配审计,事后就只能靠运维日志、堡垒机操作记录或应用层审计兜底——数据库自身在19c里不提供回溯密码修改责任人的能力。











