Oracle資料庫編譯預存程序假死問題

來源:互聯網
上載者:User

Oracle資料庫教程編譯預存程序假死問題


這種情況下如果強行終止預存程序編譯,再次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了


處理方法一 :
            1.SELECT saddr,sid,serial#,paddr,username,status FROM v$session
            WHERE username IS NOT NULL
            example:saddr,sid,serial#,paddr,username,status FROM v$session WHERE
            username = 'XNJW0419' ;
            SADDR SID SERIAL# PADDR USERNAME STATUS
            -------- ---------- ---------- --------
            ------------------------------ --------
            542E0E6C 11 314 542B70E8 EYGLE INACTIVE 542E5044 18 662 542B6D38 SYS
            ACTIVE
            2.ALTER SYSTEM KILL SESSION 'sid, serial#';
            example:ALTER SYSTEM KILL SESSION '11,314';(註:在sqlplus中執行 )
            結果: 提示標記要刪去的會話 無法釋放會話,未成功解鎖
            ====================================================================================================
            處理方法二 :
            a、 找到你要殺掉的那個SESSION, 並記下paddr
            SELECT sid, username, paddr, status FROM v$session WHERE username =
            '使用者名稱' ;
            example:SELECT sid, username, paddr, status FROM v$session WHERE
            username = 'XNJW0419' ;
            SID USERNAMEPADDRSTATUS
            ---------- ------------------------------ -------- --------
            10 XNJW04192B5E2E2C KILLED
            b、 找到這個SESSION所對應的spid
            SELECT * FROM v$process WHERE addr = '上面查尋的paddr';
            example:SELECT ADDR,PID,SPID,USERNAME,SERIAL#,TERMINAL FROM
            v$process WHERE addr = '2B5E2E2C';
            ADDRPID SPIDUSERNAMESERIAL# TERMINAL
            -------- ---------- ------------ --------------- ----------
            ----------------
            2B5E2E2C44 1204SYSTEM-99 JWC
            c、 殺掉spid所標識的那個進程
            D:>orakill sid  spid (註:cmd命令視窗中執行 只有oracle伺服器端才有orakill命令)
            example: D:>orakill oemrep 1204
            提示:KILL OF THREAD id 1204 IN INSTANCE oemrep successfully signalled.
            結果:成功刪除該SESSION,表也解鎖

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.