博客
关于我
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 TABLE或CREATE 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/

    你可能感兴趣的文章
    python删除第一行_Python 乱码指北:一行删掉根目录
    查看>>
    Python删除列表元素的三种方法
    查看>>
    python初步学习-python数据类型-集合(set)
    查看>>
    python列表生成字典_Python中将字典转换为列表的方法
    查看>>
    python列表对应元素合并为列表及判断一个列表是几维
    查看>>
    python列表去重复后按照顺序_从包含不可共元素的Python列表中删除重复元素,同时保留顺序?...
    查看>>
    python列表前几个_python之列表
    查看>>
    python列表元组
    查看>>
    Python列表/元组/字典和集合使用
    查看>>
    python列表 行列选择_python_pandas_dataframe_行列选择_切片操作
    查看>>
    python列表
    查看>>
    python列出当前目录、子目录和文件的脚本
    查看>>
    python+flask计算机毕业设计骨科门诊患者档案管理系统(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校体测管理系统的设计与实现(程序+开题+论文)
    查看>>
    Python切片对象和__getitem__
    查看>>
    python+flask计算机毕业设计高校体育竞赛成绩管理系统的设计与实现(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校体育赛事系统(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校体育运动会比赛系统(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校危化品管理系统(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校团委事务管理系统(程序+开题+论文)
    查看>>