SQL*Net message from client 事件产生的原因分析

简介: 今天同事在做数据库巡检时,发现巡检报告中有大量的SQL*Net message from client等待事件。同事问什么情况下回产生SQL*Net message from client,为什么回产生SQL*Net message from client。
<div> </div> <div> 今天同事在做数据库巡检时,发现巡检报告中有大量的SQL*Net message from client等待事件。同事问什么情况下回产生SQL*Net message from client,为什么回产生SQL*Net message from client。<br /> <div> 1.对于数据库的一个session来说,每时每刻都在wait 的状态。<br /> WAIT FOR IO / WAIT FOR CPU / WAIT FOR LATCH /WAIT FOR ...<br /> 这一点你可以查询 v$session_wait,总有数据.<br /> SQL&gt;select sid,event,p1,p1raw from v$session_wait;<br /> <br /> 2.对于Server process来说,如果客户端发来一个请求,它处理完所有需要处理的请求之后,它就进入另一个WAIT,<strong>SQL</strong>*<strong>Net</strong> <strong>message</strong> <strong>from</strong> <strong>client</strong> ,等待着Cilent发来请求让它处理,而我们把这种wait叫做空闲事件(<span>ildel event)</span>,并不代表真正的loading。<br /> 举一日常生活中的例子,你去银行办理业务,办理业务的窗口的业务员。如果有很多客户在等待办理业务,那么业务员会非常忙碌,但是,当他办理所有排队的业务后,没有人办理业务了,这时,业务员就处于了SQL*Net message from client状态,一直等待有人走进大厅来办理业务的客户。<span>就相当于业务员wait for "业务</span><span style="font-size:x-small;"><strong>from客户</strong>“,事实上是在休息,也就是没有loading.<br /> </span><br /> 4.当然也有其他情况,比如,业务员办理完业务后,一直没有按叫号器,大厅里有很多人都在等待办理业务 ,这种情况下的 (SQL*Net message from client<span style="display:none;" id="__kindeditor_bookmark_start_123__"></span>) 就不正常了。相<span style="color:#000000;">对应的Oracle里的就是网络不畅,<strong>Client</strong>想发信息给Server process,结果不成功,而Server process一直是wait for <strong>SQL</strong>*<strong>Net</strong> <strong>message</strong> <strong>from</strong> <strong>client</strong> .</span><br /> 5.结论,<span>只要网络没问题。<strong>SQL</strong>*<strong>Net</strong> <strong>message</strong> <strong>from</strong> <strong>client</strong> 这个wait不用管。</span><br /> <br /> <p> <span style="font-size:18px;"><strong>SQL*Net message to client</strong></span> </p> <pre style="display:none;" class="sql" name="code">SQL&gt; select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'SQL*Net message to client'; EVENT# NAME PARAMETER1 PARAMETER2 PARAMETER3 ---------- -------------------------------------------------- --------------- --------------- -------------------- 255 SQL*Net message to client driver id #bytes</pre> 这个等待事件发生在服务器端向客户端发送消息的时候。当服务器端向客户端发送消息产生等待时,可能的原因是用户端太繁忙,无法及时接收服务器端送来的消息,也可能是网络问题导致消息无法从服务器端发送到客户端。<br /> <p> 这个等待事件包含两个参数。 </p> <p> driver id:服务器端和客户端连接是用的协议信息。 </p> #bytes:服务器端向客户端发送消息的字节数。<br /> <p> <br /> </p> <p> <span style="font-size:18px;"><strong>SQL*Net message to dblink</strong></span> </p> <pre style="display:none;" class="sql" name="code">SQL&gt; select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'SQL*Net message to dblink'; EVENT# NAME PARAMETER1 PARAMETER2 PARAMETER3 ---------- -------------------------------------------------- --------------- --------------- -------------------- 256 SQL*Net message to dblink driver id #bytes </pre> 这个等待事件和SQL*Net message to client相同,不过是发生在数据库服务器端和服务器端之间的等待事件,产生这个等待的原因可能是远端服务器繁忙,而无法即时接收发送过来的消息,也可能是服务器之间网络问题导致消息无法发送过来。 <p> <br /> </p> <p> 这个等待事件包含两个参数。 </p> <p> driver id:服务器端和另一个服务器端连接是用的协议信息。 </p> <p> #bytes:服务器端通过dblink从另一个服务器端收到的消息的字节数。 </p> </div> <br /> 我们可以通过下面语句查询数据库看有什么在等待, </div> <div> 查询v$session_wait </div> <div> </div> <div> SELECT S.SID,<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S.SERIAL#, <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S.USERNAME,<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S.STATUS,<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S.MACHINE,<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S.PROGRAM,<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S.MODULE,<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A.SQL_TEXT<br /> &nbsp; FROM V$SESSION S,<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; V$SQLAREA A<br /> WHERE S.USERNAME IS NOT NULL<br /> &nbsp;&nbsp; AND S.SQL_ADDRESS = A.ADDRESS<br /> </div> <div> </div> <div> 看见<strong>SQL</strong>*<strong>Net</strong> <strong>message</strong> <strong>from</strong> <strong>client</strong> 等待时间最长,其实这个是oracle空闲等待时间,只要网络没有问题,可以不用考略这个wait。 <div> </div> <div> </div> </div> <div> </div>
相关文章
|
1月前
|
SQL 索引
19. 一个SQL语句执行很慢, 如何分析
该内容介绍了如何分析执行慢的SQL语句。首先启用慢查询日志或使用命令获取慢查询的SQL。然后利用`EXPLAIN`命令分析,关注其中的`select_type`, `type`, 和 `extra`字段。`select_type`涉及子查询和联合查询的类型,`type`表示查询优化器使用的访问类型,性能从上到下递减,`extra`字段提供额外信息,如是否使用索引等。
19 0
|
2月前
|
安全 数据安全/隐私保护 开发者
三款.NET 代码混淆工具比较分析:ConfuserEx、Obfuscar 和 Ipa Guard
三款.NET 代码混淆工具比较分析:ConfuserEx、Obfuscar 和 Ipa Guard
|
2月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
74 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
13天前
|
SQL 数据可视化 算法
SQL Server聚类数据挖掘信用卡客户可视化分析
SQL Server聚类数据挖掘信用卡客户可视化分析
|
5天前
|
SQL 分布式计算 数据可视化
数据分享|Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析
数据分享|Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析
|
11天前
|
SQL 机器学习/深度学习 数据采集
数据分享|SQL Server、Visual Studio、tableau对信贷风险数据ETL分析、数据立方体构建可视化
数据分享|SQL Server、Visual Studio、tableau对信贷风险数据ETL分析、数据立方体构建可视化
|
13天前
|
SQL 机器学习/深度学习 算法
SQL SERVER ANALYSIS SERVICES决策树、聚类、关联规则挖掘分析电商购物网站的用户行为数据
SQL SERVER ANALYSIS SERVICES决策树、聚类、关联规则挖掘分析电商购物网站的用户行为数据
|
23天前
|
存储 测试技术 计算机视觉
高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据
高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据
|
1月前
|
SQL 自然语言处理 算法
NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL]
NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL]
NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL]
|
1月前
|
SQL 关系型数据库 MySQL
[第一章 web入门]SQL注入-2 题目分析与详解
[第一章 web入门]SQL注入-2 题目分析与详解