2023年11月27日发(作者:)

PLSQL命令⾏command模式常见错误

⽇常运维过程中,经常使⽤PLSQLcommand模式运⾏SQL脚本,对于⼀些常见的错误,你知道原因在哪⾥吗?

脚本执⾏后弹出输⼊框

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

解决⽅案:

⽅案⼀:有些时候我们也需要在SQL>的符号下输⼊'&字符', 只需要改变SQL*PLUS下⼀个环境变量define即可.在脚本最前⾯添加关闭绑定变

量功能,在脚本最后重新打开绑定变量功能。

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

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

⽅案⼆:在编辑器中将 & 批量更换成 '||'&'||' 然后执⾏即可。

脚本执⾏后未正常结束,返回数字

原因:SQL脚本未正常结束

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

脚本执⾏后⼀直显⽰excuting执⾏中,⽆法结束

原因: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 为存储过程的名称。

发现 locks2

2:按对象查出sid,serial#

SELECT _NAME,

N_ID,

#,

M,

ME,

D,

E,

IT

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

WHERE _ID = _ID

AND = N_ID

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