zoukankan      html  css  js  c++  java
  • oracle审计

    Orcale审计机制研究

    1.   设置审计

    1.1.  查看审计状态

    SQL>conn /as sysdba;

    已连接

    SQL>show parameters audit_trail;

    NAME       TYPE      VALUE
    ------------------------- ------------------------
    audit_trail     string      NONE

    1.2.  确认审计相关的表是否已经安装

    首先查看审计相关的表是否已安装,执行如下命令:

    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表空间又足够的空间存放审计信息。

    1.3.  修改状态,激活审计(用户SYS)

    激活审计执行如下命令:

    SQL> alter system set audit_sys_operations=true  scope=spfile;

    System altered

    SQL> alter system set audit_trail=DB,EXTENDED scope=spfile;

    System altered

    注: l         DB/TRUE:启动审计功能,并且把审计结果存放在数据库的 SYS.AUD$ 表中

    l         OS:启动审计功能,并把审计结果存放在操作系统的审计信息中  

    l         EXTENDED:具有DB/TRUE的功能,另外填写AUD$的SQLBIND和SQLTEXT字段

    l         NONE/FALSE:关闭审计功能 

    重启数据库实例:

    SQL> startup force;

    ORACLE 例程已经启动。

    1.4.  再查看状态(用户SYS)

    SQL> show parameter audit;

    NAME       TYPE      VALUE
    ------------------------- ------------------------
    audit_trail     string      DB,  EXTENDED

    1.5.  建立测试表(用户TPLATFORM)

    建立测试表(T_AUDIT_DEMO)准备进行审计测试:

    Create Table T_AUDIT_DEMO

    (

     CID   INT   NOT NULL,

     CNAME VARCHAR2(20) NULL,

     ENAME VARCHAR2(20) NULL,

     CONSTRAINT PK_T_AUDIT_DEMO PRIMARY KEY (CID)

    );

    表已创建

    1.6.  设置审计

    对用户TPLATFORM下的表进行审计操作:

    SQL> conn /as sysdba;

    已连接

    SQL> audit select table by TPLATFORM by access;   //设置审计查询

    审计已成功

    SQL> audit update table by TPLATFORM by access;  //设置审计更新

    审计已成功

    SQL> audit insert table by TPLATFORM by access ;   //设置审计添加

    审计已成功

    SQL> audit DELETE table by TPLATFORM by access;  //设置审计删除

    审计已成功

    (如果在命令中添加by TPLATFORM则只对TPLATFORM的操作进行审计,否则对所以用户操作进行审计)

    2.   使用审计查看

    2.1.  进行审计测试(用户SYS、TPLATFORM)

    添加表数据准备测试审计:

    INSERT INTO T_AUDIT_DEMO VALUES(1,'曾勋','ZENG XUN');

    INSERT INTO T_AUDIT_DEMO VALUES(2,'翁黎明','WENG LI MING');

    INSERT INTO T_AUDIT_DEMO VALUES(3,'刘帝勇','LIU DI YONG');

    查询表数据准备测试审计:

    SELECT * FROM T_AUDIT_DEMO WHERE CID < 3

    删除表数据准备测试审计:

    DELETE FROM T_AUDIT_DEMO WHERE CID = 3;

    提交

    commit;

    SQL> select action_name,sql_text from  sys.aud$  where OBJ_NAME = 'T_AUDIT_DEMO';

    dba_audit_trail的关键字段:

    OBJ$CREATOR 操作对象

    NTIMESTAMP# 操作提交时间

    OBJ$NAME  表名

    ACTION 操作类型(对应audit_action表, audit_action表中有两个字段action,name,分别为操作类型,操作类型名称)

    SQLTEXT 执行的sql语句

    3.   性能

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

    实际上sys.aud$表上包含了两个lob字段(sqlbind, SQLTEXT),并不是简单的move table就可以。
    下面是具体的过程:

    SQL>alter table aud$ move tablespace 表空间名;

    SQL>alter table sys.aud$ move lob(sqlbind) store as( tablespace 表空间名);

    SQL>alter table sys.aud$ move lob(SQLTEXT) store as( tablespace表空间名);

    SQL>alter index I_aud1 rebuild online tablespace 表空间名;

    SQL> alter table audit$ move tablespace 表空间名;

    SQL> alter index i_audit rebuild online tablespace 表空间名;

    SQL> alter table audit_actions move tablespace 表空间名;

    SQL> alter index i_audit_actions rebuild online tablespace 表空间名;

     

    4.   运维

           可能随着时间越久,信息量就会越大,需要定期进行删除以前的数据(如:3个月).

  • 相关阅读:
    [ARC117F]Gateau
    [ARC117D]Miracle Tree
    [loj3504]支配
    [gym102511K]Traffic Blights
    [loj3501]图函数
    [loj3503]滚榜
    [loj3500]矩阵游戏
    [loj2135]幻想乡战略游戏
    [cf720D]Slalom
    [cf1349E]Slime and Hats
  • 原文地址:https://www.cnblogs.com/mgzy/p/3831386.html
Copyright © 2011-2022 走看看