如何判断Oracle 19C传统审计是否记录登录及配置方法
解决Oracle 19C传统审计下成功登录记录缺失及代理追踪问题
一、排查成功登录审计未生成的原因
1. 检查传统审计核心参数
首先确认audit_trail参数设置,传统审计需设置为DB或DB,EXTENDED(后者会记录代理会话ID等细节):
SHOW PARAMETER audit_trail;
- 若值为
OS:成功登录记录会存放在audit_file_dest指定的操作系统目录中,需到对应路径查看日志文件; - 若值为
NONE:审计功能完全关闭,需修改参数并重启数据库:
ALTER SYSTEM SET audit_trail=DB,EXTENDED SCOPE=SPFILE; -- 执行后重启数据库生效
2. 显式开启会话审计
传统审计默认不自动记录所有成功登录,需执行以下命令开启:
-- 审计所有用户的成功/失败登录、注销操作 AUDIT SESSION WHENEVER SUCCESSFUL; AUDIT SESSION WHENEVER NOT SUCCESSFUL;
该命令立即生效,仅对执行后的新会话产生审计记录。
3. 确认查询权限
确保当前查询DBA_AUDIT_TRAIL的用户拥有SELECT ANY DICTIONARY或AUDIT_ADMIN权限,否则可能无法查看完整审计数据:
GRANT SELECT ANY DICTIONARY TO your_user;
二、追踪代理认证的proxy_sessionid
要捕获代理登录的关联信息,需补充以下配置:
- 审计代理连接操作:
-- 审计用户通过代理登录的行为 AUDIT PROXY CONNECT ANY USER;
- 确保
audit_trail=DB,EXTENDED:仅该模式会记录proxy_sessionid字段; - 查询代理相关审计记录:
SELECT username, proxy_sessionid, os_username, terminal, timestamp, action_name FROM DBA_AUDIT_TRAIL WHERE action_name IN ('LOGON', 'PROXY CONNECT') ORDER BY timestamp DESC;
其中PROXY CONNECT对应代理登录动作,proxy_sessionid会关联发起代理的用户会话ID,结合LOGON记录可完整追踪代理链路。
三、额外排查点
- 检查
audit_sys_operations:若该参数为TRUE,sys用户的登录记录会写入操作系统审计文件,而非DBA_AUDIT_TRAIL; - 确认审计表空间状态:若表空间已满,审计记录无法写入数据库;
- RAC环境需统一各节点审计参数,OS审计模式下需分别查看各节点的日志文件。
内容的提问来源于stack exchange,提问作者SeanGaff
相关产品推荐
相关产品推荐

