dkfr.net
当前位置:首页 >> ORACLE 存储过程被锁,编译不了,怎么解锁? >>

ORACLE 存储过程被锁,编译不了,怎么解锁?

一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。现在提供一种方法解决这种问题,那就是在ORACLE中杀不掉的,在OS一级再杀。 1.下面的语句用来查询哪些对象被锁: select obje...

1.查看是哪一个存储过程被锁住 查V$DB_OBJECT_CACHE视图 select * from V$DB_OBJECT_CACHE where owner='过程的所属用户' AND LOCKS!='0' 2.查看是哪一个sid,通过sid可以知道是哪一个session 查v$access视图 select * from v$access where owne...

不是因为锁住了,是因为你编译的时候,正好有人在调用你的那个存储过程,

你怎么查的锁?v$locked_object?dba_ddl_locks查了没,可能是ddl的锁,如果不能编译,一编译就死,也可能是ddl的锁导致的,以前碰到过。如果能找到锁,那就简单了。 不过还碰到过一种特别扯淡的情况,关掉自己的连接,然后换一台电脑从新来过,...

你是要找到被锁住的存储过程,还是要看存储过程是那部分执行慢,导致过程被锁住时间长。 如果是前者,那么oracle有个视图 v$locked_object和DBA_DML_LOCKS,这个能看出被锁的object都有哪些是哪个session锁的。 然后可以通过这个session_id找到...

使用select for update 或者直接lock table。 lock table有六选项,根据你的要求来做。

:在SQL_PLUS中:spool ExecCompProc.sql select 'alter procedure ' ||object_name||' compile;' From all_objects where status = 'INVALID' and object_type = 'PROCEDURE'; spool off @ExecCompProc.Sql;整理成一个存储过程:Create Or Repl...

无效状态有两种可能,一种是你的存储过程编辑没有成功,创建了,但里面有语法错误。 还有一种是存储过程使用的表有结构上的改变,需要重新编译一下。 你重新编译一下,如果不成功,就是有语法问题,你需要修改存储过程。

个人观点: 1 last_ddl_time就是指最后一次编译的时间。 你认为的create or replace 其实就是一种编译 2 A调用B引发的B的重新编译。 我认为A调用B是不会引起B的编译的。从2个方面解释: 1) 我个人工作经验中没有发现A调用B会让B重新编译。 案例...

网站首页 | 网站地图
All rights reserved Powered by www.dkfr.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com