oracle ora-00054:resource busy and acquire with nowait speci
当某个数据库用户在数据库中插入、更新、删除一个表的数据,或者增加一个表的主键时或者表的索引时,常常会出现ora-00054:resource busy and acquire with nowait specified这样的错误。 主要是因为有事务正在执行(或者事务已经被锁),所有导致执行不成功。 1、用dba权限的用户查看数据库都有哪些锁如:testuser 339 13545 2009-3-5 17:40:05 2、根据sid查看具体的sql语句,如果sql不重要,可以kill查出来的sql,如: begin :id := sys.dbms_transaction.local_transaction_id; end; 3、kill该事务alter system kill session '339,13545'; 4、这样就可以执行其他的事务sql语句了如增加表的主键: add constraint PK_test primary key (test_NO); 若提示:ORA-00030: User session ID does not exist 后果不详 ORA-00031: session marked for kill 一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。现在提供一种方法解决这种问题,那就是在ORACLE中杀不掉的,在OS一级再杀。 1.下面的语句用来查询哪些对象被锁:2.下面的语句用来杀死一个进程:
【注】以上两步,可以通过Oracle的管理控制台来执行。 3.如果利用上面的命令杀死一个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号:4.在OS上杀死这个进程(线程):1)在unix上,用root身份执行命令: ORA-00031: session marked for kill Cause: The session specified in an ALTER SYSTEM KILL SESSION command cannot be killed immediately (because it is rolling back or blocked on a network operation),but it has been marked for kill. This means it will be killed as soon as possible after its current uninterruptible operation is done. kill -9 12345 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |