오라클은 10g 이후로 active session에 대해 history를 특별한 설정없이 기본적으로 저장합니다. ASH는 v$active_session_history, dba_hist_active_sess_history 두가지 view를 통해 조회할 수 있으며 v$active_session_history는 shared pool내의 ASH 영역에 저장되어 1초 간격의 sampling 데이터입니다. 

dba_hist_active_sess_history 값은 ASH 영역의 active session 정보를 10초 간격으로 sampling 해서 disk로 저장된 정보입니다. 

아래 소개하는 ashdump는 현 시점으로 부터 분 단위의 정보를 sql loader format으로 user dump directory에 저장하게 됩니다. 즉, 문제 시점의 active session 정보를 빠르게 수집할 수 있습니다. 

Command would be like below: where level means minute. lets dump for 10 minutes history

1. SQL> alter session set events 'immediate trace name ashdump level 10'; 
or 
2. SQL> alter system set events 'immediate trace name ashdump level 10'; 
or 
3. SQL> oradebug setmypid 
    SQL> oradebug dump ashdump 10;

수집된 ash file은 Oracle home 밑의 rdbms/demo/ashldr.ctl 파일 통해 sql loader로 DB에 저장할 수 있습니다. 

2594829169,1,161390,"07-18-2003 16:05:21.098717000",13,1,0,"",65535,0,0,2,0,0,0,4294967295,0,0,2,35,100,0,0,10 
05855,0,"oracle@usunrat21 (MMNL)","","",""



참고: 
10g and above Active Session History (Ash) And Analysis Of Ash Online And Offline (Doc ID 243132.1)
http://www.oracle.com/technetwork/database/manageability/ppt-active-session-history-129612.pdf


+ Recent posts