广告
返回顶部
首页 > 资讯 > 数据库 >如何进行Oracle常见的等待事件分析
  • 309
分享到

如何进行Oracle常见的等待事件分析

2024-04-02 19:04:59 309人浏览 泡泡鱼
摘要

如何进行oracle常见的等待事件分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.Library cache pin这个

如何进行oracle常见的等待事件分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

1.Library cache pin

这个等待事件和 library cache lock 一样是发生在共享池中并发操作引起的事件。通常来讲,如果 Oracle 要对一些 PL/sql 或者视图这样的对象做重新编译,需要将这些对象 pin 到共享池中。 如果此时这个对象被其他的用户特有,就会产生一个 library cache pin 的等待。

这个等待事件也包含四个参数:

--Handle address: 被加载的对象的地址。

--Lock address: 的地址。

--Mode: 被加载对象的数据片段。

--Namespace: 被加载对象在 v$db_object_cache 视图中 namespace 名称。

2.Log file parallel write

后台进程 LGWR 负责将 log buffer 当中的数据写到 REDO 文件中,以重用 log buffer 的数据。 如果每个 REDO LOG 组里面有 2 个以上的成员,那么 LGWR 进程会并行地将 REDO 信息写入这些文件中。

如果数据库中出现这个等待事件的瓶颈,主要的原因可能是磁盘 I/O 性能不够或者 REDO 文件的分布导致了 I/O 争用,比如同一个组的 REDO 成员文件放在相同的磁盘上。

这个等待事件有三个参数:

--Files: 操作需要写入的文件个数。

--Blocks: 操作需要写入的数据块个数。

--Requests:操作需要执行的 I/O 次数。

3.Log buffer space

当 log buffer 中没有可用空间来存放新产生的 redo log 数据时,就会发生 log buffer space 等待事件。 如果数据库中新产生的 redo log 的数量大于 LGWR 写入到磁盘中的 redo log 数量,必须等待 LGWR 完成写入磁盘的操作,LGWR 必须确保 redo log 写到磁盘成功之后,才能在 redo buffer 当中重用这部分信息。

如果数据库中出现大量的 log buffer space 等待事件,可以考虑如下方法:

-- 增加 redo buffer 的大小。

-- 提升磁盘的 I/O 性能

4.Log file sequential read

这个等待事件通常发生在对 redo log 信息进行读取时,比如在线 redo 的归档操作,ARCH 进程需要读取 redo log 的信息,由于 redo log 的信息是顺序写入的,所以在读取时也是按照顺序的方式来读取的。

这个等待事件包含三个参数:

--Log#: 发生等待时读取的 redo log 的 sequence 号。

--Block#: 读取的数据块号。

--Blocks: 读取的数据块个数。

5.Log file single write

这个等待事件发生在更新 redo log 文件的文件头时,当为日志组增加新的日志成员时或者 redo log 的 sequence 号改变时,LGWR 都会更新 redo log 文件头信息。

这个等待事件包含三个参数:

--Log#: 写入的 redo log 组的编号。

--Block#:写入的数据块号。

--Blocks:写入的数据块个数。

6.Log file switch(archiving needed)

在归档模式下,这个等待事件发生在在线日志切换(log file switch)时,需要切换的在线日志还没有被归档进程(ARCH)归档完毕的时候。 当在线日志文件切换到下一个日志时,需要确保下一个日志文件已经被归档进程归档完毕,否则不允许覆盖那个在线日志信息(否则会导致归档日志信息不完整)。出现这样的等待事件通常是由于某种原因导致 ARCH 进程死掉,比如 ARCH 进程尝试向目的地写入一个归档文件,但是没有成功(介质失效或者其他原因),这时 ARCH 进程就会死掉。 如果发生这种情况,在数据库的 alert log 文件中可以找到相关的错误信息。

这个等待事件没有参数。

7.Log file switch(checkpoint incomplete)

当一个在线日志切换到下一个在线日志时,必须保证要切换到的在线日志上的记录的信息(比如一些脏数据块产生的 redo log)被写到磁盘上(checkpoint),这样做的原因是,如果一个在线日志文件的信息被覆盖,而依赖这些 redo 信息做恢复的数据块尚未被写到磁盘上(checkpoint),此时系统 down 掉的话,Oracle 将没有办法进行实例恢复。

在 v$log 视图里记录了在线日志的状态。 通常来说,在线日志有三种状态。

--Active: 这个日志上面保护的信息还没有完成 checkpoint。

--Inactive: 这个日志上面保护的信息已完成 checkpoint。

--Current: 当前的日志。

如果系统中出现大量的 log file switch(checkpoint incomplete)等待事件,原因可能是日志文件太小或者日志组太少,所以解决的方法是,增加日志文件的大小或者增加日志组的数量。

这个等待事件没有参数。

8.Log file sync

这是一个用户会话行为导致的等待事件,当一个会话发出一个 commit 命令时,LGWR 进程会将这个事务产生的 redo log 从 log buffer 里面写到磁盘上,以确保用户提交的信息被安全地记录到数据库中。会话发出的 commit 指令后,需要等待 LGWR 将这个事务产生的 redo 成功写入到磁盘之后,才可以继续进行后续的操作,这个等待事件就叫作 log file sync。

