我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Oracle ITL是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Oracle ITL是什么

这篇文章主要讲解了“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是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Oracle ITL是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Oracle ITL是什么

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

oracle rac 是什么

Oracle RAC是一种集群数据库技术,它允许多台计算机共享同一个数据库。其特点有:1、高可用性,通过多节点的部署,即使某个节点发生故障,其他节点仍然可以继续提供服务,确保数据库的连续可用性;2、可伸缩性,通过增加或减少节点的数量来提高或
2023-08-03

什么是oracle rac

Oracle RAC(Real Application Clusters)是一种高可用性和可扩展性数据库架构,它允许将多个数据库服务器(节点)连接在一起,共享存储和处理负载。使用Oracle RAC,多个数据库服务器可以同时访问和处理同一个
2023-08-22

什么是oracle DBA

Oracle DBA是指Oracle数据库管理员,负责管理和维护Oracle数据库环境。他们负责数据库的安装、配置、备份恢复、性能优化、安全管理等工作。Oracle DBA需要具备数据库管理、数据备份恢复、性能调优、SQL编程等技能,以确保
2023-08-22

什么是oracle awr

Oracle AWR(Automatic Workload Repository)是一个性能诊断工具,用于收集和管理Oracle数据库实例的性能数据。它可以自动收集数据库实例的性能统计信息,包括系统活动、会话、等待事件和性能指标等。AWR还
2023-08-30

oracle中sid是什么

在Oracle数据库中,SID是指System Identifier(系统标识符),它是用来唯一标识一个Oracle实例的字符串。每个Oracle实例都有一个唯一的SID,用于区分不同的数据库实例。在连接Oracle数据库时,需要指定正确的
2023-08-22

oracle中em是什么

oracle中em是企业管理器,是Enterprise Manager的缩写。可以通过oracle EM使用Web界面来监控,管理,维护Oracle数据库,DBA可以从任何可以访问web应用的位置通过OEM来对数据库行各种管理和监控。是Or
2023-07-10

oracle中exception是什么

在Oracle数据库中,exception(异常)是指在执行过程中发生的错误或异常条件。当发生异常时,Oracle会中止当前的操作并跳转到异常处理程序进行处理。异常可以是由用户或系统引发的,可以是预定义的异常(如NO_DATA_FOUND、
2023-08-08

什么是oracle服务

Oracle服务是指Oracle数据库管理系统(Oracle Database)提供的一组服务,用于管理、维护和操作Oracle数据库。这些服务包括数据库的安装和配置、数据备份和恢复、性能优化、用户和权限管理、数据迁移和复制等。Oracle
2023-08-28

什么是oracle游标

Oracle游标是一种用来处理查询结果集的数据库对象。它允许开发者在一个SQL语句执行后,可以逐行地处理结果集中的数据。游标可以类比为一个指向查询结果集中的当前行的指针。通过游标,开发者可以逐行地读取和处理查询结果集中的数据,而不必一次性将
2023-08-30

oracle是什么软件有什么用

oracle 是一款企业级数据库管理系统,用于处理海量数据,提供高性能、可扩展性和可靠性。其用途包括:数据管理事务处理分析和报表云计算大数据Oracle:强大且通用的数据库软件Oracle 是一款由 Oracle Corporation
oracle是什么软件有什么用
2024-05-10

oracle中什么是索引

在Oracle中,索引是一种数据结构,用于快速访问和检索数据库表中的数据。它类似于书籍的目录,通过指向表中数据的物理位置,可以加快查询的速度。索引在数据库表中的某个列或多个列上创建,可以根据这些列的值快速定位到具有特定值的行。通过使用索引,
2023-08-22

oracle decode用法是什么

oracle decode用法是“DECODE(表达式, 条件1, 结果1, 条件2, 结果2, ..., 默认结果)”,表达式是待比较的字段或表达式,可以是任何数据类型的值,它与条件依次进行比较。条件可以是字段或常量,而结果可以是字段、常
2023-07-10

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录