Oracle等待事件之db file scattered read

1、产生原因

该等待事件通常发生在数据库多块读时,表示发生了与全表扫描快速索引扫描相关的等待。通常意味着全表扫描过多,或者I/O 能力不足,或者I/O 竞争。

2、确定产生问题对象方法

a)查找全表扫描的SQL 语句可以使用以下语句:

select sql_text

from v$sqltext t, v$sql_plan p

where t.hash_value = p.hash_value

and p.operation = ‘TABLE ACCESS‘

and p.options = ‘FULL‘

order by p.hash_value, t.piece;

b)查找Fast Full Index 扫描的SQL 语句可以使用以下语句:

select sql_text

from v$sqltext t, v$sql_plan p

where t.hash_value = p.hash_value

and p.operation = ‘INDEX‘

and p.options = ‘FULL SCAN‘

order by p.hash_value, t.piece;

3、解决办法

(1)在合适的字段上建立索引把表的访问方式从全表扫描变为索引扫描可以有效地降低物理IO。

(2)对于大表,在合适的字段,比如年月、地区编码上建立分区把全表扫描变成分区扫描以减少物理IO。

(3)把需要经常扫描的数据库表放在KEEP 池同样会有效地降低物理IO。

(4)调整db_file_multiblock_read_count值,以达到每次读取更多数据块的目的。

时间: 2024-10-16 17:39:29

Oracle等待事件之db file scattered read的相关文章

Oracle 等待事件之 db file scattered read

db file scattered read 官网解释: This event signifies that the user process is reading buffers into the SGA buffer cache and is waiting for a physical I/O call to return. A db file scattered read issues a scattered read to read the data into multiple dis

Oracle 等待事件之 db file sequential read

db file sequential read: 官网解释: This event signifies that the user process is reading a buffer into the SGA buffer cache and is waiting for a physical I/O call to return. A sequential read is a single-block read. Single block I/Os are usually the resu

Oracle 等待事件之 db file parallel read

db file parallel read 官网解释: This happens during recovery. It can also happen during buffer prefetching, as an optimization (rather than performing multiple single-block reads). Database blocks that need to be changed as part of recovery are read in p

Oracle等待事件db file parallel read

SQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'db file parallel read'; EVENT# NAME PARAMETER1 PARAMETER2 PARAMETER3 ---------- ------------------------------ --------------- --------------- --------------- 12

db file scattered read 等待事件

db file scattered read 等待事件: 我们经常会见到db file scattered read  等待事件,在生产环境中,这个等待事件可能更为常见.这个事件表明用户进程正在读数据到Buffer Cache中,等待直到I/O调用返回.db file scattered read发出离散读,将存储上连续的数据块离散的读入到多个不连续的内存位置.Scattered Read通常是多块读,在Full Table Scan或Fast Full Scan等访问方式下使用.Scatter

Oracle Study之--Oracle等待事件(5)

Oracle Study之--Oracle等待事件(5)  Db file single write这个等待事件通常只发生在一种情况下,就是Oracle 更新数据文件头信息时(比如发生Checkpoint).当这个等待事件很明显时,需要考虑是不是数据库中的数据文件数量太大,导致Oracle 需要花较长的时间来做所有文件头的更新操作(checkpoint).这个等待事件有三个参数:File#: 需要更新的数据块所在的数据文件的文件号.Block#: 需要更新的数据块号.Blocks: 需要更新的数

oracle等待事件的相关知识

一. 等待事件的相关知识: 1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件. 1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时候,不用过多注意这部分事件. 2). 非空闲等待事件专门针对ORACLE的活动,指数据库任务或应用运行过程中发生的等待,这些等待事件是在调整数据库的时候需要关注与研究的. 在Oracle 10g中的等待事件有872个,11g中等待事件1116个. 我们可以通过v$event_name 视图来查看等待

一.1.1 db file scattered read(数据文件离散读)

在V$SESSION_WAIT这个视图里面,这个等待事件有三个参数P1.P2.P3,其中P1代表Oracle要读取的文件的绝对文件号,P2代表Oracle从这个文件中开始读取的BLOCK号,P3代表Oracle从这个文件开始读取的BLOCK号后读取的BLOCK数量. SELECT * FROM   v$event_name WHERE  NAME IN ('db file sequential read', 'db file scattered read');   从V$EVENT_NAME视图

oracle等待事件以及解决方案

我们可以通过视图v$session_wait来查看系统当前的等待事件,以及与等待事件相对应的资源的相关信息,从而可确定出产生瓶颈的类型及其对象. v$session_wait的p1.p2.p3告诉我们等待事件的具体含义,根据事件不同其内容也不相同,下面就一些常见的等待事件如何处理以及如何定位热点对象和阻塞会话作一些介绍. <1> db file scattered read DB 文件分散读取 (太多索引读,全表扫描-----调整代码,将小表放入内存)这种情况通常显示与全表扫描相关的等待.当全