我的编程空间,编程开发者的网络收藏夹
学习永远不晚

ORACLE常见等待事件有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

ORACLE常见等待事件有哪些

这篇文章主要介绍“ORACLE常见等待事件有哪些”,在日常操作中,相信很多人在ORACLE常见等待事件有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ORACLE常见等待事件有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1、db file sequential read

将数据读到连续的内存,等待时间是由于执行对索引,回滚(undo)段,和表(当借助rowid来访问),控制文件和数据文件头的单块读操作SQL语句(用户和递归)引起的。

db file sequential read的优化方法:

从读取开始,增加SGA中buffer cache的大小,避免每次都从硬盘中去读数;

优化sql语句,减少不必要的块读取;

db file scattered read  

db file scattered read发出离散读,将存储上连续的数据块离散的读入到多个不连续的内存位置。这个事件表明用户进程正在读数据到Buffer Cache中,等待直到I/O调用返回引起的等待。

2、direct path read/write (直接路径读/写):

直接路径读(direct path read)通常发生在Oracle直接读数据到进程PGA时,这个读取不需要经过SGA。

DB file Sequential ReadDB file Scattered ReadDirect Path Read

这类读取通常在以下情况被使用:

1.磁盘排序IO操作;

2.并行查询从属进程;

3.预读操作。

直接路径写(direct path write)通常发生在Oracle直接从PGA写数据到数据文件或临时文件,这个写操作可以绕过SGA。

这类写入操作通常在以下情况被使用:

1.直接路径加载;

2.并行DML操作;

3.磁盘排序;

优化方法:1.增加pga_aggregate_target  2.并行查询导致性能问题,修改并行度

3、Buffer busy waits ---hot block

这个等待事件的产生仅说明了一个会话在等待一个Buffer(数据块),当多个用户频繁地读取或者修改同样的数据块时,这个等待事件就会产生。如果等待的时间很长,我们在AWR或者statspack报告中就可以看到。

这个等待事件有三个参数。查看有几个参数我们可以用以下SQL:

SQL> select name,parameter1,parameter2,parameter3,wait_class 

        from v$event_name 

        where name='direct path write';

P1 P2 P3别代表文件号、起始数据块号、数据块的数量

解决hot block的方法有:

1、出现此情况通常可能通过几种方式调整:增大data  buffer;

2、增加freelist,减小pctused;怎样的目的是将一个block上可以使用的空间减少,这样的话:一个block上的数据存放的较少,可以提高应用的访问并发率,减少hot block的产生;

3、增加回滚段数目,增大initrans,考虑使用LMT, 确认是不是由于热点块造成(如果是可以用反转索引,或者用更小块大小);

3、可以建立block较小的表空间,见热点对象移动到此表空间上去;

4、优化应用,优化索引,提高索引的命中率;

◎ Oracle会话正在等待钉住一个缓冲区。必须在读取或修改缓冲区前将它钉住。在任何时刻只有一个进程可以钉住一个缓冲区。

◎ buffer busy waits表明读/读、读/写、写/写争用。

◎ 采取的适当措施取决于P3参数中的原因码。

A、如果等待处于字段头部,应增加自由列表(freelist)的组数,或者增加pctused到pctfree之间的距离。

B、如果等待处于回退段(undo)头部块,可以通过增加回滚段(rollback segment)来解决缓冲区的问题;

C、如果等待处于回退段(undo)非头部块上,就需要降低驱动一致读取的表中的数据密度,或者增大DB_CACHE_SIZE;

D、如果等待处于数据块,可以将数据移到另一数据块以避开这个"热"数据块、增加表中的自由列表或使用LMT表空间;

E、如果等待处于索引块,应该重建索引、分割索引或使用反向键索引。

4、log file sync

等待时间发生在redo log从log buffer写入到log file期间。

此等待事件用户发出提交或回滚声明后,等待提交完成的事件,提交命令会去做日志同步,也就是写日志缓存到日志文件, 在提交命令未完成前,用户将会看见此等待事件.

解决办法:

当发生log file sync等待后,判断是否由于缓慢的日志I/O造成的,可以查看两个等待事件的等待时间,如果比较接近,就证明日志I/O比较缓慢或重做日志过多,这时,造成log file sync的原因是因为log file parallel write。

如果log file sync的等待时间很高,而log file parallel write的等待时间并不高,这意味着log file sync的原因并不是缓慢的日志I/O,而是用户过多的提交造成。

  当log file sync的等待时间和 log file parallel write等待时间基本相同,说明是IO问题造成的log file sync等待事件。

5、Log File Switch等待事件  

这个等待出现时,表示所有的提交(commit)的请求都需要等待"日志文件切换"的完成。

Log file Switch 主要包含两个子事件:

log file switch (archiving needed)

log file switch (checkpoint incomplete)

其中log file switch (archiving needed)

这个等待事件出现时通常是因为日志组循环写满以后,第一个日志归档尚未完成,出现该等待。出现该等待,可能表示io 存在问题。解决办法:

可以考虑增大日志文件和增加日志组

移动归档文件到快速磁盘

调整log_archive_max_processes

而log file switch (checkpoint incomplete)-日志切换(检查点未完成)

当你的日志组都写满以后,LGWR 试图写第一个log file,如果这时数据库没有完成写出记录在第一个log file 中的dirty 块时(例如第一个检查点未完成),该等待事件出现。

该等待事件通常表示你的DBWR 写出速度太慢或者IO 存在问题。

为解决该问题,你可能需要考虑增加额外的DBWR 或者增加你的日志组或日志文件大小。

6、log buffer space

日志缓冲(log buffer)产生重做日志的速度比LGWR 的写出速度快,或者是当日志切换(log switch)太慢时,就会发生这种等待。这个等待出现时,通常表明redo log buffer 过小,为解决这个问题,可以考虑增大日志文件的大小,或者增加日志缓冲器的大小。

    另外一个可能的原因是磁盘I/O 存在瓶颈,可以考虑使用写入速度更快的磁盘。在允许的条件下设置可以考虑使用裸设备来存放日志文件,提高写入效率。在一般的系统中,最低的标准是,不要把日志文件和数据文件存放在一起,因为通常日志文件只写不读,分离存放可以获得性能提升。

到此,关于“ORACLE常见等待事件有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

ORACLE常见等待事件有哪些

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

下载Word文档

猜你喜欢

oracle中常见的约束有哪些

oracle中的常见约束通过特定规则维护数据完整性和一致性。这些约束包括:1. 主键约束:确保每行都有唯一id。2. 外键约束:将表中的列与另一个表中的列关联。3. 唯一约束:保证列值唯一,允许在不同行中重复。4. 非空约束:不允许列接受空
oracle中常见的约束有哪些
2024-05-09

android常见的控件有哪些

Android常见的控件有:1. TextView:用于显示文本2. EditText:用于输入文本3. Button:用于触发点击事件4. ImageView:用于显示图片5. ProgressBar:用于显示进度6. RadioButt
2023-09-27

常见Flex控件用法有哪些

小编给大家分享一下常见Flex控件用法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Flex控件分为2种,一种是布局控件,另外一种是元素控件。比如Canva
2023-06-17

常用的jQuery事件有哪些

常用的 jQuery 事件有:1. click - 鼠标单击事件2. dblclick - 鼠标双击事件3. mouseover - 鼠标移入事件4. mouseout - 鼠标移出事件5. mouseenter - 鼠标进入事件(在元素内
2023-10-11

编程热搜

目录