PLSQL 命令行command模式常見錯誤


日常運維過程中,經常使用PLSQL的command模式運行SQL腳本,對於一些常見的錯誤,你知道原因在哪里嗎?

1.SQL腳本執行后彈出輸入框

 

 

原因:SQL*PLUS默認環境里會把'&字符'當成變量來處理.

解決方案:

方案一:有些時候我們也需要在SQL>的符號下輸入'&字符', 只需要改變SQL*PLUS下一個環境變量define即可.在腳本最前面添加關閉綁定變量功能,在腳本最后重新打開綁定變量功能。

set define off; #是把默認的&綁定變量的功能取消, 可以把'&字符'當成普通字符處理

set define on;#打開&綁定變量的功能, 

 

方案二:在編輯器中將     批量更換成   '||'&'||'   然后執行即可。

 

2.SQL腳本執行后未正常結束,返回數字

 

 

原因:SQL腳本未正常結束

解決方案:在對應的腳本未正常結束SQL行后添加/或者;

 

3.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 為存儲過程的名稱。

發現 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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM