oracle审计语句的简单用法

来源:互联网 发布:sql grouping函数 编辑:程序博客网 时间:2024/06/05 02:56

 审计(Audit)用于监视用户所执行的数据库操作,并且Oracle会将审计跟踪结果存放到OS文件或数据库中。 


1.审计相关表的安装:

  SQLPLUS>connect / AS SYSDBA

  SQLPLUS> select* from sys.aud$;     --没有记录返回 

  SQLPLUS> select* from dba_audit_trail;   - 没有记录返回

 如果做上述查询的时候发现表不存在,说明审计相关的表还没有安装,需要安装。

 

  SQLPLUS>connect / as sysdba

  SQLPLUS>@$ORACLE_HOME/rdbms/admin/cataudit.sql

 审计表安装在SYSTEM表空间。所以要确保SYSTEM表空间又足够的空间存放审计信息。

安装后要重启数据库

将审计相关的表移动到其他表空间

由于AUD$表等审计相关的表存放在SYSTEM表空间,因此为了不影响系统的性能,保护SYSTEM表空间,最好把AUD$移动到其他的表空间上。可以使用下面的语句来进行移动:

 

sql>connect / assysdba;

sql>alter table aud$move tablespace <new tablespace>;

sql>alter index I_aud1rebuild online tablespace <new tablespace>;

SQL> alter tableaudit$ move tablespace <new tablespace>;

SQL> alter indexi_audit rebuild online tablespace <new tablespace>;

SQL> alter tableaudit_actions move tablespace <new tablespace>;

SQL> alter indexi_audit_actions rebuild online tablespace <new tablespace>;

2、和审计相关的两个主要参数

Audit_sys_operations:

默认为false,当设置为true时,所有sys用户(包括以sysdba, sysoper身份登录的用户)的操作都会被记录,audit trail不会写在aud$表中,这个很好理解,如果数据库还未启动aud$不可用,那么像conn /as sysdba这样的连接信息,只能记录在其它地方。如果是windows平台,audti trail会记录在windows的事件管理中,如果是linux/unix平台则会记录在audit_file_dest参数指定的文件中。

Audit_trail:

None:是默认值,不做审计;

DB:将audit trail 记录在数据库的审计相关表中,如aud$,审计的结果只有连接信息;

DB,Extended:这样审计结果里面除了连接信息还包含了当时执行的具体语句;

OS:将audit trail 记录在操作系统文件中,文件名由audit_file_dest参数指定;

XML:10g里新增的。

注:这两个参数是static参数,需要重新启动数据库才能生效。

  

1、使用审计,需要激活审计 



  SQL> conn /as sysdba
  已连接。
  SQL> show parameter audit_sys_operations;
  NAME TYPE VALUE
  ------------------------------------ ----------- ------------------------------
  audit_sys_operations boolean FALSE
  SQL> show parameter audit_trail;
  NAME TYPE VALUE
  ------------------------------------ ----------- ------------------------------
  audit_trail string NONE
  SQL> alter system set audit_sys_operations=TRUE scope=spfile;
  系统已更改。
  SQL> alter system set audit_trail=db scope=spfile;
  系统已更改。
  SQL> startup force
  ORACLE 例程已经启动。
  Total System Global Area 289406976 bytes
  Fixed Size 1248576 bytes
  Variable Size 79692480 bytes
  Database Buffers 201326592 bytes
  Redo Buffers 7139328 bytes
  数据库装载完毕。
  数据库已经打开。
  SQL> show parameter audit;
  NAME TYPE VALUE
  ------------------------------------ ----------- ------------------------------
  audit_file_dest string D:\ORACLE\PRODUCT\10.2.0\ADMIN
  \ORCL\ADUMP
  audit_sys_operations boolean TRUE
  audit_trail string DB


  2、审计dept表


  SQL> audit all on dept;
  审计已成功。
  SQL> conn mzl/mzl
  已连接。
  SQL> select * from dept;
  DEPTNO DNAME LOC
  ---------- -------------- -------------
  10 ACCOUNTING NEW YORK
  20 RESEARCH DALLAS
  30 SALES CHICAGO
  40 OPERATIONS PanJin
  80 mengzhaoliang beijing
  SQL> insert into dept
  2 values (90,'test','PanJin');
  已创建 1 行。
  SQL> commit;
  提交完成。
  SQL> conn scott/mzl
  已连接。
  SQL> insert into dept
  2 values(60,'June','ShangHai');
  已创建 1 行。
  SQL> commit;
  提交完成。


  3、查看审计结果


  SQL> conn /as sysdba
  已连接。
  SQL> select count(*) from dba_audit_trail;
  COUNT(*)
  ----------
  2
  SQL> select username,ses_actions,obj_name,
  2 to_char(timestamp,'YYYY-MM-DD HH24:MI:SS')
  3 from dba_audit_trail;
  USERNAME SES_ACTIONS
  ------------------------------ -------------------
  OBJ_NAME
  --------------------------------------------------------------------------------
  TO_CHAR(TIMESTAMP,'
  -------------------
  MZL ------S--S------
  DEPT
  2008-10-20 10:28:08
  SCOTT ------B---------
  DEPT
  2008-10-20 10:29:04
  USERNAME SES_ACTIONS
  ------------------------------ -------------------
  OBJ_NAME
  --------------------------------------------------------------------------------
  TO_CHAR(TIMESTAMP,'
  -------------------
  SQL> conn mzl/mzl
  已连接。


  4、禁止审计


  SQL> noaudit all on dept;
  审计未成功。


  5、mzl用户为dba的用户,使用精细审计,这样可以知道具体的用户更新的数据


  SQL> show user;
  USER 为 "MZL"


  6、审计dept表


  SQL> exec dbms_fga.add_policy(object_name=>'dept',policy_name=>'chk_dept',-
  > statement_types=>'insert,update,delete,select');
  PL/SQL 过程已成功完成。
  SQL> select count(*) from dba_fga_audit_trail;
  COUNT(*)
  ----------
  0
  SQL> select * from dept;
  DEPTNO DNAME LOC
  ---------- -------------- -------------
  10 ACCOUNTING NEW YORK
  20 RESEARCH DALLAS
  30 SALES CHICAGO
  40 OPERATIONS PanJin
  60 June ShangHai
  80 mengzhaoliang beijing
  90 test PanJin
  已选择7行。
  SQL> delete dept where deptno=90;
  已删除 1 行。
  SQL> commit;
  提交完成。
  SQL> conn scott/mzl
  已连接。
  SQL> update dept set loc='PanJin' where deptno=60;
  已更新 1 行。
  SQL> commit;
  提交完成。
  SQL> conn mzl/mzl
  已连接。
  SQL> select count(*) from dba_fga_audit_trail;
  COUNT(*)
  ----------
  3
  SQL> col sql_text for a40
  SQL> l
  1* select db_user,sql_text from dba_fga_audit_trail
  SQL> /
  DB_USER SQL_TEXT
  ------------------------------ ----------------------------------------
  MZL select * from dept
  MZL delete dept where deptno=90
  SCOTT update dept set loc='PanJin' where deptn
原创粉丝点击