存储过程编译卡死
⑴ pl/sql编译脚本时卡死是为什么,好像是什么session的问题
两个session同时编译了一个脚本。
第二个编译的会被锁死。
比如两个用户同时在改一个存储过程。就会出现这样的问题
pl/sql用可以看到当前session的状态,可以看到死锁的进程。菜单里面找下看看
祝进步!
望采纳!
⑵ 如何强行中止存储过程的执行
找你的DBA把你这个session给KILL掉
⑶ pl/sql 中建个一个存储过程,编译不过去,问题在哪
create table abc,这个表abc,什么都没有指定,至少要指定ABC表的一个字段,还有字段的类型。
另外,这个存储过程只能执行一次,因为执行一次之后,abc表被创建了,再执行的时候,就会创建重复的名字了。所以在执行之前,你最好先判断库中有没有abc表,如果有,先执行drop table abc。再创建。
⑷ plsql编译存储过程卡死
1、查看一下Oracle数据库中的正在运行的进程是否正在运行该程序,如果有的话把进程停止
2、全部关闭重开或者换一个PLSQL试一下,看看是不是PLSQL本身导致的问题
3、如果都不好用先尝试重启一下PLSQL所在的服务器(如果可以重启的话)
先试试上述方法
⑸ SQL存储过程比SQL语句慢,甚至卡死
楼主,你好!这个排版屌爆了%>_<%
USE[HERP_BHYY]
GO
/******对象:StoredProcere[dbo].[sp_]脚本日期:12/03/201308:36:35******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
ALTERPROCEDURE[dbo].[sp_]
@ImpDateasDATETIMEASBEGIN
--SETNOCOUNTON;
DECLARE@ST_DATEASDATETIME
DECLARE@ED_DATEASDATETIME
DECLARE@TEMP_DATEDATETIME
IF@ImpDateisnotnull
begin
SET@ST_DATE=LEFT(@ImpDate,10)
SET@ED_DATE=dateadd(day,1,@ST_DATE)
end
deletehisdb2.dbo.his_charge_acc_o
wherecharge_date>=@ST_DATEandcharge_date<@ed_date
insert=""into=""hisdb2.dbo.his_charge_acc_o=""
select=""invoice_type=""from=""
where=""charge_date="">=@ST_DATEandcharge_date<@ED_DATE
end
这样不是挺好么?
上面的SQL语句貌似漏了什么东西,你自己看看
⑹ PLSQL修改了存储过程如何编译保存
如果是在plsql developer中修改的,可以直接点那个齿轮图标,或者F8即可编译。
如果是在sqlplus中,那就敲入修改后的过程代码(create or replace procere...),最后以/结尾运行即可。
⑺ 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
⑼ oracle 存储过程无法编译,删除,一旦执行该操作PLSQL就会出现未响应
存在无效对象,用plsql菜单中的工具先“编译无效对象”
⑽ oracle存储过程为什么一编译就挂死,是锁住了吗是不是跟表一样有锁的机制怎么解锁呢
不是因为锁住了,是因为你编译的时候,正好有人在调用你的那个存储过程,