내맘대로긍정이 알려주는
Oracle 23ai 신기능
무료 세미나 발표자료
OS환경 : HP-UX 11.31 (64bit)
DB 환경 : Oracle Database 11.2.0.4
에러 : Ioctl ASYNC_CONFIG error, errno = 1
11gR2 사용중 bdump 경로에 trc, trm 파일 대량 생성을 확인
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
|
$ cd /oracle/app/oracle/diag/rdbms/orcl11/ORCL11/trace
$ ls -al
-rw-r----- 1 oracle dba 444284 Oct 4 10:45 ORCL11_ora_0724.trc
-rw-r----- 1 oracle dba 42267 Oct 4 10:45 ORCL11_ora_0722.trm
-rw-r----- 1 oracle dba 42681 Oct 4 10:45 ORCL11_ora_0724.trm
-rw-r----- 1 oracle dba 431663 Oct 4 10:45 ORCL11_ora_0730.trc
-rw-r----- 1 oracle dba 41443 Oct 4 10:45 ORCL11_ora_0730.trm
-rw-r----- 1 oracle dba 40335 Oct 4 10:45 ORCL11_ora_0732.trm
-rw-r----- 1 oracle dba 420331 Oct 4 10:45 ORCL11_ora_0732.trc
-rw-r----- 1 oracle dba 425711 Oct 4 10:45 ORCL11_ora_0824.trc
-rw-r----- 1 oracle dba 431004 Oct 4 10:45 ORCL11_ora_0822.trc
-rw-r----- 1 oracle dba 6835 Oct 4 10:45 ORCL11_ora_0820.trm
-rw-r----- 1 oracle dba 72149 Oct 4 10:45 ORCL11_ora_0820.trc
-rw-r----- 1 oracle dba 40855 Oct 4 10:45 ORCL11_ora_0824.trm
-rw-r----- 1 oracle dba 41378 Oct 4 10:45 ORCL11_ora_0822.trm
-rw-r----- 1 oracle dba 406305 Oct 4 10:45 ORCL11_ora_0826.trc
-rw-r----- 1 oracle dba 401041 Oct 4 10:45 ORCL11_ora_0828.trc
-rw-r----- 1 oracle dba 38446 Oct 4 10:45 ORCL11_ora_0828.trm
-rw-r----- 1 oracle dba 38969 Oct 4 10:45 ORCL11_ora_0826.trm
-rw-r----- 1 oracle dba 412489 Oct 4 10:45 ORCL11_ora_0830.trc
-rw-r----- 1 oracle dba 39557 Oct 4 10:45 ORCL11_ora_0830.trm
-rw-r----- 1 oracle dba 37500 Oct 4 10:45 ORCL11_ora_0839.trm
-rw-r----- 1 oracle dba 391367 Oct 4 10:45 ORCL11_ora_0839.trc
-rw-r----- 1 oracle dba 417326 Oct 4 10:45 ORCL11_ora_0864.trc
-rw-r----- 1 oracle dba 40034 Oct 4 10:45 ORCL11_ora_0864.trm
-rw-r----- 1 oracle dba 17313 Oct 4 10:45 ORCL11_ora_0924.trm
-rw-r----- 1 oracle dba 417326 Oct 4 10:45 ORCL11_ora_0924.trc
|
vi 로 trc 파일 확인 결과 아래와 같은 내용이 반복적으로 나타남
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
$ vi /oracle/app/oracle/diag/rdbms/orcl11/ORCL11/trace/ORCL11_ora_0001.trc
*** 2019-10-04 13:10:10.660
Ioctl ASYNC_CONFIG error, errno = 1
Trace file /oracle/app/oracle/diag/rdbms/orcl11/ORCL11/trace/ORCL11_ora_0001.trc
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
ORACLE_HOME = /oracle/app/oracle/product/11.2.0.4
System name: HP-UX
Node name: ORCL11
Release: B.11.31
Version: U
Machine: ia64
Instance name: ORCL11
Redo thread mounted by this instance: 1
Oracle process number: 0
Unix process pid: 15001, image: oracle@orcl11
|
alert log에는 별다른 특이상이 발견되지 않음
1
2
3
4
5
6
7
8
9
10
11
|
# vi alert*.log
Sun Oct 04 06:00:08 2020
Archived Log entry 102 added for thread 1 sequence 232 ID 0xfe6bf333 dest 1:
End automatic SQL Tuning Advisor run for special tuning task "SYS_AUTO_SQL_TUNING_TASK"
Sun Oct 04 20:00:58 2020
Thread 1 advanced to log sequence 234 (LGWR switch)
Current log# 3 seq# 234 mem# 0: /oracle/app/oracle/oradata/ORCL11/redo03.log
Sun Oct 04 20:00:58 2020
Archived Log entry 103 added for thread 1 sequence 233 ID 0xfe6bf333 dest 1:
.
.
|
해결 방법 : Ioctl ASYNC_CONFIG trace file 오류를 피하려면 dba 그룹에 MLOCK 권한을 부여해야함
Ioctl ASYNC_CONFIG trace file 오류를 피하려면 dba 그룹에 MLOCK 권한을 부여해야함
/dev/async 가 있는 경우 4번부터 실행
확인
1
2
|
# ls -al /dev/async
crw------- 1 bin bin 101 0x000000 Oct 4 10:46 /dev/async
|
아래 작업(OS async) 전 Oracle Instance를 종료하고 작업하는걸 권장함
/dev/async 가 없는 경우
/dev/async device 생성하는 방법
1. device file 생성
1
|
# /sbin/mknod /dev/async c 101 0x104
|
2. 오너 변경
1
|
# chown bin:bin /dev/async
|
3. 권한 변경
1
|
# chmod 660 /dev/async
|
4. dba 그룹에 MLOCK 권한 부여 및 명령 실행
1
2
|
# vi /etc/privgroup
dba MLOCK RTSCHED RTPRIO --추가
|
파일확인
1
2
|
# cat /etc/privgroup
dba MLOCK RTSCHED RTPRIO
|
아래 명령 실행
1
|
# /usr/sbin/setprivgrp MLOCK
|
setprivgrp : 그룹을 위한 특별 권한을 설정하는 명령
적용 확인
1
2
|
# /usr/bin/getprivgrp dba
dba : MLOCK
|
getprivgrp : 그룹의 특수 속성을 가져오는 명령
5. disk_async_io 파라미터가 true 가 아니라면 변경
Oracle init.ora(파라미터파일) 파일 수정 or spfile 수정
1
|
disk_async_io = true
|
6. 파라미터파일 변경 후 db 재기동
1
2
|
SQL> shutdown immediate
SQL> startup
|
7. Async IO mode 검증
1
|
# fuser /dev/async
|
Async IO가 적용 중임을 나타내는 프로세스가 표시됨
추가1
9iR2에서 10gR1 버전까지 Oracle에서 ASYNC I/O를 비활성화 방법
1
2
|
# chown bin:bin /dev/async
# chmod 660 /dev/async
|
참고 : 이 방법은 ASYNC I/O를 사용하려는 다른 응용 프로그램에 영향을 줄 수 있음
ASYNC I/O를 비활성화하기 전에 Oracle 데이터베이스를 종료하는 것이 좋음
추가2
10gR2 버전부터 파라미터 파일에 아래 설정값으로 변경하면 문제가 해결됨
1
2
|
disk_asynch_io=FALSE
filesystemio_options=none
|
(Oracle에서 Disk ASYNC I/O를 안쓰겠다는 뜻)
추가3
disk_asynch_io=FALSE
파일들에 대한 입출력이 비동기적인지, 즉 테이블 스캔시 프로세스가 입출력 및 CPU 요청과 겹치는지를 제어하는 파라미터
단 사용중인 플랫폼이 디스크에 대한 비동기 입출력을 지원할 경우에만 매개변수 변경을 함, default는 true임
추가4
mknod async Minor number 설명
관련문서는 하단 참조 링크에서 확인
원인 : Oracle db 그룹의 소유자(dba)에 대한 MLOCK, RTSCHED 및 RTPRIO 권한 문제
hp-ux에 async driver가 enable 되어 있을 경우 /dev/async 디렉토리에 접근을 시도 하는데,
Oracle db 그룹의 소유자(dba)에 MLOCK, RTSCHED 및 RTPRIO 권한이 있어야 하는데 없어서 발생한 문제로
해당 권한이 없을 경우 문제의 로그가 (*.trc) 파일에 과다하게 발생하여 Disk i/o 를 과다하게 점유함
MLOCK(Memory Lock) : 프로세스 가상 주소 공간의 세그먼트를 메모리에 고정하는 명령
RTSCHED, RTPRIO : 실시간 우선 순위로 프로세스 실행하는 명령
참조 : https://blog.naver.com/woomun/140193171193
Docs 302801.1, 1380006.1
https://nixdoc.net/man-pages/HP-UX/man2/mlock.2.html
https://sarc.io/index.php/oracledatabase/1009-file-dev-async-not-present-errno-2
https://docs.oracle.com/cd/E11882_01/server.112/e10839/appb_hpux.htm#UNXAR308
https://docstore.mik.ua/manuals/hp-ux/en/B2355-60130/rtsched.1.html
https://docstore.mik.ua/manuals/hp-ux/en/B2355-60130/rtprio.1.html
https://docstore.mik.ua/manuals/hp-ux/en/B2355-60130/mlock.2.html
https://docstore.mik.ua/manuals/hp-ux/en/B2355-60130/setprivgrp.1M.html