oracle中如何查看事务未提交?

解决方案 »

  1.   

    select * from v$transaction
      

  2.   

    select * from v$transaction 现在查到了数据库中有没有提交的事务 但是我不确定是操作哪张表而没有提交事务
    请问我根据这个
    ADDR XIDUSN XIDSLOT XIDSQN UBAFIL UBABLK UBASQN UBAREC STATUS START_TIME
    67B92964 2 21 4216 2 2580 389 13 ACTIVE 2011-5-8 12:35START_SCNB START_SCNW START_UEXT START_UBAFIL START_UBABLK START_UBASQN START_UBAREC
    4628170 0 4 2 2580 389 13请问根据这个消息怎么确定是哪张表没有提交事务 怎么处理这个事务
      

  3.   

    22:49:59 SQL> exec print_table('select * from v$transaction');PL/SQL 过程已成功完成。22:50:01 SQL> insert into test select empno from emp;已创建14行。22:50:04 SQL> exec print_table('select * from v$transaction');
    ADDR                          : 2DBE71F0
    XIDUSN                        : 8
    XIDSLOT                       : 2
    XIDSQN                        : 1016
    UBAFIL                        : 3
    UBABLK                        : 2018
    UBASQN                        : 487
    UBAREC                        : 56
    STATUS                        : ACTIVE
    START_TIME                    : 11/05/08 22:50:03
    START_SCNB                    : 9584346
    START_SCNW                    : 0
    START_UEXT                    : 15
    START_UBAFIL                  : 3
    START_UBABLK                  : 2018
    START_UBASQN                  : 487
    START_UBAREC                  : 56
    SES_ADDR                      : 2EC6AA90
    FLAG                          : 3587
    SPACE                         : NO
    RECURSIVE                     : NO
    NOUNDO                        : NO
    PTX                           : NO
    NAME                          :
    PRV_XIDUSN                    : 0
    PRV_XIDSLT                    : 0
    PRV_XIDSQN                    : 0
    PTX_XIDUSN                    : 0
    PTX_XIDSLT                    : 0
    PTX_XIDSQN                    : 0
    DSCN-B                        : 0
    DSCN-W                        : 0
    USED_UBLK                     : 1
    USED_UREC                     : 1
    LOG_IO                        : 5
    PHY_IO                        : 0
    CR_GET                        : 11
    CR_CHANGE                     : 0
    START_DATE                    : 05-11月-2008 22:50:03
    DSCN_BASE                     : 0
    DSCN_WRAP                     : 0
    START_SCN                     : 9584346
    DEPENDENT_SCN                 : 0
    XID                           : 08000200F8030000
    PRV_XID                       : 0000000000000000
    PTX_XID                       : 0000000000000000
    -----------------PL/SQL 过程已成功完成。22:50:06 SQL> select SQL_TEXT from v$sql,v$tranction where LAST_ACTIVE_TIME=START_DATE;
    select SQL_TEXT from v$sql,v$tranction where LAST_ACTIVE_TIME=START_DATE
                               *
    第 1 行出现错误:
    ORA-00942: 表或视图不存在
    22:51:29 SQL> select SQL_TEXT from v$sql,v$tranctions where LAST_ACTIVE_TIME=START_DATE;
    select SQL_TEXT from v$sql,v$tranctions where LAST_ACTIVE_TIME=START_DATE
                               *
    第 1 行出现错误:
    ORA-00942: 表或视图不存在
    22:51:34 SQL> select SQL_TEXT from v$sql,v$transaction where LAST_ACTIVE_TIME=START_DATE;SQL_TEXT
    ---------------------------------------------------------------------------------------------insert into test select empno from emp22:51:52 SQL>
      

  4.   


    select SQL_TEXT from v$sql,v$transaction where LAST_ACTIVE_TIME=START_DATE;
    用这个就可以,但是要是同时有很多操作的话可能就比较麻烦了,网上查了下说是用session id可以找到执行的sql可是我看了半天也没找到,所以只能用 这个笨办法了