oracle删除表的时候报错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle删除表的时候报错相关的知识,希望对你有一定的参考价值。
ORA-00054:resource busy and acquire with NOWAIT specified
参考技术A 这个表可能被别的事务使用到,不允许你删除。你要等使用完,或者找到哪个进程使用干掉它,就可以删除了。追问但是可以查询,就是不能插入,我如果要删除这个表,怎么才能找到是什么事务正在使用它啊
参考技术B 应该还有对表进行操作,比如update、delete等操作,没有提交或者rollback呢。追问是的,之前插入一条数据没有提交,然后网络出了问题,plsql卡死。我就强关了。现在应该怎么做呢
追答可以查询出哪个session,然后kill掉。
再不济,可以把数据库重启一下。
=========================================================
解决方法如下:
=========================================================
SQL> select session_id from v$locked_object;
SESSION_ID
----------
142
SQL> SELECT sid, serial#, username, osuser FROM v$session where sid = 142;
SID SERIAL# USERNAME OSUSER
---------- ---------- ------------------------------ ------------------------------
142 38 SCOTT LILWEN
SQL> ALTER SYSTEM KILL SESSION '142,38';
System altered
SQL> conn scott/tiger@vm_database
Connected to Oracle Database 11g Enterprise Edition Release 11.1.0.6.0
Connected as scott
SQL> drop table student2;
Table dropped追问
大神为什么会报这个错啊
追答表被锁住了,解决方法:
select session_id from v$locked_object; --首先得到被锁对象的session_id
SELECT sid, serial#, username, osuser FROM v$session where sid = session_id; --通过上面得到的session_id去取得v$session的sid和serial#,然后对该进程进行终止。
ALTER SYSTEM KILL SESSION 'sid,serial';
例如:
ALTER SYSTEM KILL SESSION '13, 8';
Oracle中,多表关联删除该怎么写?
我建了两个表,p表和c表,现在想要在删除p表的一条数据的同时可以删掉c表中的一条数据,即p.p_id=c.p_id,请问应该怎样写?
参考技术A 只能一条一条的删除。。先删除子表。然后删除主表。一种是写两条sql语句。另外一种是写触发器。追问
请问具体该怎么写?触发器不怎么会用。。
追答你如果写在程序里面。你可以删除第一张表。
然后取出第一张的p_id。然后根据这个p_id 去删除第二张表!
具体怎么写。我就不给出来了。
触发器。就是这个功能。。更改表数据的时候。更改另外一张表。
你去查查资料。。应该不难。
。。好吧 谢谢了
追答怎么不采纳呢。哈哈!
以上是关于oracle删除表的时候报错的主要内容,如果未能解决你的问题,请参考以下文章