二、审计位置
审计记录可以发送到SYS.AUD$数据库表或操作系统文件。为了启用审计并指定记录审计记录的位置,将初始参数AUDIT_TRAIL 设置为如下几个值之一:
|
NONE, FALSE |
禁用审计 |
|
OS |
启用审计,将审计记录发送到操作系统文件 |
|
DB, TRUE |
启用审计,将审计记录发送到SYS.AUD$表 |
|
DB_EXTENDED |
启用审计,将审计记录发送到SYS.AUD$表,并在CLOB 列SQLBIND 和SQLTEXT 中记录额外的信息 |
|
XML |
启用审计,以XML 格式写所有审计记录 |
|
EXTENDED |
启用审计,在审计跟踪中记录所有列,包括SqlText 和SqlBind 的值 |
参数AUDIT_TRAIL 不是动态的,为了使AUDIT_TRAIL 参数中的改动生效,必须关闭数据库并重新启动。在对SYS.AUD$表进行审计时,应该注意监控该表的大小,以避免影响SYS 表空间中其他对象的空间需求。推荐周期性归档SYS.AUD$中的行,并且截取该表。
在Oracle11g 中CREATE SESSION 作为受审计的权限来被记录,因此当SYSTEM 表空间因磁盘空间而无法扩展时将导致这部分审计记录无法生成,这将最终导致普通用户的新会话将无法正常创建,普通用户将无法登陆数据库。在这种场景中仍可以使用SYSDBA 身份的用户创建会话,在将审计数据合适备份后删除一部分记录,或者TRUNCATE AUD$都可以解决上述问题。在默认情况下会以AUTOEXTEND ON 自动扩展选项创建SYSTEM 表空间,因此系统表空间在必要时会自动增长,我们所需注意的是磁盘上的剩余空间是否能够满足其增长需求,以及数据文件扩展的上限,对于普通的8k smallfile 表空间而言单个数据文件的最大尺寸是32G。
三、开户审计功能
SQL> alter system set audit_trail=db_extended scope=spfile;
重启数据库生效:
SQL> startup force
四、语句审计:
对于语句审计,audit 命令的格式看起来如下所示:
AUDIT sql_statement_clause BY {SESSION |ACCESS}WHENEVER [NOT] SUCCESSFUL;
参数如下:
sql_statement_clause 包含很多条不同的信息,例如希望审计的SQL 语句类型以及审计什么人。
by access 在每次动作发生时都对其进行审计,by session 只审计一次。默认是by session。
whenever successful 审计成功的动作:没有生成错误消息的语句。
whenever not successful 审计语句的命令是否失败
对于大多数类别的审计方法,如果确实希望审计所有类型的表访问或某个用户的任何权限,则可以指定all 而不是单个的语句类型或对象。
表1-1 列出了可以审计的语句类型,并且在每个类别中包含了相关语句的简要描述。如果指定all,则审计该列表中的任何语句。然而,表1-2 中的语句类型在启用审计时不属于all 类别;必须在audit 命令中显式地指定它们。
表1-1 包括在ALL 类别中的可审计语句
|
语 句 选 项 |
SQL 操作 |
|
ALTER SYSTEM |
所有ALTER SYSTEM 选项,例如,动态改变实例参 数,切换到下一个日志文件组,以及终止用户会话 |
|
CLUSTER |
CREATE、ALTER、DROP 或TRUNCATE 集群 |
|
CONTEXT |
CREATE CONTEXT 或DROP CONTEXT |
|
DATABASE LINK |
CREATE 或DROP 数据库链接 |
|
DIMENSION |
CREATE、ALTER 或DROP 维数 |
|
DIRECTORY |
CREATE 或DROP 目录 |
|
INDEX |
CREATE、ALTER 或DROP 索引 |
|
MATERIALIZED VIEW |
CREATE、ALTER 或DROP 物化视图 |
|
NOT EXISTS |
由于不存在的引用对象而造成的SQL 语句的失败 |
|
PROCEDURE |
CREATE 或DROP FUNCTION、LIBRARY、PACKAGE、 PACKAGE BODY 或PROCEDURE |
|
PROFILE |
CREATE、ALTER 或DROP 配置文件 |
|
PUBLIC DATABASE LINK |
CREATE 或DROP 公有数据库链接 |
|
PUBLIC SYNONYM |
CREATE 或DROP 公有同义词 |
|
ROLE |
CREATE、ALTER、DROP 或SET 角色 |
|
ROLLBACK |
SEGMENT CREATE、ALTER 或DROP 回滚段 |
|
SEQUENCE |
CREATE 或DROP 序列 |
|
SESSION |
登录和退出 |
|
SYNONYM |
CREATE 或DROP 同义词 |
|
SYSTEM |
AUDIT 系统权限的AUDIT 或NOAUDIT |
|
SYSTEM GRANT |
GRANT 或REVOKE 系统权限和角色 |
|
TABLE |
CREATE、DROP 或TRUNCATE 表 |
|
TABLESPACE |
CREATE、ALTER 或DROP 表空间 |
|
TRIGGER |
CREATE、ALTER(启用/禁用)、DROP 触发器;具有 ENABLE ALL TRIGGERS 或DISABLE ALL TRIGGERS 的ALTER TABLE |
|
TYPE |
CREATE、ALTER 和DROP 类型以及类型主体 |
|
USER |
CREATE、ALTER 或DROP 用户 |
|
VIEW |
CREATE 或DROP 视图 |
表1-2 显式指定的语句类型
|
语 句 选 项 |
SQL 操 作 |
|
ALTER SEQUENCE |
任何ALTER SEQUENCE 命令 |
|
ALTER TABLE |
任何ALTER TABLE 命令 |
|
COMMENT TABLE |
添加注释到表、视图、物化视图或它们中的任何列 |
|
DELETE TABLE |
删除表或视图中的行 |
|
EXECUTE PROCEDURE |
执行程序包中的过程、函数或任何变量或游标 |
|
GRANT DIRECTORY |
GRANT 或REVOKE DIRECTORY 对象上的权限 |
|
GRANT PROCEDURE |
GRANT 或REVOKE 过程、函数或程序包上的权限 |
|
GRANT SEQUENCE |
GRANT 或REVOKE 序列上的权限 |
|
GRANT TABLE |
GRANT 或REVOKE 表、视图或物化视图上的权限 |
|
GRANT TYPE |
GRANT 或REVOKE TYPE 上的权限 |
|
INSERT TABLE |
INSERT INTO 表或视图 |
|
LOCK TABLE |
表或视图上的LOCK TABLE 命令 |
|
SELECT SEQUENCE |
引用序列的CURRVAL 或NEXTVAL 的任何命令 |
|
SELECT TABLE |
SELECT FROM 表、视图或物化视图 |
|
UPDATE TABLE |
在表或视图上执行UPDATE |
注意:
从Oracle Database 11g 开始,只有在初始参数AUDIT_TRAIL 被设置为DB_EXTENDED 时,才填充DBA_AUDIT_TRAIL 中的列SQL_TEXT 和SQL_BIND。默认情况下,AUDIT_TRAIL 的值是DB。
示例:
[oracle@ocp Desktop]$ rlwrap sqlplus / as sysdba
SYS@orcl>show parameter audit_trail
SYS@orcl> alter system set audit_trail=db_extended
scope=spfile;
SYS@orcl> startup force
SYS@orcl>show parameter audit_trail
SYS@orcl> alter user scott account unlock identified by
scott;
SYS@orcl> audit create table by scott by access;
SYS@orcl>select user_name,audit_option,success,failure from
dba_stmt_audit_opts where user_name='SCOTT';
SYS@orcl> conn scott/scott
SCOTT@orcl> create table tt(id int);
SCOTT@orcl> conn / as sysdba
SYS@orcl>select username,to_char(timestamp,'MM/DD/YY
HH24:MI') Timestamp,obj_name, action_name, sql_text from
dba_audit_trail where username= 'SCOTT';
使用noaudit 命令关闭审计,如下所示:
SYS@orcl> noaudit create table by scott;
SYS@orcl> conn scott/scott
SCOTT@orcl> create table ee(id int);
SCOTT@orcl> conn / as sysdba
SYS@orcl>select username,to_char(timestamp,'MM/DD/YY
HH24:MI') Timestamp,obj_name, action_name, sql_text from
dba_audit_trail where username= 'SCOTT';
编辑推荐:
- Word2010打印时不显示背景色和图像怎么办03-03
- Word2010如何隐藏默认显示的回车符号03-03
- AUDIT审计(2)03-03
- ORACLE AUDIT03-03
- Word2010文本插入状态和改写状态如何切换03-03
- Word2010怎样创建自定义表格样式03-03
- MAMY绘制游戏中的魔法机器人实例03-03
- Word2010如何创建构建基块03-03
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- MAMY绘制游戏中的魔法机器人实例
MAMY绘制游戏中的魔法机器人实例
26-03-03 - Word2010如何创建构建基块
Word2010如何创建构建基块
26-03-03 - oracle DBA 角色重建
oracle DBA 角色重建
26-03-03 - MAYA结合ZBRUSH制作美女杀手CG人物
MAYA结合ZBRUSH制作美女杀手CG人物
26-03-03 - Word2010如何添加自定义项目符号
Word2010如何添加自定义项目符号
26-03-03 - oracle12c解决plsql登录CDB和PDB问题
oracle12c解决plsql登录CDB和PDB问题
26-03-03 - ORACLE会话连接进程三者总结
ORACLE会话连接进程三者总结
26-03-03 - SQL语句执行顺序
SQL语句执行顺序
26-03-03 - word2010水印怎么设置
word2010水印怎么设置
26-03-03 - ORA-21561: OID generation failed hostname与/etc/hosts不一致导致安装报错