以下几种情况,可能产生这个等待:

-- 高提交频率

解决方法是简单的消除不必要的提交,事务是工作单元。工作单元应该是全部成功或全部失败。

-- 缓慢的 I/O 子系统

较高的 io 吞吐良可以改善 log file sync 和 log file parallel write 事件的平均等待时间。频繁的提交会弄乱数据库布局和 IO 子系统。解决办法是将日志文件放裸设备上或绑定在 RaiD 0 或 RAID 0+1 中,而不是绑定在 RAID 5 中。

-- 过大的日志缓冲区

过大的日志缓冲区也可能延长 log file sync 等待。大型的日志缓冲区减少后台写入的数量,允许 LGWR 变得懒惰,并导致更多的重做条目堆积在日志缓冲区中。同时可以调整参数_LOG_IO_SIZE 参数,其默认值是 LOG_BUFFER 的 1/3 或 1MB,取两者之中较小的值。换句话说,你可以具有较大的日志缓冲区,但较小的_LOG_IO_SIZE 将增加后台写入,从而减少 log file sync 的等待时间.

-- 过小的日志缓冲区

过小的日志缓冲区,还会导致 log buffer space 等待

-- 日志组多少与日志大小不合适

这个等待事件包含一个参数:

Buffer#: redo buffer 中需要被写入到磁盘中的 buffer。

9.SQL*Net break/reset to client

当出现这个等待事件时,说明服务器端在给客户端发送一个断开连接或者重置连接的请求,正在等待客户的响应,通常的原因是服务器到客户端的网络不稳定导致的。

这个等待事件包含两个参数:

--Driver id: 服务器和客户端连接使用的协议信息。

--Breaks:零表示服务端向客户端发送一个重置(reset)信息,非零表示服务器端向客户端发送一个断开(break)消息。

10.SQL*Net break/reset to dblink

这个等待事件和 SQL*Net break/reset to client 相同。 不过它表示的是数据库通过 dblink 访问另一台数据库时,他们之间建立起一个会话,这个等待事件发生在这个会话之间的通信过程中,同样如果出现这个等待事件,需要检查两台数据库之间的通信问题。

这个等待事件有两个参数:

--Driver id: 服务器和客户端连接使用的协议信息。

--Breaks:零表示服务端向客户端发送一个重置(reset)信息,非零表示服务器端向客户端发送一个断开(break)消息。

11.SQL*Net message from client

这个等待事件基本上是最常见的一个等待事件。 当一个会话建立成功后,客户端会向服务器端发送请求,服务器端处理完客户端请求后,将结果返回给客户端,并继续等待客户端的请求,这时候会产生 SQL*Net message from client 等待事件。很显然,这是一个空闲等待,如果客户端不再向服务器端发送请求,服务器端将一直处于这个等待事件状态。

这个等待事件包含两个参数:

--Driver id: 服务器端和客户端连接使用的协议信息。

--#bytes: 服务器端接收到的来自客户端消息的字节数。

12.SQL*Net message from dblink

这个等待事件和 SQL*Net message from client 相同,不过它表示的是数据库通过 dblink 访问另一个数据库时,他们之间会建立一个会话,这个等待事件发生在这个会话之间的通信过程中。

这个等待事件也是一个空闲等待事件。

这个事件包含两个参数:

--Driver id: 服务器端和客户端连接使用的协议信息。

--#bytes: 服务器端通过 dblink 收到的来自另一个服务器端消息的字节数。

13.SQL*Net message to client

这个等待事件发生在服务器端向客户端发送消息的时候。 当服务器端向客户端发送消息产生等待时,可能的原因是用户端太繁忙,无法及时接收服务器端送来的消息,也可能是网络问题导致消息无法从服务器端发送到客户端。 

这个等待事件有两个参数:

--Driver id: 服务器端和客户端连接使用的协议信息。

--#bytes: 服务器端向客户端发送消息的字节数。

14.SQL*Net message to dblink

这个等待事件和 SQL*Net message to client 相同,不过是发生在数据库服务器和服务器之间的等待事件,产生这个等待的原因可能是远程服务器繁忙,而无法及时接收发送过来的消息,也可能是服务器之间网络问题导致消息无法发送过来。

这个等待时间包含两个参数:

--Driver id: 服务器端和客户端连接使用的协议信息。

--#bytes: 服务器端通过 dblink 发送给另一个服务器消息的字节数。

15.SQL*Net more data from client

服务器端等待用户发出更多的数据以便完成操作,比如一个大的 SQL 文本,导致一个 SQL*Net 数据包无法完成传输,这样服务器端会等待客户端把整个 SQL 文本发过来在做处理,这时候就会产生一个 SQL*Net more data from client 等待事件。

这个等待时间包含两个参数:

--Driver id: 服务器端和客户端连接使用的协议信息。

