事务槽及Oracle多种提交方式

本文深入探讨了数据库中事务槽ITL的作用、数据块更改时的事务处理流程,并通过示例展示了如何操作和查询数据块信息。同时,文章还介绍了IMU缓冲区的工作原理及其对事务的影响,最后通过SQL查询展示了事务处理过程中的关键信息。
事务槽ITL,存在于数据块的头部
    默认是1
    最大255(从Oracle10g开始不能更改)

    select INI_TRANS,MAX_TRANS from dba_tables where table_name='T2'


对数据块进行更改的时候

首先对事务槽进行处理(1、写入事务ID 2、写入UBA(回滚块地址))


create table t10(id number(5),name char(2000));
insert into t10 values(1,'aa');
insert into t10 values(2,'bb');
insert into t10 values(3,'bb');
insert into t10 values(4,'cc');
insert into t10 values(5,'dd');
commit;
select dbms_rowid.rowid_relative_fno(rowid),dbms_rowid.rowid_block_number(rowid),id from t10;

DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)         ID
------------------------------------ ------------------------------------ ----------
                                   1                                67362          1
                                   1                                67362          2
                                   1                                67362          3
                                   1                                67363          4
                                   1                                67363          5

update t10 set name='abcd' where id=1;

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

    UBAFIL                       UBABLK                   XIDUSN(回滚段编号)    XIDSLOT(事务表编号)     XIDSQN(被覆盖次数) START_SCNB
---------- ---------- ---------- ---------- ---------- ----------
         2 (回滚块文件)        20 (回滚块)         3                                            39                                                852                                  2227264


SQL> select * from v$rollname;

       USN NAME
---------- ------------------------------
         0 SYSTEM
         1 _SYSSMU1$
         2 _SYSSMU2$
         3 _SYSSMU3$
         4 _SYSSMU4$
         5 _SYSSMU5$
         6 _SYSSMU6$
         7 _SYSSMU7$
         8 _SYSSMU8$
         9 _SYSSMU9$
        10 _SYSSMU10$

11 rows selected.

SQL> 

alter system dump undo header '_SYSSMU3$';//转储回滚段头

alter system dump datafile 2 block 20;

alter system dump datafile 1 block 67362;

SQL> select spid from v$process where addr in (select paddr from v$session where
    sid=(select sid from v$mystat where rownum=1));

SPID
------------
4716

SQL>

[oracle@czjie ~]$ cd $ORACLE_BASE;
[oracle@czjie ora10g]$ ls
admin  flash_recovery_area  oradata  oraInventory  product
[oracle@czjie ora10g]$ cd admin
[oracle@czjie admin]$ ls
ORCL
[oracle@czjie admin]$ cd ORCL
[oracle@czjie ORCL]$ ls
adump  bdump  cdump  dpdump  pfile  udump
[oracle@czjie ORCL]$ cd udump
[oracle@czjie udump]$ ls *4716*
orcl_ora_4716.trc
[oracle@czjie udump]$

Itl           Xid                                                           Uba         Flag  Lck        Scn/Fsc
0x01   0x0007.016.0000031e  0x008003d8.0177.0e  C---    0  scn 0x0000.0021fc27
0x02   0x0003.027.00000354  0x00800014.034d.03  ----    1  fsc 0x0000.00000000



IMU BUFFER



1、日志是从sharepool直接写入到redolog

2、IMUbuffer写满的时候要写入(buffercache)undobuffer里面,然后写入磁盘。

3  事务在获取undoblock的变快

4、CR读的时候速度变快

5、rac环境中是被禁止的


select * from v$sysstat where name like '%IMU%';


************

读一致性


一个数据块的undo数据可以找到这个数据块的所有undo数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值