ORA-02002error while writing to audit trail 问题处理

ORA-02002error while writing to audit trail 问题处理

登录数据库时提示:

ERROR:
ORA-02002: error while writing to audit trail
ORA-00604: error occurred at recursive SQL level 1
ORA-01013: user requested cancel of current operation

理所应当就检查审计策略:

SQL> show parameter audit 

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest                      string      /app/admin/oracledb/adump
audit_sys_operations                 boolean     FALSE
audit_syslog_level                   string
audit_trail                          string      DB
SQL> 

Oracle 11g 默认开启AUDIT功能,如SYSTEM表空间自增会不断增大空间使用,所以根据业务实际需求开启/关闭AUDIT功能,命令如下:

  SQL>alter system set audit_trail=none scope=spfile;

直接使用spfile文件中的审计功能audit_trail为none,即关闭审计功能。需要重启数据库生效。
  
  同时发现system表空间也满了:

TABLESPACE_NAMESUM_SPACE(M)SUM_BLOCKSUSED_SPACE(M)USED_RATE(%)FREE_SPACE(M)
1SYSAUX58074240551.0695.01%28.94
2SYSTEM75096000742.7599.03%7.25

查看system表空间中占用空间大的对象:

SQL> select *
  2    from (select SEGMENT_NAME, sum(bytes) / 1024 / 1024 syssize
  3            from dba_segments   
  4           where tablespace_name = 'SYSTEM'
  5           group by segment_name
  6           order by syssize desc)
  7   where rownum < 10;

SEGMENT_NAME                                          SYSSIZE
-------------------------------------------------- ----------
IDL_UB1$                                                  272
SOURCE$                                                    72
IDL_UB2$                                                   31
C_TOID_VERSION#                                            24
I_SOURCE1                                                  13
ARGUMENT$                                                  12
JAVA$MC$                                                   12
C_OBJ#                                                     12
IDL_CHAR$                                                  11

9 rows selected


Executed in 0.28 seconds

结果发现占空间大的表并不是审计相关的表,而是一个IDL_UB1$表。750M的表空间,它占了三分之一。

从sql.bsq中我们可以找到这个表的创建语句:

create table idl_ub1$                            /* idl table for ub1 pieces */
( obj#          number not null,                            /* object number */
  part          number not null,
         /* part: 0 = diana, 1 = portable pcode, 2 = machine-dependent pcode */
  version       number,                                    /* version number */
  piece#        number not null,                             /* piece number */
  length        number not null,                             /* piece length */
  piece         long raw not null)                              /* ub1 piece */
  storage (initial 10k next 100k maxextents unlimited pctincrease 0)
/

idl_ub1$表是用来存储PL/SQL的代码单元的,包括DIANA等,IDL在这里代表Interface Definition Language 。

在高级复制中会用到这个表,所以可能导致这个表快速增长。
的确如此,数据库正在做大数据的物化视图刷新。
因此问题明确了,由于物化视图刷新造成idl_ub1$表快速增加,导致了system表空间满,但是表象是登录是审计报错,原因是system表空间满了。扩充system表空间解决问题。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值