在使用数据库时候,难免会遇到在想修改表结构的时候,表被锁住。那么被锁住的时候会出现什么错误呢?
在行: 2 上开始执行命令时出错 -
alter table HTL_STATIC_HOTEL modify ROOM_TOTAL_AMOUNT number(12,2)
错误报告 -
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效
00054. 00000 - "resource busy and acquire with NOWAIT specified or timeout expired"
*Cause: Interested resource is busy.
*Action: Retry if necessary or increase timeout.
此时我们需要知道被锁住的表的sid,通过以下sql可以获取到。
查询被锁的sid等信息
SELECT sid, serial#, username, osuser FROM v$session where sid
in(select session_id from v$locked_object);
获取到sid后 我们使用KILL杀死锁,如果你不了解KILL用法我可以写出来
alter system kill session 'sid, serial#';
如果报错:
ORA-00026: 丢失或无效的会话 ID
00026. 00000 - "missing or invalid session ID"
*Cause: Missing or invalid session ID string for ALTER SYSTEM KILL SESSION.
*Action: Retry with a valid session ID.
说明你使用的方法有误,请检查alter system kill ...