Ⅰ oracle 存储过程无法编译,删除,一旦执行该操作PLsql就会出现未响应
存在无效对象,用plsql菜单中的工具先“编译无效对象”
Ⅱ pls-00103存储过程编译失败
1. CURSOR curXXXX IS select .... from ... 而不用 for 2. item = @item ,@item是sqlserver的变量定义方法吧? 这儿能不能好? 我不确定 3. company = company code = code 到底哪个是字段名、那个是变量名,建议不要用和字段名相同的变量名。
Ⅲ ORACLE 存储过程被锁,编译不了,怎么解锁
可用SYS登录,然后查询如下语句:
查找存储过程OPERATIONDATA_IMP被哪些session锁住而无法编译
select * FROM dba_ddl_locks where name =upper('OPERATIONDATA_IMP');
从而得到session_id,然后通过
select t.sid,t.serial# from v$session t
where t.sid=&session_id;
得到sid和serial#
最后用alter system kill session 'sid,serial#'; kill 相关session即可。
Ⅳ 数据库存储过程编译出错
可用第三方工具检查错误。余祥桐
如以下存储过程:
Ⅳ ORACLE 存储过程无法编译,编译就卡死
你怎么查的锁?v$locked_object?dba_ddl_locks查了没,可能是ddl的锁,如果不能编译,一编译就死,也可能是ddl的锁导致的,以前碰到过。如果能找到锁,那就简单了。
不过还碰到过一种特别扯淡的情况,关掉自己的连接,然后换一台电脑从新来过,就OK了,这种情况也碰到过。
Ⅵ ORACLE 存储过程被锁,编译不了,怎么解锁
一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。现在提供一种方法解决这种问题,那就是在ORACLE中杀不掉的,在OS一级再杀。
1.下面的语句用来查询哪些对象被锁:
select object_name,machine,s.sid,s.serial#
from v$locked_object l,dba_objects o ,v$session s
where l.object_id=o.object_id and l.session_id=s.sid;
2.下面的语句用来杀死一个进程:
alter system kill session '24,111'; (其中24,111分别是上面查询出的sid,serial#)
【注】以上两步,可以通过Oracle的管理控制台来执行。
3.如果利用上面的命令杀死一个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号:
select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid=24 (24是上面的sid)
4.在OS上杀死这个进程(线程):
1)在unix上,用root身份执行命令:
#kill -9 12345(即第3步查询出的spid)
2)在windows(unix也适用)用orakill杀死线程,orakill是oracle提供的一个可执行命令,语法为:
orakill sid thread
其中:
sid:表示要杀死的进程属于的实例名
thread:是要杀掉的线程号,即第3步查询出的spid。
例:c:>orakill orcl 12345