실시간 모니터링을 통해 문제를 빠르게 해결하려면 세션 레벨 성능 분석이 필요한데, 오라클 9i까지 제공하던 세션 레벨 동적 뷰만으로는 한계가 많았다. 물론 SQL 트레이스를 통해 가장 상세한 세션 레벨 분석이 가능하지만 다음과 같은 어려움이 있었다.
그렇기에 오라클 10g부터는 ASH 기능을 도입하여, 현재 접속해서 활동중인 Active Session 정보를 1초에 한 번씩 샘플링해서 ASH 버퍼에 저장한다. SGA Shared Pool에서 CPU 당 2mb를 할당받아 세션 정보를 기록하며, 1시간 혹은 버퍼의 2/3가 찰 때마다 디스크(AWR)에 기록한다.
ASH 버퍼에 저장된 세션 히스토리 정보는 v$active_session_history 뷰를 통해 조회할 수 있다. ASH 기능 이용 시 현재뿐 아니라 과거에 발생한 장애 및 성능 저하 원인까지 세션 레벨로 분석할 수 있도록 도와준다. AWR로 옮겨진 정보는 dba_hist_active_sess_history 뷰를 통해 조회할 수 있다.