oracle 审计数据大,oracle审计AUD$过大导致的数据库登录异常
今天,省分技術人員反映數據庫登錄異常。
查詢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。
查看審計規則,可以看到數據庫審計了每次的連接。
現在清楚了。新有的連接因為審計策略需要寫入系統表空間的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進程數降下來,可以正常連接。
總結
以上是生活随笔為你收集整理的oracle 审计数据大,oracle审计AUD$过大导致的数据库登录异常的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring cloud alibaba
- 下一篇: grafana mysql插件_graf