Oracle用户断开连接而不提交/回滚,不再可以更改数据库

时间:2011-05-09 04:15:56

标签: oracle

用户登录我正在使用的Oracle数据库注销而不提交或回滚,现在我的数据库无法更改,似乎已被锁定。

我试过

 rollback

但这不起作用。

有什么想法? 感谢。

2 个答案:

答案 0 :(得分:9)

如果没有提交或回滚,就无法注销Oracle数据库。客户端应用程序可能崩溃或被强制终止,并且没有机会注销在持有某些锁的服务器上留下会话。如果是这种情况,DBA将需要终止该会话。

如果您是DBA并且您不确定哪个会话需要被杀死,您可以运行以下查询以获取有关阻止其他会话的锁定的各种会话的信息

SELECT ses.sid, ses.serial#, ses.username, ses.program, ses.osuser, ses.machine
  FROM v$session ses,
       dba_blockers blk
 WHERE blk.holding_session = ses.sid

一旦确定要杀死哪个会话

ALTER SYSTEM KILL SESSION '<<sid>>, <<serial#>>'

答案 1 :(得分:3)

如果会话没有显式回滚,如果数据库服务器无法再访问客户端,其活动将自动回滚,然后它将终止会话。

如果客户端几个小时没有向它发出请求,服务器通常会很高兴。查看您是否将SQLNET.EXPIRE_TIME设置为服务器上的任何内容。如果它是一个非零值,那么在检查客户端连接是否已经死亡之前,它将等待多少分钟。如果它为零,它将不会检查,只会在响应客户端请求时发现客户端已死亡。

此外,回滚可能需要一些时间。如果做了很多工作,可能需要数小时。等待该会话的任何内容将继续等待,直到该回滚完成