加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Oracle UNDO块

发布时间:2021-05-16 04:03:46 所属栏目:站长百科 来源:网络整理
导读:副标题#e# ?1)首先更新几条数据,但是不进行commit如下: [email?protected] prodselect * from scott.emp;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- --------- ---------- ------------------- ---------- ---------- --------

uba: 由三部分组成undo块的地址、UNDO块被重用的次数、在UNDO块的第几条记录,当undo块的地址为0说明UNDO块不是空闲的,即0x00000000?
ext: UNDO块是在哪个区(extent)
spc: UNDO块中多少空闲空间,单位字节??从上面的UNDO空闲池中看,没有空闲的UNDO块。

13)事物表

  TRN TBL::
 
  index  state cflags  wrap#    uel         scn            dba            parent-xid    nub     stmt_num    cmt
  ------------------------------------------------------------------------------------------------
   0x00    9    0x00  0x000b  0xffff  0x0000.00104485  0x0180000e  0x0000.000.00000000  0x00000001   0x00000000  1552092317
   0x01    9    0x00  0x000a  0x001a  0x0000.001043f3  0x0180000c  0x0000.000.00000000  0x00000001   0x00000000  1552092190
   0x02    9    0x00  0x000a  0x0021  0x0000.00104374  0x0180000c  0x0000.000.00000000  0x00000001   0x00000000  1552092173
   0x03    9    0x00  0x000a  0x000c  0x0000.0010440a  0x00000000  0x0000.000.00000000  0x00000000   0x00000000  1552092191
   0x04    9    0x00  0x000a  0x0001  0x0000.00104376  0x0180000c  0x0000.000.00000000  0x00000001   0x00000000  1552092173
   0x05    9    0x00  0x000a  0x000a  0x0000.00104403  0x0180000d  0x0000.000.00000000  0x00000001   0x00000000  1552092191
   0x06    9    0x00  0x000a  0x0007  0x0000.001043fe  0x0180000d  0x0000.000.00000000  0x00000001   0x00000000  1552092191
   0x07    9    0x00  0x000a  0x0008  0x0000.00104400  0x0180000d  0x0000.000.00000000  0x00000001   0x00000000  1552092191
   0x08    9    0x00  0x000a  0x0005  0x0000.00104402  0x0180000d  0x0000.000.00000000  0x00000001   0x00000000  1552092191
   0x09    9    0x00  0x000a  0x0003  0x0000.00104407  0x0180000d  0x0000.000.00000000  0x00000001   0x00000000  1552092191
   0x0a    9    0x00  0x000a  0x0009  0x0000.00104404  0x0180000d  0x0000.000.00000000  0x00000001   0x00000000  1552092191
   0x0b    9    0x00  0x000a  0x000e  0x0000.0010440f  0x0180000d  0x0000.000.00000000  0x00000001   0x00000000  1552092191
   0x0c    9    0x00  0x000a  0x000b  0x0000.0010440c  0x0180000d  0x0000.000.00000000  0x00000001   0x00000000  1552092191
   0x0d    9    0x00  0x000a  0x0010  0x0000.00104414  0x0180000d  0x0000.000.00000000  0x00000001   0x00000000  1552092191
   0x0e    9    0x00  0x000a  0x000d  0x0000.00104411  0x0180000d  0x0000.000.00000000  0x00000001   0x00000000  1552092191
   0x0f    9    0x00  0x000a  0x0012  0x0000.0010441e  0x0180000d  0x0000.000.00000000  0x00000001   0x00000000  1552092191
   0x10    9    0x00  0x000a  0x000f  0x0000.0010441a  0x0180000d  0x0000.000.00000000  0x00000001   0x00000000  1552092191
   0x11    9    0x00  0x000a  0x0013  0x0000.00104420  0x0180000d  0x0000.000.00000000  0x00000001   0x00000000  1552092191
   0x12    9    0x00  0x0009  0x0011  0x0000.0010441f  0x0180000d  0x0000.000.00000000  0x00000001   0x00000000  1552092191
   0x13    9    0x00  0x000a  0x0014  0x0000.00104422  0x0180000d  0x0000.000.00000000  0x00000001   0x00000000  1552092192
   0x14    9    0x00  0x000a  0x0015  0x0000.00104425  0x0180000d  0x0000.000.00000000  0x00000001   0x00000000  1552092192
   0x15    9    0x00  0x000a  0x0016  0x0000.00104435  0x0180000d  0x0000.000.00000000  0x00000001   0x00000000  1552092195
   0x16    9    0x00  0x000a  0x0017  0x0000.00104437  0x0180000d  0x0000.000.00000000  0x00000001   0x00000000  1552092195
   0x17    9    0x00  0x000a  0x0018  0x0000.00104439  0x0180000c  0x0000.000.00000000  0x00000001   0x00000000  1552092196
   0x18    9    0x00  0x000a  0x001b  0x0000.0010443b  0x0180000c  0x0000.000.00000000  0x00000001   0x00000000  1552092196
   0x19   10    0x80  0x000a  0x0000  0x0000.0010444f  0x0180000c  0x0000.000.00000000  0x00000001   0x00000000  0
   0x1a    9    0x00  0x0009  0x0006  0x0000.001043f6  0x0180000c  0x0000.000.00000000  0x00000001   0x00000000  1552092190
   0x1b    9    0x00  0x000a  0x001c  0x0000.00104454  0x0180000e  0x0000.000.00000000  0x00000001   0x00000000  1552092257
   0x1c    9    0x00  0x000a  0x001d  0x0000.0010445a  0x0180000e  0x0000.000.00000000  0x00000001   0x00000000  1552092257
   0x1d    9    0x00  0x000a  0x001e  0x0000.00104460  0x0180000e  0x0000.000.00000000  0x00000001   0x00000000  1552092257
   0x1e    9    0x00  0x000a  0x001f  0x0000.00104479  0x0180000e  0x0000.000.00000000  0x00000001   0x00000000  1552092317
   0x1f    9    0x00  0x000a  0x0000  0x0000.0010447f  0x0180000e  0x0000.000.00000000  0x00000001   0x00000000  1552092317
   0x20    9    0x00  0x0009  0x0002  0x0000.00104373  0x0180000c  0x0000.000.00000000  0x00000001   0x00000000  1552092173
   0x21    9    0x00  0x0009  0x0004  0x0000.00104375  0x0180000c  0x0000.000.00000000  0x00000001   0x00000000  1552092173?

