SQL*Net break/reset to client待機イベント


通常、この待機イベントは、非常に短いため、ダイナミックビュー(v$session/v$session_wait)から見ることはできません.その本質は字面の意味から解釈すると、ネット待機(network issue)である.例えば、実行されるコードに何らかの可能性のあるエラーが含まれ、呼び出し中にトリガーされた場合、サーバ側のローカルのサービスプロセスは、クライアントが問題情報を受信するまでサービスプロセスがSQL*Net break/reset to client待機中であることをリモートクライアントに通知する義務がある.一般的なSever-clientモードと同様に、dblinkを使用する場合にもこの待機イベントが発生する可能性があります.次に、待機イベントについて説明します.
SQL>  create table tv (t1 int unique);

Table created.

SQL> insert into tv values(1);

1 row created.

SQL> commit;

Commit complete.

SQL> oradebug setmypid;
Statement processed.
SQL>  oradebug event 10046 trace name context forever,level 8;
Statement processed.
SQL> insert into tv values(1);
insert into tv values(1)
*
ERROR at line 1:
ORA-00001: unique constraint (SYS.SYS_C009343) violated

SQL>  oradebug event 10046 trace name context off;
Statement processed.
SQL> select event, total_waits from v$session_event where event like '%break%' and sid =(select distinct sid from v$mystat);

EVENT                                                            TOTAL_WAITS
---------------------------------------------------------------- -----------
SQL*Net break/reset to client                                              2
SQL*Net break/reset to clientが2回発生していることがわかります.traceファイルをさらに分析すると、以下のレコードが見つかります.
EXEC #2:c=8000,e=9020,p=0,cr=10,cu=9,mis=0,r=0,dep=0,og=1,plh=0,tim=1279117896316991
ERROR #2:err=1 tim=1279117896317039
STAT #2 id=1 cnt=0 pid=0 pos=1 obj=0 op='LOAD TABLE CONVENTIONAL  (cr=0 pr=0 pw=0 time=0 us)'
WAIT #2: nam='SQL*Net break/reset to client' ela= 33 driver id=1413697536 break?=1 p3=0 obj#=-1 tim=1279117896317323
WAIT #2: nam='SQL*Net break/reset to client' ela= 521 driver id=1413697536 break?=0 p3=0 obj#=-1 tim=1279117896317915
WAIT #2: nam='SQL*Net message to client' ela= 5 driver id=1413697536 #bytes=1 p3=0 obj#=-1 tim=1279117896317964
SQL*Net break/reset to clientはそれぞれ33 usと521 usであった.設計不良のアプリケーションまたはプログラムに未配置のexceptionが多数存在する場合、SQL*Net break/reset to client待機イベントを引き起こす可能性があります.