欢迎大家来到IT世界,在知识的湖畔探索吧!
概述
今天主要分享一个最近做的实验,主要是为了通过undo块来查看Oracle事务信息,下面介绍下实验的整体过程。
1、开始一个事务
SQL>create table t1(id int,name varchar2(10)); SQL>insert into t1 values(1,'aa'); SQL>insert into t1 values(2,'ab'); SQL>insert into t1 values(3,'bb'); SQL>insert into t1 values(5,'cc'); SQL>insert into t1 values(4,'dd'); SQL>insert into t1 values(2,'ee'); SQL>insert into t1 values(2,'cc'); SQL> select * from t1; SQL> update t1 set id=6 where name='cc'; --此事务不要commit或者rollback。
欢迎大家来到IT世界,在知识的湖畔探索吧!
2、查看事务信息
a)查看session号:
欢迎大家来到IT世界,在知识的湖畔探索吧!SQL> select sid from v$mystat where rownum=1;
b)获取undo槽位等信息:
SQL> select xidusn,xidslot,xidsqn from V$TRANSACTION t,v$session s where s.sid=132 and s.taddr=t.addr; SQL> select sid,trunc(id1/65536) usn,mod(id1,65536) slot,id2 wrap,lmode from v$lock where type='TX' and sid='132';
其中
3、根据查询到的信息找到undo块:
a)查看undo块头位置
欢迎大家来到IT世界,在知识的湖畔探索吧!SQL> clear columns SQL> col name for a40 SQL> select * from v$rollname where usn=4;
b)dump undo块
oradebug setmypid alter system dump undo header"_SYSSMU4_1152005954$"; oradebug tracefile_name
c)查看undo块头信息
$cat /home/oracle/app/oracle/diag/rdbms/nwppdb/nwppdb/trace/nwppdb_ora_15490.trc
可以看到找到了对应的事务
state为10说明为活动事务,warp#为0xdcea同v$lock查到的信息相同,换算成10进制为56554。
后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/17460.html