프린트 하기

OS환경 : Oracle Linux 7.4 (64bit)

 

DB 환경 : Oracle Database 19.3.0.0

 

에러 : ASM audit file 증가 현상

/oracle 파일시스템 full 로 인해 db 접속 불가 현상이 발생하여 원인을 찾던 중

1
2
3
4
5
6
7
8
9
10
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        2.0G     0  2.0G   0/dev
tmpfs           2.0G  641M  1.3G  33/dev/shm
tmpfs           2.0G  169M  1.8G   9/run
tmpfs           2.0G     0  2.0G   0/sys/fs/cgroup
/dev/sda1        10G  4.1G  5.9G  41/
/dev/sda3       2.0G   33M  2.0G   2/tmp
/dev/sda5        30G   30G   20K 100/oracle
tmpfs           394M     0  394M   0/run/user/0

 

 

$GRID_HOME 의 rdbms 경로에 15GB를 차지하고 있는것을 확인함

1
2
3
4
5
6
7
8
9
10
11
$ cd /oracle/app/19.3/grid/
$ du -sh * | sort -hr
15G    rdbms
2.0G    lib
898M    bin
466M    usm
430M    javavm
365M    srvm
361M    jdk
.
.

 

 

ls 로 확인해보니 몇가지 디렉토리가 조회되었는데 audit 파일인것을 직감함

1
2
3
$ cd /oracle/app/19.3/grid/
$ ls
admin  audit  doc  install  jlib  lib  log  mesg  public  utl  xml

 

 

audit 디렉토리로 가서 ls 를 입력해봤지만 결과가 나오지않았음

1
2
3
$ cd audit
$ ls
...(응답없음)

 

 

일단 audit 파일을 모두 지우려 했지만 실패함

1
2
3
$ cd /oracle/app/19.3/grid/rdbms/audit
$ rm -rf ./*
-bash: /bin/rm: Argument list too long

 

 

find 명령으로 현재경로에서 *.aud 파일 리스트을 인수로 받아 1000개씩 끊어서 모두 삭제함

1
$ find . -name '*.aud' -print0 | xargs -n1000 -0 rm -f

 

 

이후 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ ls
+ASM_ora_4821_20200424224737197672773537.aud
$ ls
+ASM_ora_4821_20200424224737197672773537.aud  +ASM_ora_4826_20200424224738181460576656.aud
$ ls
+ASM_ora_4821_20200424224737197672773537.aud  +ASM_ora_4826_20200424224738181460576656.aud  +ASM_ora_4831_20200424224739207825622668.aud
$ ls
+ASM_ora_4821_20200424224737197672773537.aud  +ASM_ora_4826_20200424224738181460576656.aud  +ASM_ora_4831_20200424224739207825622668.aud
$ ls
+ASM_ora_4821_20200424224737197672773537.aud  +ASM_ora_4831_20200424224739207825622668.aud
+ASM_ora_4826_20200424224738181460576656.aud  +ASM_ora_4837_20200424224740236281871625.aud
$ ls
+ASM_ora_4821_20200424224737197672773537.aud  +ASM_ora_4831_20200424224739207825622668.aud  +ASM_ora_4842_20200424224741194866191976.aud
+ASM_ora_4826_20200424224738181460576656.aud  +ASM_ora_4837_20200424224740236281871625.aud

ls 할때마다(거의 1초마다) audit 파일이 생성되고 있음을 확인함

 

 

몇시간이 지난뒤 확인

1
2
3
4
5
6
$ ls | wc -l
7090
$ ls | wc -l
7108
$ ls | wc -l
7109

계속 파일 갯수가 증가하고 있음

 

 

해당 audit 로그 내용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$ cat +ASM_ora_11031_20200425203012038238715791.aud
Audit file /oracle/app/19.3/grid/rdbms/audit/+ASM_ora_11031_20200425203012038238715791.aud
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
Build label:    RDBMS_19.3.0.0.0DBRU_LINUX.X64_190417
ORACLE_HOME:    /oracle/app/19.3/grid
System name:    Linux
Node name:    ORACLE19
Release:    4.14.35-1818.3.3.el7uek.x86_64
Version:    #2 SMP Mon Sep 24 14:45:01 PDT 2018
Machine:    x86_64
Instance name: +ASM
Redo thread mounted by this instance: 0 <none>
Oracle process number: 24
Unix process pid: 11031, image: oracle@ORACLE19 (TNS V1-V3)
 
Sat Apr 25 20:30:12 2020 +09:00
LENGTH : '247'
ACTION :[7'CONNECT'
DATABASE USER:[1'/'
PRIVILEGE :[6'SYSASM'
CLIENT USER:[6'oracle'
CLIENT TERMINAL:[5'pts/0'
STATUS:[1'0'
DBID:[0''
SESSIONID:[10'4294967295'
USERHOST:[8'ORACLE19'
CLIENT ADDRESS:[0''
ACTION NUMBER:[3'100'

모두 sysasm이 connect 해서 발생한 로그임

 

 

해결 방법 : ASM 리소스 중 CHECK_INTERVAL 조절

CHECK_INTERVAL

반복적으로 점검하는 실행 시간 간격(초)

간격이 짧을수록 더 자주 점검 할 수 있지만 스크립트 에이전트를 사용하는 경우 자원 소비도 증가함

 

 

현재 CHECK_INTERVAL 값 확인

1
2
$ $GRID_HOME/bin/crsctl stat res ora.asm -|grep ^CHECK_INTERVAL
CHECK_INTERVAL=1

 

 

CHECK_INTERVAL 값 60으로 변경

1
$ $GRID_HOME/bin/crsctl modify resource ora.asm -attr "CHECK_INTERVAL=60" -unsupported

 

 

변경된 CHECK_INTERVAL 값 확인

1
2
$ $GRID_HOME/bin/crsctl stat res ora.asm -|grep ^CHECK_INTERVAL
CHECK_INTERVAL=60

 

 

30일 이상된 ASM audit 로그 삭제

1
$ find /oracle/app/19.3/grid/rdbms/audit -name '*.aud' -mtime +30 -exec rm {} \;

 

 

crontab 으로 반복 실행 설정

매일 새벽 4시 0분에 삭제하게끔 설정

1
2
$ crontab -e
0 4 * * * /bin/find /oracle/app/19.3/grid/rdbms/audit -name '*.aud' -mtime +30 -exec rm {} \;
 
 

나의 경우 모두 삭제하고 확인함

1
2
3
4
5
6
7
8
9
10
11
$ cd /oracle/app/19.3/grid/rdbms/audit/
$ ls -al
total 128
drwxr-xr-x.  2 oracle dba 4096 Apr 25 21:45 .
drwxr-xr-x. 13 oracle dba 4096 Apr 24 22:27 ..
-rw-r-----.  1 oracle dba  873 Apr 25 21:23 +ASM_ora_20629_20200425212305283833610713.aud
-rw-r-----.  1 oracle dba  873 Apr 25 21:24 +ASM_ora_20684_20200425212405287387975656.aud
-rw-r-----.  1 oracle dba  873 Apr 25 21:25 +ASM_ora_20738_20200425212505308480419411.aud
-rw-r-----.  1 oracle dba  873 Apr 25 21:25 +ASM_ora_20756_20200425212521470966715945.aud
-rw-r-----.  1 oracle dba  873 Apr 25 21:25 +ASM_ora_20778_20200425212544739357679064.aud
-rw-r-----.  1 oracle dba  873 Apr 25 21:26 +ASM_ora_20797_20200425212605297902030001.aud

1분마다 aud 파일이 생성되는 것을 확인 가능함

 

 

원인 : ASM 의 리소스 상태 확인으로 인한 audit 발생

ASM 의 리소스 상태 확인으로 인한 audit 발생

 

 

참조 : https://positivemh.tistory.com/553

 

-bash: /bin/rm: Argument list too long

OS환경 : Oracle Linux 7.4 (64bit) DB 환경 : Oracle Database 19.3.0.0 에러 : -bash: /bin/rm: Argument list too long asm 환경의 싱글 db 사용 중 asm audit 로그가 많이 쌓여 삭제하려던 중 발생한 메세지 1 2 3 $ cd /oracle/app/19.

positivemh.tistory.com

http://dbaharrison.blogspot.com/2014/10/asm-audit-file-overload.html?m=1

https://docs.oracle.com/en/database/oracle/oracle-database/19/cwadd/oracle-clusterware-resource-reference.html#GUID-F78FD747-A42B-4F08-8FC2-D70E47F83579

https://positivemh.tistory.com/1033

 

Oracle Linux 8 더미 파일 대량 생성 및 대량 삭제

OS환경 : Oracle Linux 8.1 (64bit) 방법 : Oracle Linux 8 더미 파일 대량 생성 및 대량 삭제 오라클 audit 파일을 지울때 양이 너무 많아서 Argument list too long 에러가 발생하는 경우가 있음 이 경우를 재현하기

positivemh.tistory.com