[20130904]等待事件wait for a undo record模拟.txt

[20130904]等待事件wait for a undo record模拟.txt

模拟等待事件wait for a undo record。

1.测试环境:

SCOTT@test> @ver
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

create table t as select rownum id ,lpad('a',400,'a') name from dual connect by levelinsert into t select * from t;
....
commit ;

最后记录大小640000,占用304M.

2.修改记录:
--回话1:

SCOTT@test> select spid from v$process where addr in (select paddr from v$session where sid in (select sid from v$mystat where rownum=1));
SPID
------
12223

update t set name=lpad('b',400,'b') ;

--等待结束后,打开另外的shell,kill掉spid=12223.另外我的测试如果执行正常rollback,不会出现wait for a undo record的等待事件。

kill -9 12223

select  * from V$FAST_START_TRANSACTIONS;
USN  SLT    SEQ STATE       UNDOBLOCKSDONE UNDOBLOCKSTOTAL   PID    CPUTIME  PARENTUSN  PARENTSLT  PARENTSEQ XID              PXID             RCVSERVERS
--- ---- ------ ----------- -------------- --------------- ----- ---------- ---------- ---------- ---------- ---------------- ---------------- ----------
  7   27  12113 RECOVERING           15655           43019    34         25          0          0          0 07001B00512F0000 0000000000000000          1

select  * from V$FAST_START_TRANSACTIONS;
USN  SLT    SEQ STATE       UNDOBLOCKSDONE UNDOBLOCKSTOTAL   PID    CPUTIME  PARENTUSN  PARENTSLT  PARENTSEQ XID              PXID             RCVSERVERS
--- ---- ------ ----------- -------------- --------------- ----- ---------- ---------- ---------- ---------- ---------------- ---------------- ----------
  7   27  12113 RECOVERING           25106           43019    34         50          0          0          0 07001B00512F0000 0000000000000000          8

--CPUTIME逐步在增加。

SCOTT@test> select event,sid,serial#,program from v$session where wait_class'Idle';
EVENT                                           SID    SERIAL# PROGRAM
---------------------------------------- ---------- ---------- --------------------------
log file switch (checkpoint incomplete)          15          5 oracle@xxxxx (P002)
log file switch (checkpoint incomplete)          16         11 oracle@xxxxx (P006)
wait for stopper event to be increased           66          1 oracle@xxxxx (SMON)
log file switch (checkpoint incomplete)          72        335 oracle@xxxxx (P007)
log file switch (checkpoint incomplete)          73         67 oracle@xxxxx (P003)
db file async I/O submit                        127          1 oracle@xxxxx (DBW0)
log file switch (checkpoint incomplete)         135        139 oracle@xxxxx (P004)
wait for a undo record                          136         83 oracle@xxxxx (P000)
SQL*Net message to client                       199        697 sqlplus@xxxxx (TNS V1-V3)
log file switch (checkpoint incomplete)         200        641 oracle@xxxxx (P001)
buffer busy waits                               202         37 oracle@xxxxx (P005)
11 rows selected.
SCOTT@test> select event,sid,serial#,program from v$session where wait_class'Idle';
EVENT                                           SID    SERIAL# PROGRAM
---------------------------------------- ---------- ---------- --------------------------
wait for stopper event to be increased           66          1 oracle@xxxxx (SMON)
db file async I/O submit                        127          1 oracle@xxxxx (DBW0)
wait for a undo record                          136         83 oracle@xxxxx (P000)
log file parallel write                         189          1 oracle@xxxxx (LGWR)
SQL*Net message to client                       199        697 sqlplus@xxxxx (TNS V1-V3)

--可以发现出现wait for a undo record等待事件。

SQL> select  * from V$FAST_START_TRANSACTIONS;
USN  SLT    SEQ STATE     UNDOBLOCKSDONE UNDOBLOCKSTOTAL   PID    CPUTIME  PARENTUSN  PARENTSLT  PARENTSEQ XID              PXID RCVSERVERS
--- ---- ------ --------- -------------- --------------- ----- ---------- ---------- ---------- ---------- ---------------- ---- ----------
  7   27  12113 RECOVERED          43019           43019              149                                  07001B00512F0000               8

--从xid反推看看。

