ORA-00054资源正忙解决方法

本文详细介绍了在Oracle数据库中遇到ORA-00054资源正忙错误时的解决步骤,包括在创建主键过程中如何避免此错误,以及如何通过杀死会话来解锁被锁定的对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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'; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值