今天操作oracle数据库时,更新一张表中的一个字段值,一直没有更新成功,后来发现,表被别的用户锁定,后来采用下面的方法解决了这个问题!
update ems_csg set device_id = 'CSG000000000000001' where name = 'Viss_CSG'上面的sql语句执行后,表中数据没有变化,判断是数据表被锁定,解决办法如下:
1、select * from v$locked_object; 查出被锁定的对象,其中object_id是对象的ID,session_id是被锁定对象的session ID;v$locked_object试图需要system用户才能访问
2、select object_name, object_type from dba_objects where object_id = 刚才查出来的object_id; 这样来查被锁定这个对象的名字,如果能确定是哪个TABLE被锁并且要解锁,则再执行下面一步
3、select sid, serial#, machine, program from v$session where sid =第1步中查出来的session_id;
4、alter system kill session 'sid,serial#';用来杀死这个会话;以上几个步骤即能解决对象被锁定问题。
alter system kill session '24,2499';
alter system kill session '46,4386';
总结:
为避免死锁,在执行添加、删除、修改操作后,要养成commit的习惯!
oracle 数据表被锁定解决办法
最新推荐文章于 2022-12-08 16:19:37 发布