TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-08-11 |
제목 | Client에서 SQL trace를 뜨는 방법 | ||
---|---|---|---|
Client에서 SQL trace를 뜨는 방법
EXPLANATION ----------- 오라클을 사용하는 tool 에서 sql trace 를 사용하고자 하면 alter session set sql_trace=true ; 를 사용한다. 또는 dbms_session.set_sql_trace (true) 사용한다. 이는 forms 를 비롯하여 precompiler 를 포함한다. 또 이의 반대는 alter session set sql_trace= false ; 를 사용한다. 또는 dbms_session.set_sql_trace (false) 사용한다. 이 때 실행된 결과는 user_dump_dest 에 쌓이는데 , file 이름은 process 번호를 참고한다. 그러나 MTS 의 경우 trace file 의 구분이 모호해지므로 client를 connect 시 dedicate 로 붙여 trace 를 사용하여야 하며, 만일 다른 session 에서 다른 session의 것을 trace 뜨고 싶으면, dbms_system.set_sql_trace_in_session 을 사용할 수 있다. EXAMPLE -------- 이의 사용법은 다음과 같다. 1. Setup catproc.sql 에서 생성되는 package 와는 달리 dbms_system 의 public synonym 은 생성되지 않고 권한도 부여되지 않는다. DB 생성 초기에 SYS user 만 reference 할 수 있으므로 이 package 를 사용할 user에게 권한을 부여한다. 예제 : GRANT EXECUTE ON DBMS_SYSTEM to username; 2. v$session 으로부터 SID 와 serial 번호를 부여한다. SQL> select sid, serial#, osuser, username 2> from v$session; SID SERIAL# OSUSER USERNAME ------------------------------------- 7 66 3. 원하는 session 에서 SQL trace 를 setting 한다. exec sys.dbms_system.set_sql_trace_in_session (12,16631,TRUE); 또는 pl/sql procedure 에서: begin sys.dbms_session.set_sql_trace (( end 4. session 에서 SQL Trace 를 끝마친다. 이 결과는 user_dump_dest에 쌓인다. exec sys.dbms_system.set_sql_trace_in_session ( 또는 pl/sql procedure 에서 begin sys.dbms_session.set_sql_trace ( end 만일 os user 가 khpark 인 client 에서 실행하는 sql 의 trace 를 뜨고 싶으면 svrmgrl> select sid,serial#,osuser from v$session where osuser='KHPARK'; sid serial# osuser ================================================= 8 12 khpark svrmgr>execute dbms_system.set_sql_trace_in_session (8,12,TRUE); 이렇게 하면 udump 에 trace file 이 생기므로 이를 이용하여 tkprof 를 수행한다. from otn --------------------- |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |