프린트 하기

OS환경 : Oracle Linux 8.4 (64bit)

 

DB 환경 : Oracle Database 19.3.0.0

 

방법 : 오라클 19c 재기동시 발생하는 wait event

테스트 중 ash 를 보다가 재기동시에 특정 이벤트가 발생하는것을 보고 어떤 이벤트인지 궁금해서 찾아봄

 

 

db 재기동

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
 
SQL> startup
ORACLE instance started.
 
Total System Global Area 2214590664 bytes
Fixed Size                  8898760 bytes
Variable Size            2147483648 bytes
Database Buffers           50331648 bytes
Redo Buffers                7876608 bytes
Database mounted.
Database opened.

 

 

재기동 직후 ash 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SQL>
col wait_class for a12
col event for a50
select * from (
 select
 WAIT_CLASS ,
 EVENT,
 count(sample_time) as EST_SECS_IN_WAIT
 from v$active_session_history
 where sample_time between sysdate - interval '1' hour and sysdate
 group by WAIT_CLASS,EVENT
 order by count(sample_time) desc
 )
where rownum <6;
 
WAIT_CLASS   EVENT                                              EST_SECS_IN_WAIT
------------ -------------------------------------------------- ----------------
                                                                               6
Other        oracle thread bootstrap                                           2
User I/O     external table read                                               2
Other        os thread creation                                                2
Other        control file heartbeat                                            2

 

 

최상단은 NULL이고 나머지 4개가 나옴(oracle thread bootstrap, external table read, os thread creation, control file heartbeat)

각각 어떤 이벤트인지 확인해봄

 

 

oracle thread bootstrap

이 이벤트는 주로 멀티 스레드 환경에서 쓰레드가 부트스트랩(시작) 과정을 거치는 동안 발생함

이 과정에서 오라클은 필요한 시스템 리소스를 확보하고, 쓰레드의 실행을 위한 준비 작업을 수행함
이 이벤트가 발생하는 동안, 쓰레드는 대기 상태가 될 수 있으며, 이는 일반적으로 시스템의 성능에 영향을 주지 않는다고함

하지만 이 이벤트가 지속적으로 발생하거나, 대기 시간이 길어질 경우 시스템의 성능에 영향을 줄 수 있음
운영중 이 이벤트가 발생하면, 일반적으로 시스템 리소스를 증가시키거나, 애플리케이션의 동시성을 조정하여 해결할 수 있음

 

 

os thread creation

이 이벤트는 새로운 OS 스레드가 생성될 때 발생함

오라클은 여러 프로세스와 스레드를 사용하여 데이터베이스 서비스를 제공함

주로 백그라운드 프로세스나 사용자 세션 등이 시작될 때 관련 작업이 수행되는 동안 발생할 수 있다고함

 

control file heartbeat

이 이벤트는 주로 컨트롤 파일이 여전히 활성 상태이며 주기적으로 갱신 중임을 나타냄

이를 통해서 데이터베이스가 정상적으로 작동하고 있는지를 확인할 수 있음

일반적으로 데이터베이스가 정상적으로 작동하는 동안 주기적으로 발생함

이 이벤트는 일반적으로 데이터베이스 성능에 영향을 주지 않는다고 함

 

external table read

이 이벤트는 external table을 읽을때 발생하는 이벤트임

db 기동시 alert log 를 보면 patch 정보들이 길게 나오는걸 볼수 있음

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ vi alert.log
2023-12-08T11:09:11.557277+09:00
===========================================================
Dumping current patch information
===========================================================
Patch Id: 29517242
Patch Description: Database Release Update : 19.3.0.0.190416 (29517242)
Patch Apply Time: 2019-04-18T16:21:17+09:00
Bugs Fixed: 14735102,19697993,20313356,21965541,25806201,25883179,25986062,
26476244,26611353,26872233,27369515,27423500,27666312,27710072,27846298,
27957203,28064977,28072567,28129791,28181021,28210681,28279456,28313275,
28350595,28371123,28379065,28431445,28463226,28489419,28502773,28513333,
28534475,28561704,28569897,28572533,28572544,28587723,28593682,28594086,
.
.

 

 

이 패치 정보들을 불러 올때 external table을 이용해 불러와 이 이벤트가 발생하는것으로 보임

external table 정보 조회시 opatch 관련 테이블을 확인할 수 있음

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SQL>
set lines 200 pages 1000
col owner for a10
col table_name for a20
col directory_name for a20
col directory_path for a50
col location for a15
select det.owner, det.table_name, dd.directory_name, dd.directory_path, del.location
from dba_external_tables det, dba_directories dd, dba_external_locations del
where 1=1
and det.default_directory_name = dd.directory_name
and det.default_directory_name = del.directory_name
and det.owner = 'SYS';
 
OWNER      TABLE_NAME           DIRECTORY_NAME       DIRECTORY_PATH                                     LOCATION
---------- -------------------- -------------------- -------------------------------------------------- ---------------
SYS        OPATCH_XML_INV       OPATCH_SCRIPT_DIR    /ORA19/app/oracle/product/19.0.0/db_1/QOpatch      qopiprep.bat

 

 

 

참조 : 

https://community.oracle.com/mosc/discussion/4553628/what-is-the-root-cause-of-oracle-thread-bootstrap

https://community.oracle.com/mosc/discussion/4134847/oracle-wait-event-oracle-thread-bootstrap-description-and-details

https://docs.oracle.com/cd/E19504-01/802-5938/6i9lnfe69/index.html

https://forums.oracle.com/ords/apexds/post/control-file-heartbeat-8590