ITL(Interested Transaction List)

ITL是位于数据块头部的事物槽列表,它是由一系列的ITS(Interested Transaction Slot,事物槽)组成,其初始的ITL Slot数量由INITRANS决定的,如果有足够的剩余空间,oracle也会根据需要动态的分配这些slot,直到受到空间限制或者达到MAXTRANS,注意10g以后MAXTRANS被废弃,默认为255。

ITL里的信息包括了xid,uba,flag,lck和scn/fsc,它是用来记录数据块上发生的事务相关信息,其中xid表示事物的id,uba表示对应到undo块上的地址,flag用来表示该条事务的状态,lck是块上的锁标记等。

我们使用dump命令来认识一下itl里的内容:

SQL> conn /as sysdba
Connected.
SQL> select * from v$version;BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - ProductionSQL> conn scott/tiger
Connected.
SQL> select rowid,dbms_rowid.rowid_relative_fno(rowid) fno,2  dbms_rowid.rowid_block_number(rowid) block_id,3  dbms_rowid.rowid_row_number(rowid) 4  from dept;ROWID                     FNO   BLOCK_ID DBMS_ROWID.ROWID_ROW_NUMBER(ROWID)
------------------ ---------- ---------- ----------------------------------
AAAR3bAAEAAAACHAAA          4        135                                  0
AAAR3bAAEAAAACHAAB          4        135                                  1
AAAR3bAAEAAAACHAAC          4        135                                  2
AAAR3bAAEAAAACHAAD          4        135                                  3SQL> update dept set dname='development' where deptno=10;1 row updated.      --注意未提交

--另开一个会话

[oracle@std ~]$ sqlplus scott/tigerSQL*Plus: Release 11.2.0.1.0 Production on Fri Oct 16 15:24:12 2015Copyright (c) 1982, 2009, Oracle.  All rights reserved.Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> update dept set dname='AAAAA' where deptno=40;1 row updated.SQL> commit;Commit complete.SQL> conn /as sysdba
Connected.SQL> alter system dump datafile 4 block 135;System altered.SQL> oradebug setmypid
Statement processed.
SQL> oradebug tracefile_name
/u02/app/diag/rdbms/orcl/ORCL/trace/ORCL_ora_7978.trc

查看一下dump出来的内容:

more /u02/app/diag/rdbms/orcl/ORCL/trace/ORCL_ora_7978.trc
......
Block header dump:  0x01000087Object id on Block? Yseg/obj: 0x11ddb  csc: 0x00.105858  itc: 2  flg: E  typ: 1 - DATAbrn: 0  bdba: 0x1000080 ver: 0x01 opc: 0inc: 0  exflg: 0Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0001.010.00000198  0x00c15aac.0061.36  C---    0  scn 0x0000.000b6f31
0x02   0x0000.000.00000000  0x00000000.0000.00  ----    0  fsc 0x0000.00000000
bdba: 0x01000087
data_block_dump,data header at 0xcac664

可以看到dump出来的内容包括了事务id,对应的undo地址,事务的状态,锁信息等,通过这些信息就可以标识当前数据块的DML情况。

理解flg标识位含义:

---- = transaction is active, or committed pending cleanout
C--- = transaction has been committed and locks cleaned out
-B-- = this undo record contains the undo for this ITL entry
--U- = transaction committed (maybe long ago); SCN is an upper bound
---T = transaction was still active at block cleanout SCN

------ITL在ORACLE中的使用

当发出一条sql语句时,ORACLE会记录下这个时刻(SCN),然后在buffer cache中查找需要的BLOCK,或者从磁盘上读。当别的会话修改了数据,或者正在修改数据,就会在相应的block上记录ITL,此时ORACLE发现ITL中记录的SCN(Scn/Fsc)大于SELECT时刻的SCN,那么ORACLE就会根据ITL中的Uba找到UNDO信息获得该block的前镜像,然后在buffer cache 中构造出CR(consistent read)块,此时ORALCE也会检查构造出来的BLOCK中ITL记录的SCN(Scn/Fsc),如果SCN(Scn/Fsc)还大于select时刻的SCN,那么一直重复构造前镜像,然后ORACLE找到前镜像BLOCK中的ITL的SCN是否小于select的SCN,同时检查这个事物有没有提交或者回滚,如果没有,那么继续构造前镜像,直到找到需要的BLOCK,如果在构造前镜像的过程中所需的UNDO信息被覆盖了,就会报ORA-01555快照过旧的错误。

