쿼리 튜닝 시 가장 좋은 방법은 실제 실행된 쿼리문에 대해서 Trace를 떠보는 것입니다.
■ 전제조건
1. plustrace 롤이 DB에 있어야 함
→ 없으면 sys로 로그인 후 $ORACLE_HOME/sqlplus/admin/plustrace.sql 실행
2. 쿼리를 실행하는 user가 plustrace 롤을 가지고 있어야 함
→ 없으면 sys로 로그인 후 grant plustrace to [user];
3. plan_table이 DB에 있어야 함
→ 없으면 user로 로그인 후 $ORACLE_HOME/rdbms/admin/utlxplan.sql 실행
■ Trace 실행
1. 우선 sys로 로그인하여 아래의 파라미터 값을 확인합니다.
SQL> show parameter timed
SQL> show parameter sql_trace
2. 이제 쿼리를 실행할 user로 로그인합니다.
3. 위의 파라미터 값들이 둘 다 true라면 다음 단계로 진행, 만일 false라면 아래의 명령 실행 (현재 세션에만 적용)
SQL> alter session set timed_statistics=true;
SQL> alter session set sql_trace=true;
4. 다음 명령 실행
SQL> set autotrace on
SQL> execute dbms_session.set_sql_trace(true);
5. Trace를 뜰 쿼리문을 실행시킵니다.
■ 결과 확인
1. 결과는 user dump destination 에 저장됩니다.
→ show parameter user로 확인, 보통 $ORACLE_HOME/admin/SID/udump에 위치
2. 가장 최근의 파일을 찾습니다.
# ls -altr
3. 보기 편한 모양으로 만들기 위해 tkprof 명령을 사용합니다.
# tkprof [가장최근의덤프파일] [원하는 파일명]
4. 만들어진 text 파일을 확인합니다.
'ORACLE' 카테고리의 다른 글
Oracle에서 행을 열로 바꿔서 출력 (sys_connect_by_path) (0) | 2010.02.07 |
---|---|
Oracle 10g 설치 후 접속이 안될 경우 (ORA-12514 에러) (0) | 2009.06.25 |
Oracle 내장함수 (0) | 2009.04.14 |
undo tablespace 사이즈 변경 (0) | 2008.12.03 |
DB Link (0) | 2008.12.03 |
control file 위치 변경 (0) | 2008.12.03 |
import 시에 table과 index를 분리하여 저장하는 방법 (0) | 2008.12.03 |
Database Reorg. (0) | 2008.12.03 |
ORA-04021 timeout occurred while waiting to lock object (0) | 2008.12.02 |
로컬에서 @SID (Service Name) 생략하기 로그인하기 (0) | 2008.12.02 |