TRN TBL::(事务表)是UNDO段头块最重要的。我们一一来解释每个字段的意思:

index 表示事务表中槽号,只是一个序列而已,从0x00开始到0x21结束,11g的版本有34个槽。
state 表示事务状态:9代表事务不活动,10代表事务正在活动,从这里我们看出16进制第0x19号槽上的事务正在活动。在发生事务前,Oracle会找事务控制列表中的chd=0x0019,说白了就是重从index=0x19的槽,存放当前最新的事务。
cflags 表示正在使用事务槽的事务的状态:0x00表示非活动事务、0x80表示活动事务、0x10表示死事务、0x90表示被回滚的死事务? ???平时我们看到的最多就是0x00表示非活动事务、0x80表示活动事务,后面的很少发生。
wrap# 表示事务表上的事务槽被重用的次数,它是XID的一部分。0x000a表示此时事务槽被重用了10次。
uel 表示当前活动事务所在事务槽的下一个事务槽的指针(即如果又发生一个新的事务,此时就会用到UEL指向的事务槽上的index)。

Oracle UNDO块

?
scn? ?表示务事启动、提交、回滚的SCN.
dba? ?表示uba:第一部分的undo块地址,这个DBA是(rollback)回滚的起始点,也就是说是记录事务修改的最后一条记录所在UNDO块的地址。
nub? ?表示当前事务所用到的UNDO块的个数。
cmt? ?表示最接近当前的提交时间戳,是从1970年1月1号零时开始计数(以秒为单位记录)。0表示事务正在活动。

14)我们已经在 undo header中找到了数据的前镜像,那么我们在看一下这个前镜像到底是什么?

事物表中0x19槽的dba 0x0180000c即6号文件的12号块(把0x0180000c转为2进制,前10为文件号,后22位为块号,转换为10进制可得数据文件号为6,数据块为12)。

转储数据块

[email?protected] prod>alter system dump datafile 6 block 12;

System altered.?

?

********************************************************************************
UNDO BLK:  
xid: 0x000b.019.0000000a  seq: 0x3   cnt: 0x23  irb: 0x23  icl: 0x0   flg: 0x0000
 
 Rec Offset      Rec Offset      Rec Offset      Rec Offset      Rec Offset
---------------------------------------------------------------------------
0x01 0x1f84     0x02 0x1f20     0x03 0x1ebc     0x04 0x1e58     0x05 0x1df4     
0x06 0x1d90     0x07 0x1d08     0x08 0x1bf4     0x09 0x1b8c     0x0a 0x1b34     
0x0b 0x1ae0     0x0c 0x1a84     0x0d 0x1a10     0x0e 0x19b4     0x0f 0x1960     
0x10 0x188c     0x11 0x17b8     0x12 0x16dc     0x13 0x15fc     0x14 0x14fc     
0x15 0x13f8     0x16 0x131c     0x17 0x1238     0x18 0x1154     0x19 0x1104     
0x1a 0x107c     0x1b 0x0ff0     0x1c 0x0f88     0x1d 0x0ea0     0x1e 0x0e38     
0x1f 0x0de0     0x20 0x0d5c     0x21 0x0d00     0x22 0x0ca8     0x23 0x0c50 ?

可以看到数据记录为35,这是第一条,并且最后一个偏移量0x23也为35,这正是rollback的开始。

15)继续向下

可以先查询出object_id,在trace文件中搜索

[email?protected] prod>col object_name for a20
[email?protected] prod>select OBJECT_NAME,OBJECT_ID,OBJECT_TYPE,CREATED from dba_objects where OBJECT_name = ‘EMP‘;

OBJECT_NAME           OBJECT_ID OBJECT_TYPE         CREATED
-------------------- ---------- ------------------- -------------------
EMP                       73181 TABLE               2009-08-13 23:35:45?

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读