oracle 审计数据大,oracle审计AUD$过大导致的数据库登录异常
今天,省分技術(shù)人員反映數(shù)據(jù)庫登錄異常。
查詢oerr,發(fā)現(xiàn)該錯誤是一般性提示,可能導致的原因有數(shù)據(jù)庫未注冊、本地文件配置問題等。由于平時連接并沒有問題,是突發(fā)情況,所以排除了配置問題。
遠程登錄查詢監(jiān)聽,發(fā)現(xiàn)監(jiān)聽并無問題,但在嘗試本地登錄時出現(xiàn)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:
這說明進程數(shù)超過了數(shù)據(jù)庫設(shè)定值。嘗試在另一個節(jié)點登錄則并無問題。
那么應(yīng)用應(yīng)該不會出現(xiàn)問題才對,因為至少有一個節(jié)點是可用的。
為了查找問題根源,我從另一臺服務(wù)器上使用輕松連接的方式連接節(jié)點2的實例,結(jié)果報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:
問題很明顯了,系統(tǒng)表空間應(yīng)該是爆了。而aud$是審計相關(guān)。因此查詢系統(tǒng)表空間使用情況,并查找系統(tǒng)表空間內(nèi)數(shù)據(jù)量最大的表。
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.
可以看出,系統(tǒng)表空間已達到上限32G,且其中審計表AUD$占了27G。
查看審計規(guī)則,可以看到數(shù)據(jù)庫審計了每次的連接。
現(xiàn)在清楚了。新有的連接因為審計策略需要寫入系統(tǒng)表空間的AUD$表,但由于系統(tǒng)表空間已達到空間配額,數(shù)據(jù)無法寫入,導致連接失敗。
數(shù)據(jù)庫急需可用,而該表因bug問題不能用數(shù)據(jù)泵導出,只能exp,耗時太長,因此直接truncate操作。
截斷aud$后,從節(jié)點1本地連接數(shù)據(jù)庫正常。但從B庫連接A庫節(jié)點1實例仍報ora 00020錯誤。查看節(jié)點1進程數(shù)
SQL>?select?count(*)?from?v$process;
COUNT(*)
----------
1198
查看參數(shù)為1200,節(jié)點2進程數(shù)為121.因此,懷疑省分配置的tnsnames.ora并未使用LB,導致所有連接只會去節(jié)點1.
目前節(jié)點1不能連接,是因為之前的連接都hung在這兒,導致連接擁堵。停掉節(jié)點一后,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
重啟后,節(jié)點1進程數(shù)降下來,可以正常連接。
總結(jié)
以上是生活随笔為你收集整理的oracle 审计数据大,oracle审计AUD$过大导致的数据库登录异常的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring cloud alibaba
- 下一篇: java锁的级别_Java锁的那些事儿之