select * from v$transaction
这样查询出一条未提交的事务,如何把这个事务提交了?

解决方案 »

  1.   

    显式提交、隐式提交及自动提交。下面分别说明这三种类型。
    1、显式提交:用COMMIT命令直接完成的提交为显式提交。其格式为:SQL>COMMIT;
    2、隐式提交: 用SQL命令间接完成的提交为隐式提交。这些命令是:ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。
    3、自动提交:若把AUTOCOMMIT设置为ON,则在插入、修改、删除语句执行后,系统将自动进行提交,这就是自动提交。其格式为:SQL>SET AUTOCOMMIT ON你这种情况,只有杀掉事务,重新再事务里进行commit提交了
      

  2.   

    如果有未提交的事务,v$transaction中是有记录,只是还是不能解决根本问题试试这个:select 'blocker('||wb.holding_session||':'||sb.username||')-sql:'||qb.sql_text blockers,sb.machine,sb.terminal,
           'waiter ('||wb.waiting_session||':'||sw.username||')-sql:'||qw.sql_text waiters ,sw.machine,sb.terminal,
          wb.LOCK_TYPE, wb.mode_held,wb.mode_requested,wb.lock_id1, wb.lock_id2
    from  dba_waiters wb,
          v$session   sb,
          v$session   sw,
          v$sqlarea   qb,
          v$sqlarea   qw
    where wb.holding_session=sb.sid
    and   wb.waiting_session=sw.sid
    and   sb.prev_sql_addr=qb.address
    and   sw.sql_address=qw.address
    and   wb.mode_held<>'None';
      

  3.   

    这事务杀不掉。
    这问题解决了,过了N久,ORCLE自动把这事务给干掉了。。