[20180926]等待事件SQLNet more data from client 7.txt
[20180926]等待事件SQLNet more data from client 7.txt
--//前幾天測試分析等待事件SQLNet more data from client,今天測試改變檔案大小後,檢視檢視V$SESSION_WAIT_HISTORY看到P2的變化.
--//連結在12c for windows測試的.
--//上班在11g for linux重複測試看看.
1.環境:
SCOTT@book> @ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
--//sqlnet.ora檔案設定DEFAULT_SDU_SIZE=8192
2.測試建立指令碼:
--//建立指令碼大小8192,命名8192.txt(注意檔案格式是linux格式),指令碼很長不在貼出.
3.建立測試指令碼:
--//先執行如下:
CREATE TABLE tt AS
SELECT sysdate d,0 c,P2,TIME_SINCE_LAST_WAIT_MICRO
FROM V$SESSION_WAIT_HISTORY
WHERE sid = 1
AND event = 'SQL*Net more data FROM client';
$ cat init.sql
variable i number ;
exec :i := 8192;
column sid new_value v_sid
select sid from v$mystat where rownum=1;
set verify off
set head off
$ cat loop.sql
@@8192.txt
insert into tt select sysdate,:i,P2,TIME_SINCE_LAST_WAIT_MICRO from V$SESSION_WAIT_HISTORY where sid=&v_sid and event='SQL*Net more data from client';
host sed -i -e "3s/^.//g" 8192.txt
exec :i := :i - 1;
--//注:8192.txt 第3行最好長一些.至少包括394個字元.
$ cat loop1.sh
#! /bin/bash
sqlplus scott/book <<EOF
@ init.sql
$(seq 1 394 | xargs -i{} echo @loop )
quit
EOF
--//測試394次,每次8192.txt檔案大小減少1個字元.
--//注:我這裡本地連線,沒有透過網路.
4.測試結果如下:
--//執行
$ source loop1.sh
...
--//僅僅C=7844後,不再插入,也就是沒有遇到這個等待事件.
5.繼續分析:
SCOTT@book> select * from tt where c > 8188 order by c desc;
D C P2 TIME_SINCE_LAST_WAIT_MICRO
------------------- ---------- ---------- --------------------------
2018-09-25 09:26:40 8192 10 51
2018-09-25 09:26:40 8191 10 83
2018-09-25 09:26:40 8190 10 77
2018-09-25 09:26:40 8189 10 35
--//可以發現該版本與windwos的測試不同,P2沒有變化.
--//而且與前面的測試也不一樣,前面測試P=30(0x1e).主要問題當是透過網路,
--//這次沒有透過網路.使用本地網路.
--//sql語句長度減少,P2不變.
SELECT *
FROM (SELECT c, p2, LEAD (p2) OVER (ORDER BY c DESC) p2x FROM tt)
WHERE p2 <> p2x + 1 ;
C P2 P2X
---------- ---------- ----------
8192 10 10
8191 10 10
8190 10 10
8189 10 10
8188 10 10
8187 10 10
...
7914 10 10
7913 10 10
7912 10 10
7911 10 10
7910 10 10
7909 10 10
7908 10 10
7898 1 1
7897 1 52
287 rows selected.
--//檔案大小8192減少到7908,P2=10.沒有變化,不理解為什麼?
SCOTT@book> select * from tt where c in (select min(C) from tt);
D C P2 TIME_SINCE_LAST_WAIT_MICRO
------------------- ---------- ---------- --------------------------
2018-09-25 09:26:43 7845 1 77
--//也就是sql語句長度<=7844(如果不包括最後分號,換行,就是7842),不再出現SQL*Net more data from client等待事件.
6.繼續分析:
--//透過網路測試,修改檔案8192.txt大小為8191.
@ &r/spid
@ 8192.txt
--//檢視P2=30.
# tcpdump -l -i eth0 -s 0 -A port 1521 and host 192.168.98.6 -nn -w 8191.raw
--//檢視8192.raw
0002080: 06c0 a864 4ec7 c305 f1dc 3cd7 46b4 1803 ...dN.....<.F...
0002090: c450 1840 2979 4100 0001 7b00 0006 0000 .P.@)yA...{.....
00020a0: 0000 0035 3637 3839 3031 3233 3435 3637 ...5678901234567
00020b0: 3839 3031 3233 3435 3637 3839 3031 3233 8901234567890123
00020c0: 34ff 3536 3738 0a61 3132 3334 3536 3738 4.5678.a12345678
~~ --> 長度指示器
00020d0: 3930 3132 3334 3536 3738 3930 3132 3334 9012345678901234
00020e0: 3536 3738 3930 3132 3334 3536 3738 3930 5678901234567890
00020f0: 3132 3334 3536 3738 3930 3132 3334 3536 1234567890123456
0002100: 3738 3930 3132 3334 3536 3738 3930 3132 7890123456789012
0002110: 3334 3536 3738 3930 3132 3334 3536 3738 3456789012345678
0002120: 3930 3132 3334 3536 3738 0a61 3132 3334 9012345678.a1234
0002130: 3536 3738 3930 3132 3334 3536 3738 3930 5678901234567890
0002140: 3132 3334 3536 3738 3930 3132 3334 3536 1234567890123456
0002150: 3738 3930 3132 3334 3536 3738 3930 3132 7890123456789012
0002160: 3334 3536 3738 3930 3132 3334 3536 3738 3456789012345678
0002170: 3930 3132 3334 3536 3738 3930 3132 3334 9012345678901234
0002180: 3536 3738 3930 3132 3334 3536 3738 0a61 56789012345678.a
0002190: 3132 3334 3536 3738 3930 3132 3334 3536 1234567890123456
00021a0: 3738 3930 3132 3334 3536 3738 3930 3132 7890123456789012
00021b0: 3334 3536 3738 3930 3132 3334 3536 3738 3456789012345678
00021c0: 391d 3031 3233 3435 3637 0a2a 2f20 7379 9.01234567.*/ sy
~~ --> 長度指示器,轉換10進位制 29,看來前面的測試僅僅是巧合.^_^.
00021d0: 7364 6174 6520 6672 6f6d 2064 7561 6c00 sdate from dual.
00021e0: 0100 0000 0000 0000 0000 0000 0000 0000 ................
}
--//看來前面的測試只不過是一個巧合.還是無法知道P2是如何確定的.
7.總結:
--//1.SQL*Net more data from client,主要原因就是sql語句太長.與SDU設定存在密切關係.
--//2.我的測試大約78XX上下出現該等待事件,設定SDU=8192的情況下.不過還是無法分析出P2,oracle如何確定的.
--//3.如果應用很多這類sql語句,特別in的情況,可以修改為繫結變數.不行增加SDU.
--//4.看了一些連結我感覺設定大的SDU,會增加PGA記憶體的消耗.必須綜合考慮,連線數量等情況,不過現在的伺服器記憶體都很大,估計影響沒我
--// 想象的這麼嚴重.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2214964/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20180925]等待事件SQLNet more data from client 6.txt事件SQLclient
- Oracle的SQL*Net more data from client 等待事件分析OracleSQLclient事件
- [20180922]等待事件SQLNet more data from client 4.txt事件SQLclient
- [20180920]等待事件SQLNet more data from client 3.txt事件SQLclient
- 【等待事件】SQL*Net more data to client事件SQLclient
- 【等待事件】SQL*Net more data from dblink事件SQL
- SQL*Net more data from clientSQLclient
- SQL* Net message to client 和SQL * Net more data to client等待事件SQLclient事件
- [20180918]等待事件SQL/Net more data from client.txt事件SQLclient
- SQL*Net more data to client 等待事件造成的效能問題SQLclient事件
- SDU&SQL*NET MORE data to clientSQLclient
- SQL*Net more data from dblink Reference NoteSQL
- 【等待事件】SQL*Net vector date to client事件SQLclient
- select hang住等待SQL*Net message from ClientSQLclient
- SQL*Net more data from dblink引起library cache pinSQL
- 診斷network網路SQL*Net more data to client_awrSQLclient
- 【等待事件】SQL*Net message from dblink事件SQL
- [20190622]收集SQLNet Message From Client資訊.txtSQLclient
- [異常等待事件latch undo global data]分析事件
- [轉載]Oracle等待事件Data file init writeOracle事件
- SQL*Net message from client 事件產生的原因分析SQLclient事件
- ORA - 12502 TNS:listener received no CONNECT_DATA from clientclient
- Export data from a data blockExportBloC
- 【等待事件】ORACLE常見等待事件事件Oracle
- 【等待事件】等待事件系列(5.1)--Enqueue(佇列等待)事件ENQ佇列
- 等待事件事件
- SQL*Net message from clientSQLclient
- [20130409]Data file init write等待事件.txt事件
- SQL*Net break/reset to client等待SQLclient
- Solidity事件,等待事件Solid事件
- 【TUNE_ORACLE】等待事件之等待事件類別Oracle事件
- 等待事件分析事件
- oracle等待事件Oracle事件
- Oracle 等待事件Oracle事件
- px等待事件事件
- 等待事件 二事件
- Get data style from ExcelExcel
- Unload data from oracleOracle