Skip to Main Content

Japanese

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

待機SQLを特定する方法をご教授頂きたく。

3278776Sep 3 2017 — edited Sep 3 2017

select sid,serial#,username,program,machine,status,server ,terminal,sql_address,sql_hash_value from v$session where  type != 'BACKGROUND' and username is not null ;

select sid,seq#,event,p1,p2,p3, seconds_in_wait , state from v$session_wait where state = 'WAITING' and event not like 'SQL*Net message%' and event != 'smon timer' and  event != 'pmon timer' and event != 'rdbms ipc message' and event =

'wakeup time manager' ;

で待機SQLを検知しようかと検討しております。

ただ、v$session_wait とv$sessionを1文にしてfor文の1秒置きに取得する方法ないものでしょうか?

SQLトレースもけんとうしておりますが、対象SQLと画面からのSessionIDの紐つけが分からず、ご教授頂けますと幸いです。

検討中のSQLトレース取得方法です。

##SQLトレースを利用可能に変更(待機イベント、バインド変数、適応出力)

SQL> ALTER SESSION SET TIMED_STATISTICS=TRUE;

SQL> ALTER SESSION SET MAX_DUMP_FILE_SIZE=UNLIMITED;

SQL> ALTER SESSION SET TRACEFILE_IDENTIFIER='SQLTRACE';

SQL> ALTER SESSION SET EVENTS 'sql_trace wait=true,bind=true,plan_stat=adaptive';

##調査対象の処理を実行

ALTER SESSION SET EVENTS '10046 trace name context forever, level 12';

EXECUTE DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(103,19,TRUE);

EXECUTE DBMS_SYSTEM.SET_EV(103,19,10046,12,'');

ALTER SESSION SET SQL_TRACE=TRUE;

#解除

ALTER SYSTEM SET EVENTS '10046 trace name context off';

ALTER SYSTEM SET SQL_TRACE = FALSE;

いい方法ありましたらよろしくお願いします。

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Oct 1 2017
Added on Sep 3 2017
0 comments
1,484 views