안녕하세요 surmin입니다.
오늘은 v$diag_alert_ext
관련 내용을 공유드립니다. 이 내용이 참고하시는데 도움이 되셨으면 좋겠습니다 🙂
info
- v$diag_alert_ext 뷰는 메모리 기반이 아닌 디스크 기반으로 동작합니다. Oracle 공식 문서에서 명시하기를 “V$DIAG_ALERT_EXT를 쿼리할 때, Oracle은 log.xml 파일을 읽고 데이터를 파싱하여 행으로 반환
Test
HRDEV:/oracle/diag/rdbms/hrdev/HRDEV/alert @HRDEV] vi log.xml
HRDEV:/oracle/diag/rdbms/hrdev/HRDEV/alert @HRDEV] mv log.xml /tmp/log.xml
#mv 후 조회안됨 확인
SELECT
df.tablespace_name,
df.file_name,
COUNT(*) AS resize_count,
ROUND(SUM(
TO_NUMBER(REGEXP_SUBSTR(v.message_text, 'new size ([0-9]+)', 1, 1, NULL, 1)) -
TO_NUMBER(REGEXP_SUBSTR(v.message_text, 'old size ([0-9]+)', 1, 1, NULL, 1))
) / 1024, 2) AS increase_mb
FROM v$diag_alert_ext v
JOIN (
SELECT file_id, file_name, tablespace_name FROM dba_data_files
UNION ALL
SELECT file_id, file_name, tablespace_name FROM dba_temp_files
) df
ON REGEXP_SUBSTR(v.message_text, 'file# ([0-9]+)', 1, 1, NULL, 1) = TO_CHAR(df.file_id)
WHERE v.message_text LIKE '%Resize operation completed%'
GROUP BY df.tablespace_name, df.file_name
ORDER BY df.file_name;
- 원복 후 확인
HRDEV:/oracle/diag/rdbms/hrdev/HRDEV/alert @HRDEV] ls
log.xml
SQL> /
TABLESPACE_NAME FILE_NAME RESIZE_COUNT INCREASE_MB
-------------------- -------------------------------------------------- ------------ -----------
SYSAUX /oracle/oradata/HRDEV/sysaux01.dbf 4 60
UNDOTBS1 /oracle/oradata/HRDEV/undotbs01.dbf 8 40
USERS /oracle/oradata/HRDEV/users01.dbf 1 995
정리
v$diag_alert_ext와 물리적 alert log 파일의 관계
Oracle은 alert log의 두 가지 버전을 동시에 유지합니다:
- XML 포맷 버전:
<ADR_HOME>/alert/log.xml
(v$diag_alert_ext 뷰용) - 텍스트 포맷 버전:
<ADR_HOME>/trace/alert_<SID>.log
감사합니다.