当前位置:  数据库>oracle

实验: Oracle事务(ITL)

    来源: 互联网  发布时间:2017-04-14

    本文导语: 1 建表,插入数据 SQL> create table test(id number, name varchar2(10)); Table created SQL> insert into test values(1, 'a'); 1 row inserted SQL> select id,   2         name,   3         rowid,   4         dbms_rowid.rowid_relative_fno(rowid) file#,   5         ...

1 建表,插入数据

SQL> create table test(id number, name varchar2(10));

Table created

SQL> insert into test values(1, 'a');

1 row inserted

SQL> select id,

  2         name,

  3         rowid,

  4         dbms_rowid.rowid_relative_fno(rowid) file#,

  5         dbms_rowid.rowid_block_number(rowid) block#

  6    from test;

 

        ID NAME       ROWID                   FILE#     BLOCK#

---------- ---------- ------------------ ---------- ----------

         1 a          AAANLOAAEAAAAMAAAA          4        768

2 Dump块

SQL> alter system dump datafile 4 block 768;

System altered

 

从udump文件中Trace文件可以得信息:

=======================================================================================

……

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc

0x01   0x0008.012.0000020d  0x008000af.01cf.1d  ----    1  fsc 0x0000.00000000

0x02   0x000a.007.000001cd  0x0080035c.0148.0d  --U-    1  fsc 0x0007.001a603f

……

=======================================================================================

 

ITL中的xid:0x0005.020.0000020e是由undo信息组成的:xidusn.xidslot.xidsqn

ITL中的uba:0x0080024d.0129.1f是由uba(undo block address).UBASQN.UBAREC

undo block address是0080024d,是一个16进制数,可以通过如下函数转换为UBAFIL和UBABLK

3 分解xid

SQL> select to_number('0008','xxxxx') xidusn from dual;

    XIDUSN

----------

         8

SQL> select to_number('012','xxxxx') xidslot from dual;

   XIDSLOT

----------

        18

SQL> select to_number('0000020d','xxxxxxxxx') xidsqn from dual;

    XIDSQN

----------

       525

4 分解uba

SQL> select dbms_utility.data_block_address_file(to_number('008000af','xxxxxxxx')) UBAFIL from dual;

    UBAFIL

----------

         2

SQL> select dbms_utility.data_block_address_block(to_number('008000af','xxxxxxxx')) UBABLK from dual;

    UBABLK

----------

       175

SQL> select to_number('01cf','xxxxxxxxx') UBASQN from dual;

    UBASQN

----------

       463

SQL> select to_number('1d','xxxxxxxxx') UBAREC from dual;

    UBAREC

----------

        29

5 dump信息和v$transaction比较

SQL> select xidusn, xidslot, xidsqn, ubafil, ubablk, ubasqn, ubarec from v$transaction;

    XIDUSN    XIDSLOT     XIDSQN     UBAFIL     UBABLK     UBASQN     UBAREC

---------- ---------- ---------- ---------- ---------- ---------- ----------

         8         18        525          2        175        463         29

 

6 数据块锁定

在另一个会话中操作:

SQL> insert into test values(2, 'a');

1 row inserted

SQL> select id,

  2         dbms_rowid.rowid_relative_fno(rowid) file#,

  3         dbms_rowid.rowid_block_number(rowid) block#

  4    from test;

         ID      FILE#     BLOCK#

---------- ---------- ----------

         2          4        767

第一个会话由于未提交, 而锁定了数据块768, 所以第二个会话新插入的数据在新的块767, 与之前的768不同.


    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Docker v1.12.0-rc5 普通版实验版本下载,高级容器引擎
  • 实验室数据管理 iLAP
  • 想找一些linux相关的实验题,哪里可以下载?最好附有答案参考
  • 实验室数据管理分析系统 LabKey Server
  • 用linux集群局域网实验 如何占尽带宽 瓶颈在哪里???
  • 全文检索实验系统 zettair
  • 谁实验过哪个版本的java虚拟机在xp平台上运行成功了?
  • 正在学操作系统原理,做操作系统方面的实验用那种工具较好?
  • 现在网上是否有公开的unix实验室??
  • 100分求 JavaMail编程实验的环境搭建问题!
  • 实验室信息系统 OpenLIS
  • 实验
  • 求《操作系统原理》(第2版), 庞丽萍, 华中理工大学出版的配套实验书原代码!!!
  • 编程技术其它 iis7站长之家
  • 求 博创2410教学实验箱的资料光盘
  • 求助:网上哪里有可以ssh登录,供学习和实验的unix、linux环境?
  • 使用curl命令下载网页,问题比较具体,需要手动实验
  • Linux网络管理实验【转自bbs.bitsCN.com】
  • 中软信息安全实验室诚聘Linux/Unix程序员
  • 有没有实验过在AIX上用sun 的jdk
  • linux文件系统实验设计的两个问题。谢谢。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3