oracle清理aud问来哦,咨询下oracle11gr2清理aud的问题

可以参考下面内容:Oracle11gr2 AUDIT清除功能增强(二)在11.2中,Oracle对于AUDIT记录的清除工作进行了增强。这一篇介绍将AUDIT记录根据时间戳进行清除。Oracle提供的DBMS_AUDIT_MGMT包对于AUDIT记录的清除和管理提供了强大的功能:SQL> SELECT COUNT(*) FROM AUD$;  ...显示全部

可以参考下面内容:

Oracle11gr2 AUDIT清除功能增强(二)

在11.2中,Oracle对于AUDIT记录的清除工作进行了增强。这一篇介绍将AUDIT记录根据时间戳进行清除。

Oracle提供的DBMS_AUDIT_MGMT包对于AUDIT记录的清除和管理提供了强大的功能:

SQL> SELECT COUNT(*) FROM AUD$;

COUNT(*)

----------

580

SQL> SET SERVEROUT ON

SQL> BEGIN

2  IF DBMS_AUDIT_MGMT.IS_CLEANUP_INITIALIZED(DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD) THEN

3  DBMS_OUTPUT.PUT_LINE('INITIALIZED');

4  ELSE

5  DBMS_OUTPUT.PUT_LINE('NOT INITIALIZED');

6  END IF;

7  END;

8  /

NOT INITIALIZED

PL/SQL 过程已成功完成。

SQL> EXEC DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, TRUE)

BEGIN DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, TRUE); END;

*

第 1 行出现错误:

ORA-46258: 没有为审计线索初始化清除

ORA-06512: 在 "SYS.DBMS_AUDIT_MGMT", line 61

ORA-06512: 在 "SYS.DBMS_AUDIT_MGMT", line 2333

ORA-06512: 在 line 1

SQL> EXEC DBMS_AUDIT_MGMT.INIT_CLEANUP(DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, 12)

PL/SQL 过程已成功完成。

SQL> EXEC DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, TRUE)

PL/SQL 过程已成功完成。

SQL> SELECT COUNT(*) FROM AUD$;

COUNT(*)

----------

580

SQL> EXEC DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, FALSE)

PL/SQL 过程已成功完成。

SQL> SELECT COUNT(*) FROM AUD$;

COUNT(*)

----------

0

如果要执行AUDIT的清理,必须执行INIT_CLEANUP过程,进行必要的AUDIT清理的准备工作,如果没有执行INIT_CLEANUP,则会报错ORA-46258。

其中AUDIT_TRAIL_AUD_STD是指存储在数据库中的AUD$表中的TRAIL记录,这里可以指定的参数还包括AUDIT_TRAIL_FGA_STD、AUDIT_TRAIL_DB_STD、AUDIT_TRAIL_OS、AUDIT_TRAIL_XML、AUDIT_TRAIL_FILES和AUDIT_TRAIL_ALL。

其中CLEAN_AUDIT_TRAIL过程的第二个参数就是指定是否根据时间戳来清理TRAIL,由于现在没有指定时间戳,因此设置参数为TRUE,不会清理任何的记录,而如果设置参数为FALSE,则全部的审计记录被清除。

SQL> AUDIT CREATE TABLE;

审计已成功。

为了确保AUD$表中存在记录,首先启用AUDIT:

SQL> CONN TEST/TEST

已连接。

SQL> CREATE TABLE T1 (ID NUMBER);

CREATE TABLE T1 (ID NUMBER)

*

第 1 行出现错误:

ORA-00955: 名称已由现有对象使用

SQL> DROP TABLE T1 PURGE;

表已删除。

SQL> CREATE TABLE T1 (ID NUMBER);

表已创建。

SQL> CREATE TABLE T2 (ID NUMBER);

表已创建。

在另外的会话触发AUDIT记录。

回到初始会话,检查AUD$记录数:

SQL> SELECT COUNT(*) FROM AUD$;

COUNT(*)

----------

4

设置当前时间为AUD$记录清除的时间戳:

SQL> SELECT TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;

TO_CHAR(SYSTIMESTAM

-------------------

2010-04-07 23:53:24

SQL> BEGIN

2  DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(

3  DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,

4  TO_TIMESTAMP('2010-4-7 23:55', 'YYYY-MM-DD HH24:MI'));

5  END;

6  /

PL/SQL 过程已成功完成。

SQL> SELECT * FROM DBA_AUDIT_MGMT_LAST_ARCH_TS;

AUDIT_TRAIL          RAC_INSTANCE LAST_ARCHIVE_TS

-------------------- ------------ --------------------------------------------------

STANDARD AUDIT TRAIL            0 07-4月 -10 11.55.00.000000 下午 +00:00

SQL> SELECT COUNT(*) FROM AUD$;

COUNT(*)

----------

4

需要注意,当前提供的时间戳被当作了0时区的时间戳,也就是说这些记录要在8小时后才会被清除。8个小时后,在另外的会话再次建表:

SQL> CREATE TABLE T3 (ID NUMBER);

表已创建。

再次检查AUD$记录:

SQL> SELECT COUNT(*) FROM AUD$;

COUNT(*)

----------

5

现在存在5条记录,其中4条记录将会被清除:

SQL> EXEC DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, TRUE)

PL/SQL 过程已成功完成。

SQL> SELECT COUNT(*) FROM AUD$;

COUNT(*)

----------

1收起

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值