Win10系统Oracle XE 18日志配置:禁止Windows事件日志记录执行命令
问题背景
运行环境
- 操作系统:Windows 10
- 数据库版本:Oracle XE 18
- 操作权限:可通过普通用户及
sys用户执行数据库命令
问题现象
Windows应用程序事件日志(windows application event log)中存在大量Oracle数据库冗余日志,包含所有用户执行的SELECT语句和操作命令,可在命令提示符执行eventvwr打开Windows事件查看器查看对应日志,示例截图如下:
咨询问题
- 如何配置Oracle,仅允许指定类型的消息写入Windows事件日志,理想状态下不记录任何用户执行的命令?
- Oracle XE是否会写入独立于Windows事件日志的专属日志文件?若存在,如何配置其日志记录粒度?
解答
调整Windows事件日志写入规则
你遇到的全量记录用户SQL的情况,是Oracle审计功能配置不当导致的,按以下步骤操作即可调整:
- 打开命令提示符,用
sys用户以SYSDBA身份登录Oracle:
sqlplus / as sysdba
- 查看当前审计配置:
show parameter audit_trail;
如果返回结果中的VALUE值为os或包含os后缀,说明审计日志会默认写入Windows系统事件日志。
3. 修改审计规则:
- 若完全不需要记录用户操作命令,执行以下命令关闭审计日志输出到系统事件:
alter system set audit_trail=none scope=spfile;
- 若需要保留审计能力但不想写入Windows事件日志,可将审计日志存储到Oracle内部系统表:
alter system set audit_trail=db scope=spfile;
- 重启Oracle实例让配置生效:
shutdown immediate; startup;
Oracle XE独立日志说明
Oracle XE本身自带多套独立日志体系,完全不依赖Windows事件日志,常见日志类型和配置方法如下:
- 告警日志:记录实例启停、核心报错、配置变更等关键事件,不会记录用户执行的SQL,默认路径可通过以下命令查询:
show parameter background_dump_dest;
返回路径下alert_<实例名>.log格式的文件就是告警日志,该日志记录粒度固定,无需额外配置。
- 监听日志:记录所有数据库连接请求,默认路径为Oracle安装目录下的
\product\18.0.0\dbhomeXE\log\diag\tnslsnr\<你的主机名>\listener\trace\listener.log,调整日志级别步骤:
- 命令提示符执行监听控制工具:
lsnrctl - 设置日志级别(可选级别从低到高为:OFF/USER/ADMIN/SUPPORT,级别越高记录内容越细,默认级别为ADMIN):
set log_level ADMIN - 保存配置永久生效:
save_config
- 审计日志:如果之前将
audit_trail设置为db,所有审计内容会存储在SYS.AUD$系统表中,可定期手动清理不需要的历史记录。
内容的提问来源于stack exchange,提问作者Rax
相关产品推荐
相关产品推荐

