查看数据库正在运行的事物

V$TRANSACTION lists the active transactions in the system. When the transaction is complete, (either COMMIT or ROLLBACK), the entry should go away.

V S E S S I O N t a d d r , p a d d r 分 别 对 应 v SESSION taddr ,paddr 分别对应 v SESSIONtaddr,paddrvtransaction addr,V P R O C E S S a d d r v PROCESS addr v PROCESSaddrvtransaction的used_ublk可以查看进度
used_ublk 在做回滚时有多少块在使用
used_now 现在有多少块在使用
used_later 在60秒后有多少块使用

示例一:
session A:
创建测试表,并更新
SQL> create table scott.test as select * from dba_objects;
SQL> update test set OBJECT_ID=OBJECT_ID+1;
已更新50343行。
session B:
查询v t r a n s a c t i o n S Q L > s e l e c t S T A R T T I M E , S T A R T S C N B , U S E D U B L K , U S E D U R E C , L O G I O , P H Y I O f r o m v transaction SQL> select START_TIME,START_SCNB,USED_UBLK,USED_UREC,LOG_IO,PHY_IO from v transactionSQL>selectSTARTTIME,STARTSCNB,USEDUBLK,USEDUREC,LOGIO,PHYIOfromvtransaction;
START_TIME START_SCNB USED_UBLK USED_UREC LOG_IO PHY_IO


05/05/08 15:13:53 708551 698 54422 185843 0
session A:
再更新一些记录
SQL> update test set wner=‘AAA’;
已更新50343行。
session B:
再查询v$transaction
SQL> /
START_TIME START_SCNB USED_UBLK USED_UREC LOG_IO PHY_IO


05/05/08 15:13:53 708551 1269 96902 353324 1

列出这几列的含义,自己可以对比一下:
start_time --> start_time ?
start_scnb --> 开始的scn
used_ublk --> 占用的undo block
used_urec --> undo 记录的行数
log_io --> 逻辑io 注意并非Consistent gets,有专门一列:CR_GET
phy_io --> 物理io

如果想要得到session那就可以再加上查询SES_ADDR列:
SES_ADDR User session object address -->对应v s e s s i o n 的 s a d d r 列 , 再 进 一 步 自 然 可 以 找 到 正 在 执 行 的 s q l . 如 果 想 要 对 应 回 滚 段 则 : X I D U S N U n d o s e g m e n t n u m b e r − − > 使 用 的 回 滚 段 i d , 可 以 和 v session 的saddr列,再进一步自然可以找到正在执行的sql. 如果想要对应回滚段则: XIDUSN Undo segment number -->使用的回滚段id,可以和v sessionsaddrsql.XIDUSNUndosegmentnumber>使id,vrollstat对应
想更深入了解一个transaction,有了sql就能更深入了。

示例二:
用如下SQL查询到正在运行的事务,如其used_urec字段不断增加,说明该事物正在继续,如果该字段不断下降,说明该事物正在回滚。

SQL> SELECT a.sid, a.username, b.xidusn, b.used_urec, b.used_ublk
v s e s s i o n a , v session a, v sessiona,vtransaction b
WHERE a.saddr = b.ses_addr;
SID USERNAME XIDUSN USED_UREC USED_UBLKITPUB


   118 CCP                                   102         12          1

SQL> SELECT a.sid, a.username, b.xidusn, b.used_urec, b.used_ublk
FROM v s e s s i o n a , v session a, v sessiona,vtransaction b
WHERE a.saddr = b.ses_addr;
SID USERNAME XIDUSN USED_UREC USED_UBLK


   596 GCC                                    87          2          1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值