본문 바로가기

IT관련

오라클 SQLPlus 화면에 결과를 뿌리지 않고 수행시간, Plan 만 확인 (set autotrace explain statistics)

Oracle SQL*Plus 상에서 SQL을 실행할때 실행결과는 화면에 뿌리지 않고 최종수행시간만 알고싶은 경우가 있습니다.

이때, 쉽게 사용할 수 있는 방법이 autotrace 기능입니다.

 

원래 autotrace 기능은 자동으로 SQL 실행정보(실행계획, 실행통계)를 출력해주는 기능인데, 이것과 함께 set timing on 을 함께 사용하면 됩니다.

 

 

위에서 set timing on 명령어를 써줬기 때문에 최종수행시간(Elapsed Time) 이 나옵니다.

하지만, set autotrace trace stat 명령어를 줬기 때문에 실행결과는 나오지 않습니다.

실제 EMP 테이블을 조회하기는 하지만, 조회결과는 화면에 출력하지 않고, 최종 조회된 건수인 "14 rows selected." 정보만 화면에 표시합니다.

그리고, 마지막에 Statisics 통계정보를 표시합니다.

 

set autotrace 명령어는 SQL*Plus 상에서 SQL을 실제로 끝까지 수행한 후에 Trace 정보를 출력해주는 명령어입니다.

 

 

set autotrace 의 첫번째 인자는 off/on/traceonly 입니다.

off 는 trace 기능을 끄는 것이고, on 은 SQL실행결과를 함께 화면에 출력하는 것입니다.

traceonly 는 실행결과는 출력하지 말라는 의미입니다.

traceonly 는 약자로 trace 라고만 쓸수도 있습니다.

 

set autotrace 의 두번째 인자는 explain/statistics 입니다.

explain 만 지정하면 실행계획(Plan)만 출력하라는 의미입니다.

statistics 만 지정하면 통계정보만 출력하라는 의미입니다.

약자로 exp, stat 이라고만 쓸수도 있습니다.

주의할 점은, explain 또는 statistics 를 아무것도 지정안하면, 이게 둘다 모두 출력하라는 의미가 되버립니다.

 

set autotrace 도 약자로 set autot 라고만 써도 됩니다.

 

약자만 쓸 수 있어서 처음에는 많이 헷갈립니다.

 

"set autot trace exp"   => "set autotrace traceonly explain"     (Plan만 출력)

"set autot trace stat"   => "set autotrace traceonly statistics"   (통계치만 출력)

"set autot trace"         => "set autotrace traceonly"              (둘다 출력)

"set autot on exp"      => "set autotrace on explain"             (실행결과도 출력하고, Plan 도 출력)

"set timi on"              => "set timing on"                          (실행시간 출력)