oracle删除表的时候报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle删除表的时候报错相关的知识,希望对你有一定的参考价值。

ORA-00054:resource busy and acquire with NOWAIT specified

参考技术A 这个表可能被别的事务使用到,不允许你删除。你要等使用完,或者找到哪个进程使用干掉它,就可以删除了。追问

但是可以查询,就是不能插入,我如果要删除这个表,怎么才能找到是什么事务正在使用它啊

参考技术B 应该还有对表进行操作,比如update、delete等操作,没有提交或者rollback呢。追问

是的,之前插入一条数据没有提交,然后网络出了问题,plsql卡死。我就强关了。现在应该怎么做呢

追答

    可以查询出哪个session,然后kill掉。

    再不济,可以把数据库重启一下。

参考技术C 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效
=========================================================
解决方法如下:
=========================================================
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删除表的时候报错的主要内容,如果未能解决你的问题,请参考以下文章

oracle cascade用法

oracle 误删除表的几种恢复方法

Oracle中,多表关联删除该怎么写?

oracle如何删除没有表的用户

oracle删除表的方式

oracle 怎么修改主键类型