select distinct sql_id from V$ACTIVE_SESSION_HISTORY where xid=hextoraw('07001B00512F0000');
SQL_ID
-------------
b9y957hayvgkm
select sql_id,sql_text from v$sql where sql_id='b9y957hayvgkm' ;
SQL_ID        SQL_TEXT
------------- ------------------------------------------------------------
b9y957hayvgkm update t set name=lpad('b',400,'b')

--正好对上!

时间: 2024-09-20 19:50:57

[20130904]等待事件wait for a undo record模拟.txt的相关文章

oracle 服务器断电重启导致数据库性能急剧下降之等待事件wait for a undo record

<> >       

防患未然:Oracle gc等待事件的发现、处理与预防

系统环境 两节点的RAC:AIX6.1+Oracle 11.2.0.3.3   AWR里展示出来的各种症状(数据来自实例2) 虽然应用没有报障,但AWR报告里的各种迹象已经很明显了   (1)   gc buffer busy acquire排进了Top 5 Timed Foreground Events   图-1   (2)   除去DB CPU在gc buffer busy acquire之后的就是gc cr block busy了   图-2   (3)   2h21bq1mnc5kd这

【等待事件】等待事件系列(5.1)--Enqueue(队列等待)

[等待事件]等待事件系列(5.1)--Enqueue(队列等待)   1  BLOG文档结构图   2  前言部分   2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① Enqueue队列等待 ② Enq数据字典 ③ enq: AE - lock ④ enq: MR锁 ⑤ enq: DX - contention ⑥ enq: SQ - contention 序列等待     2.2  相关参考文章链接 [推

Statspack之十四-&amp;amp;quot;log file sync&amp;amp;quot; 等待事件

原文出处: http://www.eygle.com/statspack/statspack14-LogFileSync.htm 当一个用户提交(commits)或者回滚(rollback),session的redo信息需要写出到redo logfile中.用户进程将通知LGWR执行写出操作,LGWR完成任务以后会通知用户进程.这个等待事件就是指用户进程等待LGWR的写完成通知. 对于回滚操作,该事件记录从用户发出rollback命令到回滚完成的时间. 如果该等待过多,可能说明LGWR的写出效率

Oracle中常见的33个等待事件小结

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

oracle等待事件3——高速缓冲内enq锁

6. enq:TC-contention 在手动执行检查点操作中,一部分需要获得TC锁(thread checkpointlock 或 tablespace checkpointlock )在获得TC锁过程中,若发生争用,则需要等待enq:TC-contention 事件.事实上获得TC锁的过程稍微复杂. 1) 服务器进程首先以X模式获得TC锁 2) 服务器进程将已获得的TC锁变更为SSX模式.同时,CKPT进程以SS模式获得该锁.CKPT获得锁后执行检查点操作. 3) 服务器欲重新以X模式获得

Oracle OWI 等待事件视图(v$session_wait/v$session_event/v$system_event)

    通常情况下,用户提交一条SQL语句,总会存在这样或那样的等待事件.也就是说由于所需资源被占用导致进程不得不处于等待状态.Oracle为我们提供了获取这些等待事件的可用视图.根据这些视图可以得知哪些事件导致该SQL语句效率低下而采取相应的修改或调整.本文基于Oracle 10g描述了如何通过视图v$session_wait,v$session_event,以及v$system_event去获取等待事件的相关信息.   1.等待事件相关参数  timed_statistics      指定

oracle等待事件2——高速缓冲内等待事件

1.cache buffers lru chain 要想查看或修改工作组(LRU+LRUW)进程,始终要持有管理相应工作组的cache buffers lru chain 锁存器,若在此过程中发生争用,则要等待:latch:cache buffers lru chain 事件. 在下面两类情况下我们必须首先获得cache buffers lru chain锁存器: (1)进程想要读取还没有装载到内存上的块时,通过查询LRU列分配到所需空闲缓冲区,再次过程中需要cache buffers lru

oracle等待事件8——段上的等待事件

1.enq:HW-contention 为防止多个进程同时修改HWM而提供的锁称为HW锁(官方文档解释:Space management operations on a specific segment).想要移动HWM的进程必须获得HW锁.HW锁争用大部分是因为大量执行insert所引发的,偶尔也会因大量执行update在回滚段中发生HW锁争用现象.若是update,表中段的扩展的大小虽然不多,但在创建回滚数据的过程中,需要回滚段的急速扩张.HW锁争用是在段的急速空间扩张时普遍出现的等待现象,