-
[Oracle] 오라클은 SQL 실행 이력을 어떻게 관리할까?공부 이야기/ORACLE 2024. 5. 17. 00:18
1. 오라클 운영시 SQL 실행 이력을 확인하고 검수하는 일은 매우 중요하다.
2. 오라클은 어떻게 실행 이력을 관리를 하고 관리자는 무엇을 확인하면 되는 것일까?
3. 우선 ASH(Active Session History) 를 알아야 한다.
4. 오라클은 1초에 한 번씩 샘플링을 해서 Shared Pool 메모리 영역에 세션 및 SQL 실행 정보를 저장한다.
5. CPU당 2MB를 할당해서 저장한다.
6. 1시간 혹은 할당 메모리의 2/3이 찼을 경우 디스크에 기록을 한다. AWR 로그는 디스크에 기록된 내용을 수집하는 것이다.
7. v$active_session_history 에서 자세한 내용을 확인할 수 있다.
select /* 1. 샘플링이 일어난 시간과 샘플 ID */ sample_id, sample_time /* 2. 세션정보, User명, 트랜잭션ID */ , session_id, session_serial#, user_id, xid /* 3. 수행중 SQL 정보 */ , sql_id, sql_child_number, sql_plan_hash_value /* 4. 현재 세션의 상태 정보 'ON CPU' 또는 'WAITING' */ , session_state /* 5. 병렬 Slave 세션일때, 쿼리 코디네이터(QC) 정보를 찾을 수 있게함 */ , qc_instance_id, gc_session_id /* 6. 현재 세션의 진행을 막고 있는(=블로킹) 세션 정보 */ , blocking_session, block_session_serial#, blocking_session_status /* 7. 현재 발생 중인 대기 이벤트 정보 */ , event, event#, seq#, wait_class, wait_time, time_waited /* 8. 현재 발생 중인 대기 이벤트의 파라미터 정보 */ , p1text, p1, p2text, p2, p3text, p3 /* 9. 해당 세션이 현재 참조하고 있는 오브젝트 정보. V$session 뷰에 있는 row_wait_obj#, row_wait_file#, row_wait_block# 컬럼을 가져온 것임 */ , current_obj#, current_file#, current_block# /* 10. 애플리케이션 정보 */ , program, module, action, client_id from V$ACTIVE_SESSION_HISTORY
'공부 이야기 > ORACLE' 카테고리의 다른 글
[Oracle] Isolation level과 Snapshot too old (0) 2024.05.19 [Oracle] DML 트랜잭션이 발생했을 때의 과정 (1) 2024.05.19 [Oracle] 시퀀스 이모저모 (0) 2024.05.16 [oracle] parallel 옵션에 대한 고찰 (0) 2024.05.14 [Oracle] MView란? (0) 2024.05.08