Oracle删表报错ora00054,oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT

本文讲述了在PL/SQL导入过程中遭遇网络中断,如何处理Oracle TM锁(表级锁)冲突,导致ORA-00054错误。通过分析DML锁机制,解锁策略和系统操作,展示了如何识别问题并使用ALTER SYSTEM KILL SESSION命令快速解决,确保表结构修改的顺利进行。
摘要由CSDN通过智能技术生成

今天在利用plsql导入文本信息的时候,由于导入过程中网络原因中断导入,而且发现表的字段长度有点小,想扩大,所以讲xm

varchar2(20) 改成varchar2(200)结果报:ORA-00054: 资源正忙,要求指定

NOWAIT.

解决方法:

SQL> select

session_id from v$locked_object;

SESSION_ID----------142

SELECT sid, serial#, username, osuser FROM v$session where

sid=142;

SID SERIAL#

USERNAME OSUSER

---------- ---------- ------------------------------ ------

142  38

SQL> ALTER

SYSTEM KILL SESSION '142,38';

System altered

重新登录就可以对表进行更改操作。大致原因如下:

​Oracle数据库的锁类型

​根据保护的对象不同,Oracle数据库锁可以分为以下几大类:DML锁(data

locks,数据锁),用于保护数据的完整性;DDL锁(dictionary

locks,字典锁),用于保护数据库对象的结构,如表、索引等的结构定义;内部锁和闩(internal locks and

latches),保护数据库的内部结构。DML锁的目的在于保证并发情况下的数据完整性,。在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。当Oracle

执行DML语句时,系统自动在所要操作的表上申请TM类型的锁。当TM锁获得后,系统再自动申请TX类型的锁,并将实际锁定的数据行的锁标志位进行置位。这样在事务加锁前检查TX锁相容性时就不用再逐行检查锁标志,而只需检查TM锁模式的相容性即可,大大提高了系统的效率。TM锁包括了SS、SX、S、X

等多种模式,在数据库中用0-6来表示。不同的SQL操作产生不同类型的TM锁。在数据行上只有X锁(排他锁)。在

Oracle数据库中,当一个事务首次发起一个DML语句时就获得一个TX锁,该锁保持到事务被提交或回滚。当两个或多个会话在表的同一条记录上执行

DML语句时,第一个会话在该条记录上加锁,其他的会话处于等待状态。当第一个会话提交后,TX锁被释放,其他会话才可以加锁。当Oracle数据库发生TX锁等待时,如果不及时处理常常会引起Oracle数据库挂起,或导致死锁的发生,产生ORA-60的错误。这些现象都会对实际应用产生极大的危害,如长时间未响应,大量事务失败等。​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值