返回顶部
首页 > 资讯 > 精选 >Oracle ITL是什么
  • 606
分享到

Oracle ITL是什么

2023-06-05 13:06:50 606人浏览 泡泡鱼
摘要

这篇文章主要讲解了“oracle ITL是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle ITL是什么”吧!一、ITL描述: ITL(Interested Transacti

这篇文章主要讲解了“oracle ITL是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle ITL是什么”吧!

一、ITL描述:

ITL(Interested Transaction List)是Oracle数据块内部的一个组成部分, 位于数据块头(block header),itl由xid(Transaction XID),uba(Undo block address),flag,lck和scn/fsc组成,
用来记录该块所有发生的事务,一个itl可以看作是一条事务记录。 当然,如果这个事务已经提交,那么这个itl的位置就可以被反复使用了,因为itl类似记录,所以,有的时候也叫itl槽位。如果一个事务一直没有提交,那么,这个事务将一直占用一个itl槽位,itl里面记录了事务信息,回滚段的入口, 事务类型等等。如果这个事务已经提交,那么,itl槽位中还保存的有这个事务提交时候的SCN号。

NORMal0falsefalsefalseMicrosoftInternetExplorer4

个数其最小值为1,由参数initrans控制(由于兼容性的原因,
oracle会在对象的存储块分配两个itl,所以initrans的最小值实际上为2),
最大值为255,由参数maxtrans控制,最大值参数在10g以后不能被修改,
itl是block级的概念,一个itl占用块46B的空间,参数initrans意味着块中
除去block header外一部分存储空间无法被记录使用(46B*initrans),
当块中还有一定的free space时,oracle可以使用free space构建itl供事务使用,
如果没有了free space,那么,这个块因为不能分配新的itl,所以就可能发生itl等待。
如果在并发量特别大的系统中,最好分配足够的itl个数,其实它并浪费不了太多的空间, 或者,设置足够的pctfree,保证itl能扩展,但是pctfree有可能是被行数据给消耗掉的, 如update,所以,也有可能导致块内部的空间不够而导致itl等待。

dump一个块可以看到ITL信息类似如下:
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0006.002.0000158e 0x0080104d.00a1.6e --U- 734
fsc 0x0000.6c9deff0
0x02 0x0000.000.00000000 0x00000000.0000.00 ---- 0
fsc 0x0000.00000000

Xid:事务id,在回滚段事务表中有一条记录和这个事务对应

Uba:回滚段地址,该事务对应的回滚段地址

第一段地址:回滚数据块的地址,包括回滚段文件号和数据块号

第二段地址:回滚序列号

第三段地址:回滚记录号

SELECT UBAFIL 回滚段文件号,UBABLK 数据块号,UBASQN 回滚序列号,
UBAREC 回滚记录号 FROM v$transaction --查看UBAwww.2cto.com

Flag:事务标志位。这个标志位就记录了这个事务的操作,各个标志的含义分别是:

----- = 事务是活动的,或者在块清除前提交事务

C--- = 事务已经提交并且清除了行定。

-B-- = this undo record contains the undo for this ITL entry

--U- = 事务已经提交(SCN已经是最大值),但是锁定还没有清除(快速清除)。

---T =当块清除的SCN被记录时,该事务仍然是活动的,块上如果有已经提交的事务,
那么在clean ount的时候,块会被进行清除,但是这个块里面的事务不会被清除。

Lck:影响的记录数

Scn/Fsc:快速提交(Fast Commit Fsc)的SCN或者Commit SCN。

每条记录中的行级锁对应于Itl列表中的序号,即哪个事务在该记录上产生的锁。

二、ITL等待

发生等待的场景:

1.超过maxtrans配置的最大ITL数

2.initrans不足,没有足够的free space来扩展ITL

解决方法:

1.maxtrans不足:这一情况是由高并发引起的:同一数据块上的事务量
已经超出了其实际允许的ITL数。因此,要解决这类问题就需要从应用着手,
减少事务的并发量;长事务,在保证数据完整性的前提下,增加commit的频率,
修改为短事务,减少资源占用事件。而对于OLAP系统来说(例如,其存在高并发量的数据录入模块),可以考虑增大数据块大小。

2.initrans不足:数据块上的ITL数量并没有达到MAX TRANS的限制,
发生这种情况的表通常会被经常UPDATE,从而造成预留空间(PCTFREE)被填满。
如果我们发现这类ITL等待对系统已经造成影响,可以通过增加表的INITRANS或者 PCTFREE来解决(视该表上的并发事务量而定,通常,如果并发量高,建议优先增加INITRANS,反之,则优先考虑增加PCTFREE)。 www.2cto.com

  要注意的一点是,如果是使用ALTER TABLE的方式修改这2个参数的话,
只会影响新的数据块,而不会改变已有数据的数据块——要做的这一点,需要将数据 导出/导入、重建表。

ITL重用后如何实现前ITL读一致性:

ORACLE通过ITL条目中记录的回滚段地址找到回滚段,实现读一致性,如果事务已提交, ITL就可以被重用,但是若前一个ITL被重用,前一个ITL的读一致性是如何实现的呢?

假定block只有一个itl,假定第一个事务的时候产生了ITL-0

第二个事务来了,产生了 ITL-1 ,ITL-1 里面的UBA 可以找到回滚段地址,
回滚段中除了记录了 block用户数据的 before image 外还记录了 ITL-0 的信息。

第三个事务来了,产生了 ITL-2 , ITL-2 中 UBA 指向回滚段,
回滚段中也记录了 ITL-1 的信息。

这样当一个查询若需要ITL-0时候的信息,则找到当前block,发现是 ITL-2 ,
根据UBA找到回滚段进行 roll 得到 变化前 block ,这个时候发现block中是 ITL-1 .
还不能满足需求。 于是再根据 ITL-1 中的 UBA 又去回滚段中找到数据来进行roll, 得到一个block 数据,这个时候block中就有了ITL-0。

通过根据当前ITL进行递归的方式找到数据,实现之前ITL的独一致性。

感谢各位的阅读,以上就是“Oracle ITL是什么”的内容了,经过本文的学习后,相信大家对Oracle ITL是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Oracle ITL是什么

本文链接: https://www.lsjlt.com/news/242959.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Oracle ITL是什么
    这篇文章主要讲解了“Oracle ITL是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle ITL是什么”吧!一、ITL描述: ITL(Interested Transacti...
    99+
    2023-06-05
  • oracle的ITL
    一、ITL描述: ITL(Interested Transaction List)是Oracle数据块内部的一个组成部分,位于数据块头(block header),itl由xid,uba,flag...
    99+
    2024-04-02
  • ITL争用--oracle 已经弃用了MAXTRANS 参数。
    在创建一个表的时候如若未指定任何(physical_attributes_clause )参数:If you omit this clause, then Oracle Database sets...
    99+
    2024-04-02
  • 什么是ORACLE SCN
    本篇内容主要讲解“什么是ORACLE SCN”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“什么是ORACLE SCN”吧!Oracle scn全称system ...
    99+
    2024-04-02
  • Oracle Vault是什么
    这篇文章主要为大家展示了“Oracle Vault是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Oracle Vault是什么”这篇文章吧。Oracle数...
    99+
    2024-04-02
  • 什么是oracle awr
    Oracle AWR(Automatic Workload Repository)是一个性能诊断工具,用于收集和管理Oracle数据...
    99+
    2023-08-30
    oracle
  • oracle rac 是什么
    Oracle RAC是一种集群数据库技术,它允许多台计算机共享同一个数据库。其特点有:1、高可用性,通过多节点的部署,即使某个节点发生故障,其他节点仍然可以继续提供服务,确保数据库的连续可用性;2、可伸缩性,通过增加或减少节点的数量来提高或...
    99+
    2023-08-03
  • 什么是oracle DBA
    Oracle DBA是指Oracle数据库管理员,负责管理和维护Oracle数据库环境。他们负责数据库的安装、配置、备份恢复、性能优...
    99+
    2023-08-22
    oracle
  • 什么是oracle rac
    Oracle RAC(Real Application Clusters)是一种高可用性和可扩展性数据库架构,它允许将多个数据库服务...
    99+
    2023-08-22
    oracle
  • 什么是Oracle审计
    本篇内容主要讲解“什么是Oracle审计”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“什么是Oracle审计”吧! Oracle ...
    99+
    2024-04-02
  • 什么是oracle游标
    Oracle游标是一种用来处理查询结果集的数据库对象。它允许开发者在一个SQL语句执行后,可以逐行地处理结果集中的数据。游标可以类比...
    99+
    2023-08-30
    oracle
  • oracle中em是什么
    oracle中em是企业管理器,是Enterprise Manager的缩写。可以通过oracle EM使用Web界面来监控,管理,维护Oracle数据库,DBA可以从任何可以访问web应用的位置通过OEM来对数据库行各种管理和监控。是Or...
    99+
    2023-07-10
  • oracle中exception是什么
    在Oracle数据库中,exception(异常)是指在执行过程中发生的错误或异常条件。当发生异常时,Oracle会中止当前的操作并...
    99+
    2023-08-08
    oracle exception
  • oracle中sid是什么
    在Oracle数据库中,SID是指System Identifier(系统标识符),它是用来唯一标识一个Oracle实例的字符串。每...
    99+
    2023-08-22
    oracle
  • 什么是oracle服务
    Oracle服务是指Oracle数据库管理系统(Oracle Database)提供的一组服务,用于管理、维护和操作Oracle数据...
    99+
    2023-08-28
    oracle
  • oracle是什么意思
    oracle 是由甲骨文公司开发的数据库管理系统 (dbms),主要用于管理和组织大型数据集。oracle 具有高可靠性、高性能、可扩展性、安全性、可定制性等特点,广泛应用于 erp、c...
    99+
    2024-04-02
  • oracle是什么软件有什么用
    oracle 是一款企业级数据库管理系统,用于处理海量数据,提供高性能、可扩展性和可靠性。其用途包括:数据管理事务处理分析和报表云计算大数据 Oracle:强大且通用的数据库软件 Or...
    99+
    2024-05-10
    oracle
  • oracle数据库是什么
    oracle数据库是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Oracle数据库全称为OracleDatabase,简...
    99+
    2024-04-02
  • oracle触发器是什么
    本篇文章给大家分享的是有关oracle触发器是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Oracle触发器是什么呢? 首先我们来了解一...
    99+
    2024-04-02
  • Oracle同义词是什么
    这篇文章主要介绍“Oracle同义词是什么”,在日常操作中,相信很多人在Oracle同义词是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Oracle同义词是什么”的疑惑...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作