問題概述
/oracle 文件系統使用率過大,經過檢查是審計日志過大,/oracle 目錄 197G 審計日志占用70G,每6個小時產生大量審計日志,日志內容全是'select action from gv$session' ,猜測可能跟備份有關,
$>df -h /oracle
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/fusioncube-oracle 197G 164G 24G 88% /oracle
[09:21:34]$>/oracle/app/oracle/product/19c/db_1/rdbms/audit> du -sm
[09:21:34]72892
這個庫已經遷移到GoldenDB,沒有業務了,監聽也已經關閉,初步判斷是系統本身產生的審計日志。奇怪的是日志時間內并無活動會話和定時任務,并且審計內容全是 ACTION :[72] 'select action from gv$session where sid=:1 and serial#=:2 and inst_id=:3' 日志里看不出來,好像備份沒有關,猜測大概率是備份導致的
Thu Feb 13 07:39:11 2025 +08:00
LENGTH : '320'
ACTION :[72] 'select action from gv$session where sid=:1 and serial#=:2 and inst_id=:3'
DATABASE USER:[1] '/'
PRIVILEGE :[6] 'SYSDBA'
CLIENT USER:[6] 'oracle'
CLIENT TERMINAL:[5] 'pts/0'
STATUS:[1] '0'
DBID:[10] '3890171464'
SESSIONID:[10] '4294967295'
USERHOST:[6] 'XXX'
CLIENT ADDRESS:[0] ''
ACTION NUMBER:[1] '3'Thu Feb 13 07:39:11 2025 +08:00
LENGTH : '320'
ACTION :[72] 'select action from gv$session where sid=:1 and serial#=:2 and inst_id=:3'
DATABASE USER:[1] '/'^C
PRIVILEGE :[6] 'SYSDBA'
CLIENT USER:[6] 'oracle'
CLIENT TERMINAL:[5] 'pts/0'
STATUS:[1] '0'
DBID:[10] '3890171464'
SESSIONID:[10] '4294967295'
USERHOST:[6] 'XXX'
CLIENT ADDRESS:[0] ''
ACTION NUMBER:[1] '3'。。。。。。。。
查看ASM日志,在審計日志增大的時間點正好與ASM日志時間點對應。
重啟數據庫還需要和溝通先清理日志,保留1天時間的日志:
find /oracle/app/oracle/product/19c/db_1/rdbms/audit -name "*.aud" -mtime +1 -exec ls -lst {} \;
find /oracle/app/oracle/product/19c/db_1/rdbms/audit -name "*.aud" -mtime +1 -exec rm -rf {} \;
解決方法
第一,因為這個庫已經遷移到了 goldenDB,檢查一下在2-21號把備份停了之后已經沒有之前的問題了
col INPUT_BYTES_PER_SEC_DISPLAY format a15;
col OUTPUT_BYTES_PER_SEC_DISPLAY format a15;
col TIME_TAKEN_DISPLAY format a17;
col status format a10;
COL hours FORMAT 999.999
COL out_size FORMAT a10
select session_key,AUTOBACKUP_DONE,OUTPUT_DEVICE_TYPE,INPUT_TYPE,status,ELAPSED_SECONDS/3600 hours,
TO_CHAR(START_TIME,'yyyy-mm-dd hh24:mi') start_time,TO_CHAR(END_TIME,'yyyy-mm-dd hh24:mi') end_time, OUTPUT_BYTES_DISPLAY out_size,
OUTPUT_BYTES_PER_SEC_DISPLAY,INPUT_BYTES_PER_SEC_DISPLAY
from v$RMAN_BACKUP_JOB_DETAILS order by start_time ;
第二,參考MOS是RMAN導致的bug,為了克服當前的問題,有兩個選項:
- 從傳統審計轉移到統一審計,包括棄用AUDIT_SYS_OPERATIONS參數(推薦)。
- 通過設置AUDIT_SYS_OPERATIONS = FALSE來禁用系統審計(并重啟數據庫以使其生效)。
audit_sys_operations 默認為false,當設置為true時,所有sys用戶(包括以sysdba, sysoper身份登錄的用戶)的操作都會被記錄
參考文檔
參考MOS:Excessive Audit File Generation Due To RMAN With 'select action from gv$session' Records?(Doc ID 2734995.1)