首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

提交未提交的事务有关问题

2013-03-06 
提交未提交的事务问题select * from v$transaction这样查询出一条未提交的事务,如何把这个事务提交了?[解

提交未提交的事务问题
select * from v$transaction
这样查询出一条未提交的事务,如何把这个事务提交了?
[解决办法]
显式提交、隐式提交及自动提交。下面分别说明这三种类型。
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提交了
[解决办法]

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

如果有未提交的事务,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';

热点排行