특정세션에 대해 trace를 거는 방법.
1. 해당 SQL이 돌고 있는 세션의 정보가 필요하다.
select SID,SERIAL#
from v$session
where username=' '
and MACHINE =' '
2.sid,serial#을 알아냈으면 특정세션에 트레이스 시작
SQL> exec SYS.DBMS_SYSTEM.SET_TRACE_IN(SID,SERIAL#,TRUE);
3.해당 세션에서 분석할 sql을 실행 한 후 sql이 실행완료되면 트레이스 종료.
SQL> exec SYS.DBMS_SYSTEM.SET_TRACE_IN(SID,SERIAL#,FALSE);
4.트레이스 파일 위치 확인
SQL> show parameter user_dump_dest
5. 해당 위치로 이동후 트레이스파일이 생성되었는지 확인한다.
트레이스 파일 명칭은 <SID>_ora_<PID>.trc 로 생성된다.
6.트레이스 파일을 텍스트파일로 변경 하기 위하여 tkprof 를 사용해서 분석하자.
$> tkprof 트레이스파일생성위치 새로생성될위치 sys=no
ex> tkprof /oracle/.../orcl_ora_1423.trc /oracle/tracefile00.prf sys=no
p.s : 트레이스 파일의 최대 사이즈 확인
SQL> show parameter max_dump
* Query : 다른 사용자가 DML을 수행중일때 읽기 일관성을 위해 읽어온 블록 수
* Current : DML작업을 수행후 변경 데이터를 읽은 블록수
Oracle/admin