wait event
文章平均质量分 83
事后诸葛亮
深入浅出!
展开
-
共享池( shared pool)
1、共享次(shared pool)共享池是组成SGA的重要结构中的一个。可以通过以下命令确认SGA结构。SQL> show sga;Total System Global Area 9620525056 bytesFixed Size 2215704 bytes --固定区域Variable Size 8522825960 bytes --可变区原创 2012-09-20 14:58:03 · 3509 阅读 · 0 评论 -
dictionary cache —— row cache lock/enq: SQ - contention/DFS lock handle
row cache lockoracle将数据字典信息存于SGA内的行高速缓冲区(或dictionary cache)。行高速缓冲区位于共享池区域,可通过如下命令进行确认。SQL> select * from v$sgastat where name = 'row cache';POOL NAME BYTES------------ ----------原创 2012-09-28 10:26:31 · 1568 阅读 · 0 评论 -
事务上的等待事件 —— enq: TM - contention
执行DML期间,为防止对与DML相关的对象进行修改,执行DML的进程必须对该表获得TM锁。若在获得TM锁的过程中发生争用,则等待enq: HW - contention 事件。SQL> select name,parameter1,parameter2,parameter3 from v$event_name where name like 'enq: TM - contention';原创 2012-09-29 11:15:37 · 8113 阅读 · 0 评论 -
buffer cache —— latch: cache buffers chains
为了使用高速缓冲区,要查询或修改hash chain的进程必须获取管理相应chain的cache buffers chains锁存器。在获取cache buffers chains锁存器过程中如果发生争用,则等待latch: cache buffers chains事件。从oracle 9i起,以只读为目的的查询chain时,可以将cache buffers chains锁存器以Shared模式共原创 2012-09-11 17:43:47 · 2821 阅读 · 0 评论 -
log buffer —— log file switch completion
SQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name like '%log file switch%'; EVENT# NAME PARAMETER1 PARAMETER2 PARAMETER3---------- ------------原创 2012-09-07 16:22:39 · 3897 阅读 · 0 评论 -
网络上的等待事件。
与网络相关的等待事件有如下几种。SQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name like '%SQL*Net%' order by name; EVENT# NAME PARAMETER1 PARAMETER2 PARAMETER原创 2012-09-07 17:08:57 · 1252 阅读 · 0 评论 -
log buffer —— log file sync
如果服务器进程执行提交或回滚,LGWR就将重做缓冲区上最近写入的时刻到最近提交时刻为止的重做记录,写入到日志文件上,这就是“sync write”,它可以通过redo synch writes统计值查询。服务器进程在下达提交命令后,一直等待知道LGWR成功写入为止,这事等待log file sync事件。SQL> select event#,name,parameter1,parameter2原创 2012-09-06 15:07:24 · 873 阅读 · 0 评论 -
log buffer —— log buffer space
欲向重做缓冲区上写入重做记录的进程,为了确保拥有重做缓冲区内必要的空间,需要获得redo allocation锁存器。已获得redo allocation锁存器的状态下,在想要得到重做缓冲区时,若没有适当的剩余空间,则需要等到直到获得空间为止。这时,根据情况等待两种事件。如果当前正在使用的重做日志文件已满,因此无法获得剩余空间,LGWR就会执行日志文件切换,服务器进程则等待log file swi原创 2011-11-03 15:47:39 · 5968 阅读 · 0 评论 -
log buffer —— log file parallel write
log file parallel write事件是只在LGWR进程上发生的等待事件。LGWR为了将重做缓冲区的内容记录到重做日志文件里,在执行必要的I/O调用后,在等待I/O工作结束期间等待log file parallel write事件。SQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name w原创 2012-09-06 15:47:05 · 981 阅读 · 0 评论 -
log buffer —— latch: redo writing,latch: redo allocation,latch: redo copy
SQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name like '%latch: redo%'; EVENT# NAME PARAMETER1 PARAMETER2 PARAMETER3------原创 2012-09-06 10:39:06 · 1849 阅读 · 0 评论 -
I/O上的等待事件 —— 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-原创 2011-11-02 17:49:58 · 2277 阅读 · 0 评论 -
buffer cache —— latch: cache buffers lru chain
想查看或修改working set(LRU+LRUW)的进程,始终要持有管理相应工作组的cache buffers lru chain锁存器。若在此过程中发生争用,则等待latch: cache buffers lru chain事件。SQL> select name,parameter1,parameter2,parameter3 from v$event_name where name l原创 2012-09-12 14:14:32 · 1415 阅读 · 0 评论 -
事务上的等待事件 —— enq: TX - contention
TX锁是保护事务的,事务结束时便会释放。因此,为获得TX锁为等待的会话,要等到拥有锁的会话的事务结束为止。SQL> select name,parameter1,parameter2,parameter3 from v$event_name where name like '%enq: TX%';NAME PARAMETER1 PARAMETER2原创 2012-09-29 14:28:42 · 4737 阅读 · 0 评论 -
高速缓存区(buffer cache)
1、高速缓存区结构oracle为了将物理I/O最小化,把最近使用过的块数据保管在内存的一定区域。这部分内存区域就是高速缓存区。高速缓存区与共享池、重做缓存区成为SGA的最重要的内存区域。利用下面的命令可了解当前实例的高速缓存区大小。SQL> show sgaTotal System Global Area 9620525056 bytesFixed Size 2215原创 2012-09-10 18:07:42 · 3488 阅读 · 0 评论 -
library cache —— library cache pin、library cache lock
关于library cache pin和library cache lock的定义如下:(1)library cache lock:访问或修改库高速缓冲区的对象时,对库高速缓冲区句柄获得锁。在获得library cache lock的过程中,如果发生争用,则等待library cache lock事件。SQL> select name,parameter1,parameter2,param原创 2012-09-25 17:25:07 · 859 阅读 · 0 评论 -
library cache —— latch: library cache
为了寻找空闲chunk,通过shared pool锁存器,实现保护扫描空闲列和分配适当chunk;为了执行sql,通过library cache锁存器,保护检索并管理高速缓冲区的所有工作。在获得library cache锁存器过程中,若发生争用,则等待latch: library cache事件。library cache锁存器争用主要在如下情况下发生: 1、Hard Parsing或原创 2012-09-25 14:38:30 · 4149 阅读 · 0 评论 -
library cache —— latch: shared pool
shared pool锁存器起到保护堆(共享池的基本内存结构)的作用。为了查找free chunk,检索空闲列,分配适当的chunk,必要时分隔空闲chunk的一连串工作,全都只能在获得shared pool锁存器后才能发生。在获得shared pool锁存器过程中发生争用,则等待latch: shared pool事件。SQL> select name,parameter1,paramete原创 2012-09-24 14:49:45 · 2725 阅读 · 0 评论 -
段上的等待事件 —— enq: HW - contention
为防止多个进程同时修改HWM而提供的锁称为HW锁。想要移动HWM的进程必须获得HW锁。若在获取HW锁过程中发生争用,则等待enq: HW - contention事件。HW锁争用大部分是因大量执行insert所引发的,偶尔也会因大量执行update在回滚段中发生HW锁争用现象。若是update,表中段的扩展的大小虽然不多,但在创建回滚数据的过程中,需要回滚段的急速扩张。HW锁争用是在急速空间扩张时原创 2012-10-11 22:22:56 · 8391 阅读 · 0 评论 -
buffer cache —— enq: CI - contention
oracle对特定表执行truncate之前,应对位于高速缓冲区上的表数据的脏缓冲区执行检查点工作。因为即时在执行truncate过程中发生故障,也需要能恢复数据。执行truncate的服务器进程,需要等待truncate工作结束,通常是通过enq: CI - contention等待现在观察的。SQL> select name,parameter1,parameter2,parameter3原创 2012-09-17 17:12:23 · 1978 阅读 · 0 评论 -
buffer cache —— enq: TC - contention
在手动执行检查点操作中,一部分需要获得TC锁(tablespace checkpoint lock)。在获得TC锁过程中,若发生争用,则需要等待enq: TC - contention事件。enq: TC - contention等待即便在没有多个进程引起争用的情况下,也可以发生,这一点上与其他锁争用引起的等待现象不同。需要理解的是在等待现象中,存在只有争用才能引发的等待现象,但也存在不发生争原创 2012-09-17 15:45:08 · 1863 阅读 · 0 评论 -
buffer cache —— free buffer waits
服务器进程将块载入到内存的过程如下:(1)在用户所请求的DBA上应用HASG函数,获得适当的Hash bucket。(2)检索伴随Hash bucket的Hash Chain,确认块所对应的缓冲区头是否存在。若缓冲区头已经存在,相应块已经位于高速缓冲区的状态,则使用该快。(3)若高速缓冲区上不存在,首先在LRU列按最少使用的顺序寻找空闲缓冲区。在次过程中发现脏缓冲区,则将脏缓冲区移动到原创 2012-09-14 16:04:59 · 1951 阅读 · 0 评论 -
buffer cache —— write complete waits
write complete waits等待与buffer busy waits等待相同,可以通过Buffer Lock争用引起的等待进行分类。DBWR将脏缓冲区记录到磁盘上的期间,对缓冲区以Exclusive模式占有Buffer Lock。这时,读取或修改缓冲区的其他进程需要等待此项工作结束,这是等待write complete waits事件。SQL> select name,parame原创 2012-09-14 15:44:05 · 2359 阅读 · 0 评论 -
buffer cache —— buffer busy waits/read by other session
oracle提供非常精确、有效的row level lock机制,多个用户同时修改数据时,为了保护数据,以块为单位挂起锁的情况不会发生。但这不太正确。以块为单位的锁虽然不存在,但正因为oracle I/O以块为单位组成,所以块单位锁是必要的。假设row1、row2两个行位于同一个块内,两名用户(用户1、用户2)各自对row1、row2执行update,逻辑上两个被更新行之间不存在需要相互保护的数据原创 2012-09-12 16:32:28 · 1588 阅读 · 0 评论 -
事务上的等待事件 —— enq: UL - contention
SQL> select name,parameter1,parameter2,parameter3 from v$event_name where name like '%enq: UL%';NAME PARAMETER1 PARAMETER2 PARAMETER3------------------------------ -----------原创 2012-09-29 14:53:13 · 3991 阅读 · 0 评论 -
I/O上的等待事件 —— db file parallel write
经过高速缓冲区的所有数据是通过DBWR写入到磁盘上的。DBWR请求写入脏块的I/O后,在此工作结束期间等待db file parallel write事件。SQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'db file parallel write';原创 2012-09-05 14:00:01 · 6241 阅读 · 0 评论 -
I/O上的等待事件 —— control file parallel write
请求控制文件的更新的进程直到更新结束为止,其间等待control file parallel write事件。SQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'control file parallel write'; EVENT# NAME原创 2012-09-05 14:42:28 · 4865 阅读 · 0 评论 -
I/O上的等待事件 —— control file sequential read
SQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'control file sequential read'; EVENT# NAME PARAMETER1 PARAMETER2 PARAM原创 2011-11-02 17:16:51 · 5047 阅读 · 1 评论 -
log buffer —— log file switch (archiving needed)、log file switch (checkpoint incomplete)
log file switch (archiving needed)SQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'log file switch (archiving needed)'; EVENT# NAME原创 2011-11-03 16:19:23 · 1918 阅读 · 0 评论 -
等待事件概述!
等待事件不要分为两种类别,即空闲(idle)等待事件和非空闲(non-idle)等待事件。空闲等待事件指Oracle正在等待某种工作,在诊断和优化数据库的时候,我们不用过多注意这部分事件。非空闲等待事件专门针对Oracle的活动,指数据库任务或应用运行过程中发生的等待,这些等待事件是我们在调整数据库的时候应该关注与研究的。SQL> select * from v$versi原创 2011-12-02 15:54:15 · 2127 阅读 · 0 评论 -
I/O上的等待事件 —— direct path read temp、direct path write temp
为了排序工作在临时区域读写时,等待direct path read temp、direct path write temp事件。这个等待事件收从oracle 10g起被分类的,oracle 9i为止是通过direct path read、direct path write等待观察的。排序段上的 direct path I/O是在需要排序的数据比排序所分配的PGA内存区大时发生的。因此在排序工作时若原创 2012-09-04 11:08:11 · 12564 阅读 · 0 评论 -
I/O上的等待事件 —— direct path read、direct path write
direct path readdirect path read事件的等待是在执行Parallel Query时,Slave Session所执行的direct path I/O引发的。SQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'direct path原创 2011-11-03 14:51:36 · 7011 阅读 · 0 评论 -
I/O上的等待事件 —— db file sequential read
如果db file scattered read事件是伴随Multi Block I/O发生的等待事件,那db file sequential read事件就是伴随Single Block I/O发生的等待事件。每次发生Single Block I/O时,就会发生一次db file sequential read事件的等待。Single Block I/O可以发生在从文件读取一个块的所有工作上,一原创 2012-08-31 12:32:54 · 2725 阅读 · 0 评论 -
I/O上的等待事件 —— db file scattered read
oracle在执行全表扫描(Full Table Scan,FTS)或全索引扫描(Index Full San)时,为保障性能,尽量一次读取多个块,这称为Multi Block I/O。每次执行Multi Block I/O,都会等待物理I/O结束,此时等待db file scattered read事件。SQL> select event#,name,parameter1,paramet原创 2012-08-30 17:44:07 · 13660 阅读 · 0 评论 -
I/O上的等待事件 —— db file single write
db file single writeSQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'db file single write'; EVENT# NAME PARAMETER1 PARAMETER2原创 2011-11-03 14:27:58 · 2817 阅读 · 0 评论 -
网络上的等待事件 —— SQL*Net more data to client/dblink
SQL*Net more data to clientSQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'SQL*Net more data to client'; EVENT# NAME原创 2011-11-03 19:27:11 · 3776 阅读 · 0 评论 -
网络上的等待事件 —— SQL*Net break/reset to client & SQL*Net break/reset to dblink
SQL*Net break/reset to clientSQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'SQL*Net break/reset to client'; EVENT# NAME原创 2011-11-03 17:18:45 · 5941 阅读 · 0 评论 -
网络上的等待事件 —— SQL*Net more data from client/dblink
SQL*Net more data from clientSQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'SQL*Net more data from client'; EVENT# NAME原创 2011-11-03 19:18:57 · 8095 阅读 · 0 评论 -
网络上的等待事件 —— SQL*Net message to client/dblink
SQL*Net message to clientSQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'SQL*Net message to client'; EVENT# NAME原创 2011-11-03 17:42:16 · 8590 阅读 · 0 评论 -
网络上的等待事件 —— SQL*Net message from client/dblink
SQL*Net message from clientSQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'SQL*Net message from client'; EVENT# NAME原创 2011-11-03 17:31:21 · 8324 阅读 · 0 评论 -
latch free、buffer latch!
latch freeSQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'latch free'; EVENT# NAME PARAMETER1 PARAMETER2 PARAMETER3---原创 2011-11-03 15:18:56 · 1876 阅读 · 0 评论