SQL*Net more data from client 이벤트는 클라이언트로부터 데이터 수신을 대기할 때 발생합니다. 주로 바인드 변수 값의 크기가 큰 INSERT 문에서 발생하지만, 구문의 크기가 큰 쿼리에서도 발생할 수 있습니다.
The server is waiting on the client to send more data to its client shadow process, in an already initiated operation.
아래는 구문의 크기에 따라 SQL*Net more data from client 이벤트가 발생하는 횟수를 테스트한 결과입니다. 첫 번째는 8 KB 단위로 데이터를 전송하고 그 이후부터는 32 KB 단위로 데이터를 전송한다는 것을 유추할 수 있습니다.
-- 1
+--------------------------------------------------+----------+-----------+-----------+--------------------+
|NAME | WAITS| WAITED| AVG_WAIT|CLASS |
+--------------------------------------------------+----------+-----------+-----------+--------------------+
|SQL*Net more data from client | 1.00 | 6.00us| 6.00us|Network | -- 01.sql: 8 KB
|SQL*Net more data from client | 2.00 | 2.36ms| 1.18ms|Network | -- 02.sql: 40 KB (+ 32 KB)
|SQL*Net more data from client | 3.00 | 5.90ms| 1.97ms|Network | -- 03.sql: 71 KB (+ 31 KB)
|SQL*Net more data from client | 4.00 | 7.78ms| 1.95ms|Network | -- 04.sql: 103 KB (+ 32 KB)
+--------------------------------------------------+----------+-----------+-----------+--------------------+
테스트를 위해 아래와 같이 DEFAULT_SDU_SIZE 파라미터와 SDU 파라미터를 64 KB로 변경하겠습니다.
-- 2-1: sqlnet.ora (server)
DEFAULT_SDU_SIZE=65535
-- 2-2: tnsnames.ora (client)
TEST=(DESCRIPTION=(SDU=65535)(ADDRESS=(PROTOCOL=TCP)(HOST=DB1)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=DB)))
쿼리를 다시 수행하면 크기가 103 KB인 4번 쿼리만 SQL*Net more data from client 이벤트가 1회 발생하는 것을 확인할 수 있습니다. 아울러 크기가 71 KB인 3번 쿼리에서 SQL*Net more data from client 이벤트가 발생하지 않은 점에서 앞선 설정에 의해 첫 번째 데이터 전송 단위가 변경된 것을 유추할 수 있습니다. 참고로 SQL*Net listener tracing를 사용하면 SDU에 대한 상세한 분석이 가능합니다. 마지막으로 구문의 크기가 큰 쿼리에 대한 근본적인 해법은 SDU 크기 변경이 아니라 뷰나 PTF 등을 통해 구문의 크기를 줄이는 것입니다.
-- 3
+--------------------------------------------------+----------+-----------+-----------+--------------------+
|NAME | WAITS| WAITED| AVG_WAIT|CLASS |
+--------------------------------------------------+----------+-----------+-----------+--------------------+
|SQL*Net more data from client | 1.00 | 3.99ms| 3.99ms|Network | -- 04.sql: 103 KB
+--------------------------------------------------+----------+-----------+-----------+--------------------+
아래 링크에서 테스트에 사용한 쿼리를 다운로드할 수 있습니다.