--#bytes: 服务器端从客户端接收到消息的字节数。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网数据库频道,感谢您对编程网的支持。

您可能感兴趣的文档:

--结束END--

本文标题: 如何进行Oracle常见的等待事件分析

本文链接: https://www.lsjlt.com/news/67603.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何进行Oracle常见的等待事件分析
    如何进行Oracle常见的等待事件分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.Library cache pin这个...
    99+
    2022-10-19
  • oracle常见的等待事件有哪些
    本篇文章给大家分享的是有关oracle常见的等待事件有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 1. Buffer busy wa...
    99+
    2022-10-19
  • oracle等待事件类型wait_class的分析
    oracle等待事件类型wait_class的分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 Oracle 的...
    99+
    2022-10-19
  • 如何进行等待事件enq TX row lock contention的分析
    本篇文章为大家展示了如何进行等待事件enq TX row lock contention的分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 ...
    99+
    2022-10-19
  • Oracle的SQL*Net more data from client 等待事件分析
    SQL*Net more data from client 并非一个常见的等待事件,但在有些场景下却是经常能看到的,这些场景包括: 批量插入、更新、删除(array of insert、upda...
    99+
    2022-10-18
  • 如何理解Oracle数据库并行操作常见等待事件及脚本
    这篇文章给大家介绍如何理解Oracle数据库并行操作常见等待事件及脚本,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。小编主要介绍Oracle数据库在并行操作过程中 slave 进程和 ...
    99+
    2022-10-19
  • 如何进行Oracle数据库Kfk: Async Disk IO等待事件的深度解析
    如何进行Oracle数据库Kfk: Async Disk IO等待事件的深度解析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。...
    99+
    2022-10-19
  • 如何进行Spring声明性事务常见问题分析
    小编今天带大家了解如何进行Spring声明性事务常见问题分析,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“如何进行Spring声明性...
    99+
    2023-06-17
  • 如何进行oracle中的sequence分析
    本篇文章给大家分享的是有关如何进行oracle中的sequence分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在oracle中seque...
    99+
    2022-10-19
  • 如何进行Oracle常用数据库impdp&expdp的脚本分析
    如何进行Oracle常用数据库impdp&expdp的脚本分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。【说明】示...
    99+
    2022-10-19
  • 如何进行C++抛出异常技巧的分析
    这期内容当中小编将会给大家带来有关如何进行C++抛出异常技巧的分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C++语言与其他编程语言一样,其中也包含有关于异常的处理。我们在这里将会为大家详细讲解一下有...
    99+
    2023-06-17
  • 如何进行VS2005软件的理解与分析
    如何进行VS2005软件的理解与分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。看来是WebDeployment本身有一定的bug,笔者猜想可能是编码问题造成的,WebDep...
    99+
    2023-06-17
  • 如何进行MySQL和Oracle的元数据抽取分析
    如何进行MySQL和Oracle的元数据抽取分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。前言最近接到个任务是抽取mysql和Oracle的元数据,大致就是...
    99+
    2023-06-22
  • 如何进行常用CSS+DIV排版技术用法的分析
    本篇文章给大家分享的是有关如何进行常用CSS+DIV排版技术用法的分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。向大家描述一下CSS+DI...
    99+
    2022-10-19
  • 如何进行Oracle数据库硬解析、软解析、软软解析联系与区别的分析
    如何进行Oracle数据库硬解析、软解析、软软解析联系与区别的分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Oracle数据库硬解析和...
    99+
    2022-10-19
  • 如何进行spring@value注入配置文件值失败的原因分析
    今天就跟大家聊聊有关如何进行spring@value注入配置文件值失败的原因分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。spring@value注入配置文件值失败的原因今天我写...
    99+
    2023-06-22
  • 如何在 Python 中使用 NumPy 库对文件中的数据进行统计分析?
    Python 是一种强大的编程语言,它拥有众多的库和工具可以帮助开发者更高效地完成任务。其中,NumPy 库是一款专门用于数值计算的库,在处理大量数据时可以提供高效的处理速度和良好的性能。 在本文中,我们将介绍如何使用 NumPy 库对文件...
    99+
    2023-11-04
    文件 关键字 numy
  • GO语言开发者必看:如何利用NumPy处理文件进行更高效的数据分析?
    数据分析是现代社会中非常重要的一个领域,它涉及到各种各样的数据处理操作。在进行数据分析时,我们通常需要处理大量的数据文件,并从中提取有用的信息。在这个过程中,NumPy是一个非常强大的工具,它可以帮助我们更高效地处理数据文件。 在本文中,...
    99+
    2023-08-25
    numpy 面试 文件
  • SQLServer 错误 30089 全文筛选器后台程序宿主(FDHost)进程已异常停止。 如果在执行全文检索或查询处理期间配置错误或工作不正常的语言组件(如断字器、词干分析器或筛选器)造成了无法恢
    详细信息 Attribute 值 产品名称 SQL Server 事件 ID 30089 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 IFTS_FDHOST_TERMINATEDABNO...
    99+
    2023-11-05
    错误 词干 进程
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作