执行报错 ORA-00054:资源正忙,但指定以 NOWAIT 方式获取资源,或者超时失效,如02.png所示:
分析:出现这种情况一般都是有锁记录,导致你无法操作表记录,所以需要查询出来当前锁这张表的进程,然后kill释放掉就ok了。
查询锁表进程的sql语句:
SELECT/*+ rule */ s.username, decode(l.type, 'TM', 'TABLE LOCK', 'TX', 'ROW LOCK', NULL) LOCK_LEVEL, o.owner, o.object_name, o.object_type, s.sid, s.serial# FROM gv$session s, gv$lock l, dba_objects o WHERE l.sid = s.sid AND l.id1 = o.object_id(+) AND s.username isNOTNULL AND O.OWNER='POWERDESK' ; |
查询得出有2个TABLE LOCK记录,如下:
执行kill释放掉就ok了:
SQL>altersystemkillsession '954,33493';
System altered
SQL>
|
然后再执行truncate table zz_bis_store_20160101;就可以正常执行了。