100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > oracle 审计数据大 oracle审计AUD$过大导致的数据库登录异常

oracle 审计数据大 oracle审计AUD$过大导致的数据库登录异常

时间:2021-08-22 01:01:04

相关推荐

oracle 审计数据大 oracle审计AUD$过大导致的数据库登录异常

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

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

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

oracle@dxxxx:~>sqlplus/assysdba

SQL*Plus:Release11.2.0.4.0ProductiononMonApr2510:40:08

Copyright(c)1982,,Oracle.Allrightsreserved.

ERROR:

ORA-00020:maximumnumberofprocesses(1200)exceeded

Enteruser-name:

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

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

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

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

SQL*Plus:Release11.2.0.4.0ProductiononMonApr2510:04:32

Copyright(c)1982,,Oracle.Allrightsreserved.

ERROR:

ORA-00604:erroroccurredatrecursiveSQLlevel1

ORA-01653:unabletoextendtableSYS.AUD$by8192intablespaceSYSTEM

ORA-02002:errorwhilewritingtoaudittrail

ORA-00604:erroroccurredatrecursiveSQLlevel1

ORA-01653:unabletoextendtableSYS.AUD$by8192intablespaceSYSTEM

Enteruser-name:

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

SQL>colfile_namefora50

SQL>selectfile_name,bytes/1024/1024/1024GBfromdba_data_fileswheretablespace_name='SYSTEM';

FILE_NAMEGB

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

+DATADG/data/datafile/system.259.78342577931.9726563

SQL>select*from(

2selecttable_name,blocks*8192/1024/1024/1024GBfromuser_tableswhereblocksisnotnullorderby2desc)

3whererownum<10;

TABLE_NAMEGB

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

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

9rowsselected.

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

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

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

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

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

SQL>selectcount(*)fromv$process;

COUNT(*)

----------

1198

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

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

SQL>showparameterprocess

NAMETYPEVALUE

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

aq_tm_processesinteger1

cell_offload_processingbooleanTRUE

db_writer_processesinteger16

gcs_server_processesinteger6

global_txn_processesinteger1

job_queue_processesinteger1000

log_archive_max_processesinteger4

processesinteger1200

processor_group_namestring

SQL>selectcount(*)fromv$process;

COUNT(*)

----------

121

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。