ORA-00054资源正忙解决方法
导入主键和唯一键过程中出现ORA-00054的错误,处理方法如下:
1、前提
解决步骤在当前用户下操作时,最低需要授予当前用户select_catalog_role
,alter system
这两个权限。
2、创建主键发生ORA-00054错误例子
--新建表
create table aa(
id number,
name varchar2(40),
address varchar2(50)
)
--插入数据
insert into aa (id,name,address) values(1,'张三','中国北京');
-- 执行update操作没有commit事物
select * from aa;
update aa set name = '王五' where id =1;
--在另外一个会话中创建主键
alter table aa add constraint pk_id primary key(id);
此时会发生ORA-00054错误:
3、解决步骤
要么将事务结束,要么杀掉持有锁的会话,下面给出杀掉会话的步骤:
- 找出持有锁的会话sessionid
select l.session_id,o.object_name
from v$locked_object l,user_objects o
where l.object_id=o.object_id
- 查看被锁定的对象名(数据库表或其他对象)及相关的sid、serial#及spid
select object_name as 对象名称,s.sid||','||s.serial#,p.spid as 系统进程号
from v$locked_object l , user_objects o , v$session s , v$process p
where l.object_id=o.object_id and l.session_id=s.sid and s.paddr=p.addr;
- 在数据库中灭掉相关session
--alter system kill session 'sid,serial#';
alter system kill session '396,36';