ORACLEでバインド変数付SQLをトレースする
oracle 10.0.2.4
oracle 9.2.0.1
テキストファイルに保存して、sqlplusから実行すると幸せになれるカモ
prompt '======================================================================' prompt 'SQLトレース取得スクリプト' prompt '----------------------------------------------------' prompt 'SYSじゃないとエラーで落ちるよ' prompt '======================================================================' set line 200 set pages 1000 col SID format '999999' col SERIAL# format '999999' col USERNAME format a10 col PROGRAM format a20 col MACHINE format a20 col STATUS format a10 select SID ,SERIAL# ,USERNAME ,PROGRAM ,MACHINE ,STATUS from V$SESSION where USERNAME = UPPER('&&USERNAME') order by SID,SERIAL# / --トレースの開始 EXECUTE DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(&&SID,&&SERIAL,TRUE); --バインド変数出力の為のトレースレベルの設定(4 or 12) EXECUTE DBMS_SYSTEM.SET_EV(&&SID,&&SERIAL,10046,4,''); prompt '==================================================' prompt 'トレースしたいSQLを実行してください。' prompt '終了後、下記SQLを実行してください。' prompt '--------------------------------------' prompt 'EXECUTE DBMS_SYSTEM.SET_EV(&&SID,&&SERIAL,10046,0,'');' prompt 'EXECUTE DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(&&SID,&&SERIAL,FALSE);' prompt '==================================================' col "ファイル出力先" format a100 select VALUE as "ファイル出力先" from V$PARAMETER where NAME = 'user_dump_dest' / --セッション変数のクリア UNDEFINE SID UNDEFINE SERIAL
tkprofで整形できないのが痛いかなぁ