plsql job执行多个存储过程_PLSQL 命令行模式常见错误

日常运维过程中,经常使用PLSQL的command模式运行SQL脚本,对于一些常见的错误,你知道原因在哪里吗?

1.SQL脚本执行后弹出输入框

b1ab4b1b2f7ede9edc779210914c41a5.png

原因:SQL*PLUS默认环境里会把'&字符'当成变量来处理.

解决方案:

方案一:有些时候我们也需要在SQL>的符号下输入'&字符', 只需要改变SQL*PLUS下一个环境变量define即可.在脚本最前面添加关闭绑定变量功能,在脚本最后重新打开绑定变量功能。

set define off; #是把默认的&绑定变量的功能取消, 可以把'&字符'当成普通字符处理

set define on;#打开&绑定变量的功能,

方案二:在编辑器中将 & 批量更换成 '||'&'||' 然后执行即可。

2.SQL脚本执行后未正常结束,返回数字

d1a4d8e22ce8caefe6cff4cbe24d6a7b.png

原因:SQL脚本未正常结束

解决方案:在对应的脚本未正常结束SQL行后添加/或者;

3.SQL脚本执行后一直显示excuting执行中,无法结束

cf67cb878aed10b406e25f63ce021d54.png

原因:SQL脚本中引用的表被锁定,相关事务锁未释放

解决方案:

1:查V$DB_OBJECT_CACHE

SELECT * FROM V$DB_OBJECT_CACHE WHERE name='CUX_OE_ORDER_RPT_PKG' AND LOCKS!='0';

注意:CUX_OE_ORDER_RPT_PKG 为存储过程的名称。

发现 locks=2

2:按对象查出sid,serial#

SELECT A.OBJECT_NAME,

B.SESSION_ID,

C.SERIAL#,

C.PROGRAM,

C.USERNAME,

C.COMMAND,

C.MACHINE,

C.LOCKWAIT

FROM ALL_OBJECTS A, v$locked_object B, v$session C

WHERE A.OBJECT_ID = B.OBJECT_ID

AND C.SID = B.SESSION_ID

3:alter system kill session 'sid值,serial#值' immediate;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值