0
点赞
收藏
分享

微信扫一扫

orcale的锁表,以及处理


oracle表在什么情况下会被锁住
在对指定表做append操作,其他再做truncate时候,会产生锁表,如下验证步骤,

1、创建测试表,

create table test_lock(id number, value varchar2(200));

2、执行append语句;并且不做提交,insert /*+append*/ into test_lock values(1,1);

3、再次执行清表语句,truncate table test_lock;报锁表错误,

4、查看锁表语句,发现被锁表,

select b.object_name, t.*

from v$locked_object t, user_objects b

where t.object_id = b.object_id

ORA-00054: 资源正忙,要求指定 NOWAIT

解决方案:

1.查看有没有对象被锁

select * from v$locked_object;

2.得到被锁对象的session_id

select session_id from v$locked_object;

3.通过上⾯得到的session_id去取得v$session的sid和serial#(sid是第2步得到的session_id)

SELECT sid, serial#, username, osuser FROM v$session where sid = '259';

4.杀死该进程(ALTER SYSTEM KILL SESSION 'sid,serial')

ALTER SYSTEM KILL SESSION '259,3057';
————————————————



orcale的锁表,以及处理_Powered by 金山文档



orcale的锁表,以及处理_数据库_02



orcale的锁表,以及处理_Powered by 金山文档_03



orcale的锁表,以及处理_sql_04


举报

相关推荐

0 条评论