在oracle資料庫中重新修改編譯了某個儲存過程a呼叫的另乙個過程b後,需要手動將a重新編譯,一定不要在重新編譯a前去呼叫a,否則會造成a編譯掛死的情況。特別是在訪問量大的情況下。
這種情況下如果強行終止儲存過程編譯,再次recompile儲存過程會發現還是掛死的,這個主要是由於強行終止後會話為inactive狀態,但是該會話卻沒有被真正的釋放。使用如下語句查詢出掛起的會話:
select v.osuser, v.process, v.program, v.machine, v.terminal, v.module, v.username, v.status, v.sid, v.serial#, 'alter system kill session '''||v.sid||','|| v.serial#||''';' as kill_session, v.paddr
from v$session v
where v.username like '%username%'
and v.program like 'plsqldev%'
and v.osuser like '%%'
and v.status='inactive';
將結果中kill_session一列複製,在sqlplus下執行,殺掉這些未釋放的會話,再重新登入到plsql下recompile剛才的儲存過程a就ok了。
Oracle 儲存過程 編譯時卡死不動
這個該死的問題困擾了好久,多方分析之後,才知道,儲存過程編譯沒完成,或者編譯失敗時,oracle 資料庫會自動把相應的儲存過程鎖起來,最無賴的做法 是重啟資料庫,此問題就解決 每天重啟兩次資料庫想死的心都有了,經過今天的查詢 終於找的好的解決方法 一 找到之前除錯的儲存過程 名稱,使用一下語句找到 ...
Oracle儲存過程編譯卡死的解決方法
oracle儲存過程編譯卡死的解決方法 解決方法如下 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 為儲存過...
oracle 儲存過程編輯 卡死
一 可用sys登入,二 查鎖session id 查詢儲存過程operationdata imp被哪些session鎖住而無法編譯 select from dba ddl locks where name upper operationdata imp 三 查出sid serial 解決辦法如下 如...