--undo
select * from user_tables where table_name='T%';
create table t(id int,name varchar2(10)) tablespace testtbs;
insert into t values(2,'b')
commit
update t set name='c' where id=1;--没有提交
--再打开另一个会话查看t的内容是修改前的;
select t.*,rowid from t
select dbms_rowid.rowid_relative_fno(rowid),dbms_rowid.rowid_block_number(rowid) from t
--跟踪那个块
alter system dump datafile 5 block 165
--查看跟踪文件
--flag对应位置全为-表示块被锁住,无法被其它会话读取,其它会话只能从uba即undo读取;
--跟踪uba数据,将uba转换为10进制
select to_number('00800093','xxxxxxxx') from dual;
--计算出对应的数据文件
select dbms_utility.data_block_address_file(8388755) from dual;
select * from v$dbfile
select * from dba_data_files
--计算出块id
select dbms_utility.data_block_address_block(8388755) from dual;
--跟踪这个快
alter system dump datafile 2 block 147
--发现其它会话读的数据在undo块,证明undo的作用,
commit
--commit后查看一样了;但是还被锁,flag变为u,undo里还是a
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28813052/viewspace-759620/ ,如需转载,请注明出处,否则将追究法律责任。