TroubleShoot

SQL*Net break/reset to client

neo-orcl 2017. 2. 2. 18:48

특정 시간대에 갑자기 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에서 에러 발생할만한 건은 대부분 중복키.

 

간단히 테스트를 해본다.

 

sys@ORCLcreate table test(col1 number);

Table created.
sys@ORCLalter 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@ORCLselect 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쪽 확인을 요구할 생각이다.