Oracle 并发回滚

问题描述:

数据库突然出现大量的回滚进程。

问题分析:

从v$session中看到操作的对象是TAB1及表上的索引。但是为什么会使用并发来回滚呢?

查询视图v$fast_start_transactions

点击(此处)折叠或打开

  1. select usn,slt,seq,state,undoblockstotal,undoblocksdone,xid,rcvservers from v$fast_start_transactions;
  2.        USN        SLT        SEQ STATE            UNDOBLOCKSTOTAL UNDOBLOCKSDONE XID              RCVSERVERS
  3. ---------- ---------- ---------- ---------------- --------------- -------------- ---------------- ----------
  4.         34         24    5044735 RECOVERED                  40861          40861 00220018004CF9FF        256
  5.         45         26    2937596 RECOVERED                  40862          40862 002D001A002CD2FC        256
  6.         45          7    2935629 RECOVERED                  40861          40861 002D0007002CCB4D        256
  7.         46         14    2594590 RECOVERED                  60436          60436 002E000E0027971E        256
  8.         15         19    3116186 RECOVERED                  40863          40863 000F0013002F8C9A        256
  9.         48          9    1713657 RECOVERED                  29744          29744 00300009001A25F9        256
  10.         16         44    3088013 RECOVERED                  16098          16098 0010002C002F1E8D        256
  11.         39         25    5180630 RECOVERED                     18             18 00270019004F0CD6          1
  12.         39         42    5314292 RECOVERED                  40861          40861 0027002A005116F4        256
  13.          7         21    3077967 RECOVERED                  40862          40862 00070015002EF74F        256
  14.         42         24    3950504 RECOVERED                  40861          40861 002A0018003C47A8        256
  15.         43         11    3892882 RECOVERED                  40862          40862 002B000B003B6692        256 
  16.         21         23    3309555 RECOVERED                 112751         112751 0015001700327FF3        256
  17.         10         38    3186672 RECOVERED                  29632          29632 000A002600309FF0        256
  18. 14 rows selected.

smon trace文件:


点击(此处)折叠或打开

  1. Dead transaction 0x0020.02f.00471f24 recovered by 128 server(s)
  2. Dead transaction 0x0024.00f.004430af recovered by 1 server(s)
  3. Dead transaction 0x0012.020.002c6126 recovered by 1 server(s)
  4. Dead transaction 0x0025.00a.00416a26 recovered by 1 server(s)
  5. Dead transaction 0x000d.01a.0029c77e recovered by 1 server(s)
  6. Dead transaction 0x0001.019.002a55d8 recovered by 1 server(s)

根据对12/9 12:59和17:30左右时间点的redo进行logminer解析,导致回滚的语句是对表TAB2更新。其中对TAB2的更新触发了trigger。

该trigger更新了表TAB1。

1. 下面是从17:21~ 17:29对象redo使用排序,其中TAB2有19万条记录更新。


点击(此处)折叠或打开

  1. SEG_NAME   CNT
  2.            5457509
  3. TAB1       923207
  4. ...
  5. ...
  6. TAB2       190329

2. 其中update语句使用的是同一个xid 0027002A005116F4,这个xid和trace文件中进行recover 事务号一致。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25105315/viewspace-2133535/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25105315/viewspace-2133535/

你可能感兴趣的:(数据库)