参考:http://wenku.baidu.com/link?url=Pp9XTyF_4rYzhdNOeewFhmp_YAoVS1Pq8FJYvOy1_DS10DWIWreYDSLDpGwLhibjFO6SYGunPcvZ_aTP1P5fZzFCbw0m7qwXCT4EMYMSBpK

转载于:https://www.cnblogs.com/myrunning/p/4885451.html

Oracle ITL(Interested Transaction List)理解相关推荐

  1. ITL(Interested Transaction List)理解

    一.ITL描述: ITL(Interested Transaction List)是Oracle数据块内部的一个组成部分,位于数据块头(block header),itl由xid,uba,flag,l ...

  2. Oracle Block浅析2:ITL(Interested Transaction List)

    一.ITL(Interested Transaction List): ITL(Interested Transaction List)是Oracle数据块内部的一个组成部分,位于数据块头(block ...

  3. Orace ITL(Interested Transaction List) 说明

    一. ITL 说明 ITL: Interested Transaction List,也叫事务槽,它位于BLOCK Header.先dump 一个block,看一下这个ITL的信息. SELECTa. ...

  4. what is ITL( Interested Transaction list)

    what is ITL( Interested Transaction list) Segment Transaction Slot Internals Interested Transaction ...

  5. zt_Orace ITL(Interested Transaction List) 说明

    http://blog.csdn.net/tianlesoftware/article/details/6573988 来自 " ITPUB博客 " ,链接:http://blog ...

  6. oracle itl 故障,ORACLE ITL事务槽

    讲到ITL(事务槽)必定先说数据块,那么什么是数据块呢?先给大家上一个数据块结构图 数据块分别由块头.ITL(事务槽).表信息区.行信息区.块空闲区.行数据区组成,其中ITL用来记录在数据块发生的所有 ...

  7. 转 -- Oracle Interested Transaction List (ITL) Waits

    原址如下: http://www.rampant-books.com/art_nanda_interested_tarnsaction_list_itl.htm OracleInterested Tr ...

  8. 什么是Interested Transaction List(ITL)--Oracle?

    Oracle ITL. 1.什么是Interested Transaction List(ITL)? 2.什么是Interested Transaction List(ITL)等待? 3.怎样减少In ...

  9. ORACLE时间函数(SYSDATE)深入理解

    ORACLE时间函数(SYSDATE)深入理解 加法  select sysdate,add_months(sysdate,12) from dual; --加1年  select sysdate,a ...

最新文章

  1. 我叫Java,2019年总结,大家请查收
  2. 二元logistic模型案例_二元逻辑回归的简介与操作演示
  3. TensorFlow练习12: 判断男声女声
  4. 23 DesignPatterns学习笔记:C++语言实现 --- 2.2 Adapter
  5. oracle32位11g中文乱码,win7 64位系统 Oracle32bit + PL/SQL访问Orale服务,Oracle 11g的安装,中文乱码问题的解决...
  6. Android之运行Java.lang.UnsatisfiedLinkError的错误解决办法
  7. [转]过度情绪化心智模式的10大特征——看看你有几个?
  8. 信息学奥赛一本通(1226:装箱问题)
  9. 《一张图看懂华为云BigData Pro鲲鹏大数据解决方案》
  10. html怎么让图片自动动起来,css如何让图片动起来?
  11. BUG: Bad page map in process XXX pte:800000036fae6227 pmd:35be8c067
  12. android siri声波动画,Waver声波效果开源项目:和 Siri 一起学数学
  13. spark.yarn.archive spark.yarn.jars
  14. ubuntu 轻量级图片编辑软件
  15. 如何计算根号之牛顿迭代法
  16. 耗油是什么,怎么用?
  17. python实现炫酷字母雨
  18. Python股票分析系列——数据整理和绘制.p2
  19. 移动端网页禁止下拉刷新css
  20. Android Audio 2: Audio相关术语

热门文章

  1. TCP/IP详解读书笔记:链路层
  2. windows下安装python的包管理工具pip,scikit-learn
  3. Ubuntu 10不能通过改source.list装JDK 1.6
  4. Genymotion安装那些事
  5. JVM与计算机之间的关系
  6. Phoenix+Hbase二级索引
  7. Python实现邮件发送
  8. Error:Cause: org/gradle/api/publication/maven/internal/DefaultMavenFactory Android
  9. PeopleTools 8.54 first install note
  10. 对CSRF(跨站请求伪造)的理解