匿名用户Oracle 里 TCP Socket (KGAS) 这个等待事件一般是什么导致?
Oracle 里 TCP Socket (KGAS) 这个等待事件一般是什么导致?
我来答
添加附件
收藏
复制链接
微信扫码分享
在小程序上查看
分享
添加附件
问题补充
2条回答
默认
最新
一般会话过程就会有,毕竟数据交互TCP交互。官网对这个提示的描述是:出现会话正在等待外部主机通过网络套接字提供请求的数据,此等待事件跟踪的时间并不表示存在问题。
评论
有用 0
可参考 MOS 文档:
- WAITEVENT: “TCP Socket (KGAS)” Reference Note (Doc ID 558510.1)
- What are ‘TCP Socket (Kgas)’ Waits? (Doc ID 416451.1)
可以通过以下sql查询是什么导致 TCP Socket (KGAS) 等待事件:
SELECT sid, total_waits, time_waited
FROM v$session_event
WHERE event='TCP Socket (KGAS)'
and total_waits>0
ORDER BY 3,2
;
所产生的等待取决于哪些套接字被打开到哪些远程端点以及出于什么原因。为了帮助找到套接字操作的起源,请尝试:
- 检查 V$SESSION 的当前 SQL / 模块 / 操作以查找在等待事件时正在等待事件的会话,以尝试识别等待事件的应用程序代码的任何公共区域。
- 获取等待事件的某些会话的 ERRORSTACK 级别 3 转储。如果在会话等待时进行转储,这应该有助于显示调用套接字操作的确切 PLSQL 和 C 调用堆栈。客户可能需要 Oracle Support 的帮助才能获取和解释此类转储,但它可以帮助查明相关的应用程序代码。
- 跟踪导致等待的会话,包括等待跟踪以尝试将等待置于围绕等待执行的代码的上下文中。例如:使用事件 10046 级别 8 或 DBMS_MONITOR.SESSION_TRACE_ENABLE。
- 使用 DBA_DEPENDENCIES 查找可能最终在下面使用 UTL_HTTP 或 UTL_TCP 进行某些操作的任何应用程序包。
请注意,Oracle 中没有针对这些等待的真正可调参数,因为它们涉及会话调用某个远程 TCP/IP 套接字并通常等待来自该源的数据。一旦您知道调用了什么以及为什么调用,那么您就可以确定来自该远程源的响应时间是否合理以及为什么不合理。
在专用连接上的会话中执行以下 SQL,然后检查生成的跟踪文件以查看“TCP Socket (KGAS)”等待:
alter session set events '10046 trace name context forever, level 8';
select utl_http.request('http://www.oracle.com/') from dual;
-
从数据库的角度来看,可以放心地忽略这些等待;等待事件不代表数据库问题。它仅报告建立网络连接或通过网络传输数据所用的总时间。数据库等待连接建立并报告所用时间。
-
从应用程序或网络的角度来看,建立网络连接的延迟可能会给用户带来不必要的延迟。您应该确保应用程序有效地进行网络调用,并且网络运行良好,以便最大限度地减少这些延迟。
希望可以帮助到你~
评论
有用 0回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏


