oracle rac热点数据块_如何在Oracle数据库通过undo块查看事务信息?

概述

今天主要分享一个最近做的实验,主要是为了通过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。
89e157d26950983428f861fea0c20b10.png

2、查看事务信息

a)查看session号:

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';
e1a095f7326c26638e435fb060351dd1.png

其中

e7ccfc13a3e643881c39cce7f255ad0f.png

3、根据查询到的信息找到undo块:

a)查看undo块头位置

SQL> clear columnsSQL> col name for a40SQL> select * from v$rollname where usn=4; 
3b8ff622fb4bbf36b4b9b36600d74158.png

b)dump undo块

oradebug setmypidalter system dump undo header"_SYSSMU4_1152005954$";oradebug tracefile_name
7dabe0b7fa196418c7163d8d48ac3d2e.png

c)查看undo块头信息

$cat /home/oracle/app/oracle/diag/rdbms/nwppdb/nwppdb/trace/nwppdb_ora_15490.trc
fac630e975045b4a8d5fe0795cdc0fe9.png
75ed09303dbf5ab0a80d294e9b9f82ca.png
0e21d9e934f74305fc22cdcdc9cebfb5.png

可以看到找到了对应的事务

state为10说明为活动事务,warp#为0xdcea同v$lock查到的信息相同,换算成10进制为56554。

8a6f577b22c4d8e772e68a5875a4523d.png
f7f7ec1db3ff07444af493f1d3e855f8.png

后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~

9010ddc9e30f4cb5dd6a56ea17243697.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值