今天在删除Oracle数据时,由于没有commit,出现了锁表现象。因此猜想当我们在对数据库的数据进行改动时,如果没有commit,那么Oracle就会自动锁表。锁表之后的现象为:不能对数据库中的数据进行和更改和删除。
解决方案(PLsql环境下):
1、以SYSDBA登陆数据库;
2、输入如下sql:
elect /*+ rule */ lpad(' ',decode(l.xidusn ,0,3,0))||l.oracle_username user_name,
o.owner,
o.object_name,
o.object_type,
s.sid,
s.serial#
from v$locked_object l,dba_objects o,v$session s
where l.object_id=o.object_id
and l.session_id=s.sid
order by o.object_id,xidusn desc;
3、根据查询出的Sessionid和Serialid执行如下sql:
alter system kill session '968,10069'; --968,10069:Sessionid/Serialid
commit;
最后希望这点小发现希望能帮助到你,再有就是一定记住要commit!commit!commit!重要的话说三遍!!
本文分享了在Oracle数据库中未及时commit导致的锁表现象及解决步骤。通过SYSDBA权限查询锁定对象,并使用特定SQL语句杀死锁定会话,最后强调了commit的重要性。
1549





