Oracle-RDS for Oracle出现ORA-00054 对应方法

RDS for Oracle,在使用Truncate来删表中数据的时候,出现了如下的错误:

ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired。

 

主要原因是因为有事务正在执行(或者事务已经被锁),所有导致执行不成功。

 

如果是普通的Oracle数据库的话,先查看是那个session,然哈把它kill掉就可以了。

1,查看session

SELECT
    X.SID
  , X.SERIAL#
  , TO_CHAR(
        X.SQL_EXEC_START
      , 'YYYY/MM/DD HH24:MI:SS'
    ) AS SQL_EXEC_START
  , Y.SQL_TEXT
FROM
    V$SESSION X
        INNER JOIN V$SQL Y
           ON Y.HASH_VALUE = X.SQL_HASH_VALUE
          AND Y.ADDRESS    = X.SQL_ADDRESS
WHERE
    X.STATUS = 'ACTIVE'
AND X.SID IN (
        SELECT
            Z.SID
        FROM
            V$LOCK Z
        WHERE
            Z.TYPE IN ('TM','TX')
    )
;

 

2,删除该Session

alter system kill session '352,50411';

 

但是如果是RDS的话,是用不了这个alter system的,因为RDS是架构在AWS虚拟机上,而它不允许咱们碰那个虚机,

这时候需要用它提供的存储过程来删。

exec rdsadmin.rdsadmin_util.kill(352, 50411);

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值