우리 회사 데이터베이스를 티베로로 변경하기
SQL Trace 0 0 99,999+

by 티베로 티베로 실행계획 [2018.10.11]


SQL Trace는 트레이스 대상 세션을 지정할 수 있으며 Auto Trace보다 더 많은 정 보를 실행계획과 함께 파일형태로 SQL_TRACE_DEST에 지정된 경로에 저장한다.

사용자는 해당 파일을 tbprof 툴을 이용하여 보기 좋은 형태로 포맷하여 확인할 수 있다. 데이터베이스 전체 세션을 대상으로 SQL TRACE 정보를 기록할 수도 있지 만 성능에 많은 영향을 미치므로 다음 예제와 같이 세션 단위로 사용해야만 한다.

실행 문법(자기 세션)

alter session set sql_trace=’Y’;

실행 문법(지정 세션)

EXEC SYS.DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(SID, SERIAL, TRUE);

TBPROF

tbprof tracefile outputfile [print= ] [sort= ] [aggregate= ]

1) 자기 세션에서 수행되는 SQL을 SQL Trace 추출
@tibero:/log/tibero/tibero/sqltrace # tbsql tiberotest/tibero

SQL> alter session set sql_trace='Y';
SQL> select sum(1) from code;
------------
 SUM(1)
-----------
 4


SQL> SELECT NAME, VALUE FROM V$PARAMETERS WHERE NAME='SQL_TRACE_DEST'
-------------  ------------
NAME           VALUE
-------------  ------------
SQL_TRACE_DEST /log/tibero/tibero/sqltrace/


SQL> quit
Disconnected.


@tibero:/log/tibero/tibero/sqltrace # ls
tb_sqltrc_24969374_56_1846968.trc

@tibero:/log/tibero/tibero/sqltrace # tbprof tb_sqltrc_24969374_56_
1846968.trc tb_sqltrc_24969374_56_1846968.out sys=no

@tibero:/log/tibero/tibero/sqltrace # ls
tb_sqltrc_24969374_56_1846968.trc tb_sqltrc_24969374_56_1846968.out

2) output 확인
@tibero:/log/tibero/tibero/sqltrace # vi tb_sqltrc_24969374_56_1846968.out
 UserID: 23

select sum(1) from code

stage  count  cpu elapsed current query disk rows
------ ----- ---- ------- ------- ----- ---- ----
 parse     1 0.00    0.00       0     0    0    0
 exec      1 0.00    0.00       0     0    0    0
 fetch     1 0.00    0.00       9    17    0    1
------ ----- ---- ------- ------- ----- ---- ----
 sum       3 0.00    0.00       9    17    0    1
 
 =========================================================================
 rows execution plan
----- --------------------------------------------------------------------
 1    column projection (et=15, cr=0, cu=0, co=132, cpu=0, ro=1)
 1      sort aggr (et=107, cr=0, cu=0, co=132, cpu=0, ro=1)
 4        table access (full) CODE(2543) (et=429, cr=17, cu=9, co=132, cpu=0, ro=19239)
----- --------------------------------------------------------------------
*et(elapsed time),cr(consistent read block),cu(current block),co(cost), ro(rows)

3) 지정 세션에서 수행되는 SQL을 SQL Trace 추출
-- tbsql sys/***** 접속 후 필요 권한을 tiberotest에 설정
GRANT EXECUTE ON DBMS_SYSTEM TO TIBEROTEST;
GRANT SELECT ON SYS.V$SESSION TO TIBEROTEST;


-- tbadmin, tbsql 을 통해 tiberotest 계정으로 로그인한 후
-- tbsql에서 세션 확인
select sid,serial#,sql_trace,prog_name,username
from v$session where user name='TIBEROTEST';

 SID SERIAL#  SQL_TRACE PROG_NAME USERNAME
---- -------- --------- --------- -------------
 52  5021700  DISABLED  tbAdmin   TIBEROTEST <--트레이스를 설정할 세션
 54  5022664  DISABLED  tbsql     TIBEROTEST <--나의 세션
 
 
--tbsql에서 tbAdmin으로 접속한 세션으로 sql trace 설정
EXEC SYS.DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(52, 5021700, TRUE)

--trace 설정 확인
select sid, serial#, sql_trace, prog_name, username
from v$session where username = 'TIBEROTEST';


SID SERIAL# SQL_TRACE PROG_NAME USERNAME
--- ------- --------- --------- ------------
 52 5021700 ENABLED   tbAdmin   TIBEROTEST <--트레이스를 설정할 세션
 54 5022664 DISABLED  tbsql     TIBEROTEST <--나의 세션
 
-- 이후 tbAdmin 에서 SQL 수행후 tracefile을 추출하는 과정은 
-- 1) 자기세션 trace 추출과 동일함

  • - 해당 강좌는 도서 " [우리 회사 데이터베이스를 티베로로 변경하기]"의 내용을 옮겼습니다.
  • - 해당 도서는 기간계 DBMS(DATABASE MANAGEMENT SYSTEM)를 티베로로 전환하는 실제 프로젝트를 수행한 실무자가 DBMS 전환 과정과 실제 적용 사례, 문제 해결 과정 등을 자세하게 설명하고 있습니다.

- 강좌 URL : http://www.gurubee.net/lecture/4153

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입