当前位置:首页 > 站长知识 > 数据库 > 正文内容

oracle数据库开启审计日志功能

2024-11-30数据库32

1 审计功能由参数 audit_trail 进行控制

取值范围及意义如下:

参数取值 说明

  • DB (默认)开启审计功能。

  • OS 将审计记录写入操作系统的一个文件

  • TRUE 开启审计功能。

  • FALSE 关闭审计功能。

  • NONE 关闭审计功能。

2 以 DBA 的身份登陆SQL plus

以下所有命令均在此模式下执行:

1
sqlplus / as sysdba

2.1 查看 audit_trail 的值

1
2
3
4
5
6
7
8
9
SHOW PARAMETER AUDIT
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest                      string      /data/app/oracle/admin/orcl/ad
                                                 ump
audit_sys_operations                 boolean     TRUE
audit_syslog_level                   string
audit_trail                          string      DB

根据查询结果可知

已经开启数据库审计功能

2.2 执行以下语句关闭数据库审计功能

1
ALTER SYSTEM SET AUDIT_TRAIL='NONE' SCOPE=SPFILE;

2.3 重启数据库

1
2
shutdown immediate;
startup;

2.4 验证审计是否已经被关闭

1
2
3
4
5
show parameter audit_trail
 
NAME TYPE VALUE
 
audit_trail string FALSE

说明:

  • VALUE值为FALSE

  • 表面审计功能为关闭的状态

2.5 开启审计功能

1
2
alter system set audit_sys_operations=TRUE scope=spfile;--审计管理用户(以sysdba/sysoper角色登陆)
alter system set audit_trail=db,extended scope=spfile;

最后重启服务即可开启。

2.6 删除审计日志

当已形成很对日志时,可删除里面的记录,目前是直接删除,未对数据库造成影响。

  • 查询目前的日志信息:select * FROM SYS.AUD$;

  • 删除已有的审计信息:DELETE FROM SYS.AUD$;

  • 或者快速删除表信息:truncate table SYS.AUD$;

一般建议部署完oracle后如不用审计功能,即关闭以节省空间。

3 开启特定用户特定表的审计

1
2
3
4
5
6
7
8
select * from dba_audit_object --查看日志是否生成
AUDIT ALL ON "c##zhangsan".TEST2 by ACCESS;设置特定用户特定表审计
AUDIT ALL BY "c##zhangsan" BY ACCESS;
AUDIT ALL ON "c##zhangsan".TEST2;
select * from DBA_OBJ_AUDIT_OPTS  --查询那些用户开户审计功能
AUDIT UPDATE ON SCOTT.EMP;
AUDIT DELETE ON SCOTT.EMP by ACCESS;
AUDIT UPDATE ON ROOT.TEST2;