1 建表,插入数据SQL> create table test(id number, name varchar2(10));Table createdSQL> insert into test values(1, "a");1 row insertedSQL> 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/Fsc0x01 0x0008.012.0000020d 0x008000af.01cf.1d ---- 1 fsc 0x0000.000000000x02 0x000a.007.000001cd 0x0080035c.0148.0d --U- 1 fsc 0x0007.001a603f……=======================================================================================
ITL中的xid:0x0005.020.0000020e是由undo信息组成的:xidusn.xidslot.xidsqnITL中的uba:0x0080024d.0129.1f是由uba(undo block address).UBASQN.UBARECundo block address是0080024d,是一个16进制数,可以通过如下函数转换为UBAFIL和UBABLK
3 分解xidSQL> select to_number("0008","xxxxx") xidusn from dual; XIDUSN---------- 8SQL> select to_number("012","xxxxx") xidslot from dual; XIDSLOT---------- 18SQL> select to_number("0000020d","xxxxxxxxx") xidsqn from dual; XIDSQN---------- 525
4 分解ubaSQL> select dbms_utility.data_block_address_file(to_number("008000af","xxxxxxxx")) UBAFIL from dual; UBAFIL---------- 2SQL> select dbms_utility.data_block_address_block(to_number("008000af","xxxxxxxx")) UBABLK from dual; UBABLK---------- 175SQL> select to_number("01cf","xxxxxxxxx") UBASQN from dual; UBASQN---------- 463SQL> 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 insertedSQL> 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不同.ORA-19800: Unable to initialize Oracle Managed Destination查看Oracle表空间大小及所剩空间大小相关资讯 Oracle数据库 Oracle入门教程 oracle数据库教程
- Oracle数据库全球化 (03月01日)
- Oracle数据库日期过滤方法性能比较 (02/02/2015 13:20:26)
- Oracle数据库安装中端口被占用问题 (10/29/2014 07:42:24)
| - 在CentOS 6.6上搭建C++运行环境并 (10/10/2015 19:44:40)
- Oracle数据库无法使用localhost和 (11/14/2014 16:39:10)
- 使用SQLT来构建Oracle测试用例 (08/28/2014 06:17:41)
|
本文评论 查看全部评论 (0)