SQL*Net break/reset to client
특정 시간대에 갑자기 SQL*Net break/reset to client 이벤트가 늘었다가 사라짐을 확인했다.
액티브 세션을 확인해보니 Insert 문 두개가 해당 이벤트를 보이고 있었다.
오라클 매뉴얼에서 찾은 이벤트 내용은 아래와 같았고, 애매했다
The server sends a break or reset message to the client. The session running on the server waits for a reply from the client.
Wait Time: The actual time it takes for the break or reset message to return from the client
Tanel poder 포스트(http://blog.tanelpoder.com/2008/04/10/sqlnet-breakreset-to-client/)에서 자세한 내용을 확인할 수 있었다.
결국 에러가 발생했을 때 SQL*Net break/reset to client 이벤트가 발생한다는건데 Insert에서 에러 발생할만한 건은 대부분 중복키.
간단히 테스트를 해본다.
Table created.
sys@ORCL> alter table test add constraint test_pk primary key (col1);
Table altered.
--테스트 테이블과 primary key 생성
sys@ORCL> insert into test values(1);
1 row created.
sys@ORCL> commit;
Commit complete.
-- 1 row를 인서트
sys@ORCL> exit
$ sqlplus / as sysdba
sys@ORCL> select event, total_waits from v$session_event where sid = (select sid from v$mystat where rownum=1);
EVENT TOTAL_WAITS
---------------------------------------------------------------- -----------
Disk file operations I/O 1
SQL*Net message to client 11
SQL*Net message from client 11
sys@ORCL> save 1 rep
Wrote file 1.sql
-- 중복 에러 발생시키기 전 이벤트 확인, 1.sql로 save
sys@ORCL> insert into test values (1);
insert into test values (1)
*
ERROR at line 1:
ORA-00001: unique constraint (SYS.TEST_PK) violated
sys@ORCL> @1
sys@ORCL> select event, total_waits from v$session_event where sid = (select sid from v$mystat where rownum = 1)
2 /
EVENT TOTAL_WAITS
---------------------------------------------------------------- -----------
Disk file operations I/O 1
SQL*Net message to client 19
SQL*Net message from client 19
SQL*Net break/reset to client 2
-- 예상하던 대로 SQL*Net break/reset to client 이벤트가 확인된다.
중복키 Insert 의심을 하고 WAS쪽 확인을 요구할 생각이다.