博客
关于我
SQL*Net break/reset to client (%)等待事件
阅读量:440 次
发布时间:2019-03-06

本文共 1799 字,大约阅读时间需要 5 分钟。

某客户通过数据库监控发现Oracle数据库在特定时间段内出现异常指标。为了定位问题,我们可以通过以下步骤进行诊断和分析。

首先,使用以下SQL查询可以帮助我们识别在指定时间段内出现次数较多的关键事件:

SELECT instance_number, event, COUNT(*) AS event_countFROM dba_hist_active_sess_historyWHERE SAMPLE_TIME BETWEEN TO_DATE('2020-02-25 06', 'yyyy-mm-dd hh24')AND TO_DATE('2020-02-25 09', 'yyyy-mm-dd hh24')GROUP BY instance_number, eventORDER BY event_count DESC;

通过上述查询,我们可以快速定位到在指定时间段内出现频率较高的数据库事件。结果显示,SQL*Net break/reset to client事件的发生次数显著增加。

进一步查询该等待事件的具体说明,可以参考Oracle官方文档。该事件通常与客户端和数据库服务器之间的通信问题有关,可能是由于应用程序执行的SQL语句导致的。具体来说,该事件可能由以下原因引发:

  • 应用程序尝试从已经关闭的游标中进行SELECT操作。
  • 应用程序尝试对一个不存在的表或视图进行查询。
  • 应用程序尝试插入已经存在的唯一索引字段。
  • 应用程序提交了语法错误的查询。
  • 通过查看v$session_wait视图中的参数p2,可以进一步确认具体是reset还是break操作。p2值为0时表示发送了reset消息,值不为0时表示发送了break消息。

    为了更详细地分析问题,我们可以结合以下查询来查找相关的用户和SQL信息:

    SELECT event, USER_ID, SQL_ID, COUNT(*) AS sql_countFROM dba_hist_active_sess_historyWHERE SAMPLE_TIME BETWEEN TO_DATE('2020-02-25 06', 'yyyy-mm-dd hh24')AND TO_DATE('2020-02-25 09', 'yyyy-mm-dd hh24')AND instance_number = 1AND event = 'SQL*Net break/reset to client'GROUP BY USER_ID, event, SQL_IDORDER BY sql_count DESC;

    通过上述查询,我们可以了解哪些用户在执行频繁导致等待事件的SQL以及对应的SQL_ID。由于数据库没有找到相关的SQL文本,我们可以通过监控工具查找相关的SQL_ID。经过查找发现,这些SQL主要是对视图的查询。

    为了验证问题的具体原因,我们可以进行以下测试:

    SELECT event, total_waitsFROM v$session_eventWHERE event LIKE '%reset%'AND sid = (SELECT sid FROM v$mystat WHERE rownum = 1);

    测试结果显示,当执行不存在的表或视图时,会触发SQL*Net break/reset to client等待事件。例如:

    SELECT * FROM non_existent;

    执行上述查询会返回ORA-00942错误,表或视图不存在。此时,相关等待事件的发生次数会显著增加。

    同样地,当对不存在的表执行CREATE TABLECREATE VIEW操作时,也会触发类似的等待事件。例如:

    CREATE TABLE a AS SELECT * FROM employees;

    如果employees表不存在,会报ORA-00942错误,同时相关等待事件的发生次数会增加。

    通过以上分析,我们可以确认问题的根源是应用程序在执行查询时,尝试访问不存在的表或视图。由于开发团队已对问题进行了处理,且未报告进一步影响,问题已得到解决。

    如果需要进一步验证,可以参考以下官方文档以获取更详细的解释和处理建议:

    https://tanelpoder.com/2008/04/10/sqlnet-breakreset-to-client/

    转载地址:http://dvlyz.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现DNF排序算法(附完整源码)
    查看>>
    Objective-C实现doomsday末日算法(附完整源码)
    查看>>
    Objective-C实现double factorial iterative双阶乘迭代算法(附完整源码)
    查看>>
    Objective-C实现double factorial recursive双阶乘递归算法(附完整源码)
    查看>>
    Objective-C实现double hash双哈希算法(附完整源码)
    查看>>
    Objective-C实现double linear search recursion双线性搜索递归算法(附完整源码)
    查看>>
    Objective-C实现double linear search 双线性搜索算法(附完整源码)
    查看>>
    Objective-C实现double sort双重排序算法(附完整源码)
    查看>>
    Objective-C实现DoublyLinkedList双链表的算法(附完整源码)
    查看>>
    Objective-C实现DoublyLinkedList双链表算法(附完整源码)
    查看>>
    Objective-C实现DPLL(davisb putnamb logemannb loveland)算法(附完整源码)
    查看>>
    Objective-C实现DWT离散小波变换(附完整源码)
    查看>>
    Objective-C实现Edmonds-Karp算法(附完整源码)
    查看>>
    Objective-C实现EEMD算法(附完整源码)
    查看>>
    Objective-C实现elgamal 密钥生成器算法(附完整源码)
    查看>>
    Objective-C实现EM算法(附完整源码)
    查看>>
    Objective-C实现EM算法(附完整源码)
    查看>>
    Objective-C实现entropy熵算法(附完整源码)
    查看>>
    Objective-C实现euclidean distance欧式距离算法(附完整源码)
    查看>>
    Objective-C实现Euclidean GCD欧几里得最大公约数算法(附完整源码)
    查看>>