oracle wri$_adv_objects 用途,oracle审计AUD$过大导致的数据库登录异常

今天,省分技术人员反映数据库登录异常。

c8edd41aef57b46ffb7928781ea94bd8.png

查询oerr,发现该错误是一般性提示,可能导致的原因有数据库未注册、本地文件配置问题等。由于平时连接并没有问题,是突发情况,所以排除了配置问题。

远程登录查询监听,发现监听并无问题,但在尝试本地登录时出现ora 00020错误

oracle@dxxxx:~> sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Mon Apr 25 10:40:08 2016

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

ERROR:

ORA-00020: maximum number of processes (1200) exceeded

Enter user-name:

这说明进程数超过了数据库设定值。尝试在另一个节点登录则并无问题。

那么应用应该不会出现问题才对,因为至少有一个节点是可用的。

为了查找问题根源,我从另一台服务器上使用轻松连接的方式连接节点2的实例,结果报ora 01653

oracle@xxxx:/myimp/aud> sqlplus yy/yy@node2:1521/xxxx

SQL*Plus: Release 11.2.0.4.0 Production on Mon Apr 25 10:04:32 2016

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

ERROR:

ORA-00604: error occurred at recursive SQL level 1

ORA-01653: unable to extend table SYS.AUD$ by 8192 in tablespace SYSTEM

ORA-02002: error while writing to audit trail

ORA-00604: error occurred at recursive SQL level 1

ORA-01653: unable to extend table SYS.AUD$ by 8192 in tablespace SYSTEM

Enter user-name:

问题很明显了,系统表空间应该是爆了。而aud$是审计相关。因此查询系统表空间使用情况,并查找系统表空间内数据量最大的表。

SQL> col file_name for a50

SQL> select file_name,bytes/1024/1024/1024 GB from dba_data_files where tablespace_name=‘SYSTEM‘;

FILE_NAME                                                  GB

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

+DATADG/data/datafile/system.259.783425779         31.9726563

SQL> select * from (

2  select table_name,blocks*8192/1024/1024/1024 GB from user_tables where blocks is not null order by 2 desc)

3  where rownum<10;

TABLE_NAME                             GB

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

AUD$                           27.4380493

IDL_UB1$                       .257354736

WRM$_SNAPSHOT_DETAILS          .232673645

WRI$_ADV_OBJECTS               .193763733

HISTGRM$                       .130683899

WRH$_ACTIVE_SESSION_HISTORY     .11491394

WRH$_FILESTATXS                .112823486

OBJ$                           .068336487

SOURCE$                        .066230774

9 rows selected.

可以看出,系统表空间已达到上限32G,且其中审计表AUD$占了27G。

查看审计规则,可以看到数据库审计了每次的连接。

dbce632a5616e72cc41af56a5f41eb3f.png

现在清楚了。新有的连接因为审计策略需要写入系统表空间的AUD$表,但由于系统表空间已达到空间配额,数据无法写入,导致连接失败。

数据库急需可用,而该表因bug问题不能用数据泵导出,只能exp,耗时太长,因此直接truncate操作。

截断aud$后,从节点1本地连接数据库正常。但从B库连接A库节点1实例仍报ora 00020错误。查看节点1进程数

SQL> select count(*) from v$process;

COUNT(*)

----------

1198

查看参数为1200,节点2进程数为121.因此,怀疑省分配置的tnsnames.ora并未使用LB,导致所有连接只会去节点1.

目前节点1不能连接,是因为之前的连接都hung在这儿,导致连接拥堵。停掉节点一后,B库远程可以连到A库。

SQL> show parameter process

NAME                                 TYPE        VALUE

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

aq_tm_processes                      integer     1

cell_offload_processing              boolean     TRUE

db_writer_processes                  integer     16

gcs_server_processes                 integer     6

global_txn_processes                 integer     1

job_queue_processes                  integer     1000

log_archive_max_processes            integer     4

processes                            integer     1200

processor_group_name                 string

SQL> select count(*) from v$process;

COUNT(*)

----------

121

重启后,节点1进程数降下来,可以正常连接。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值