ORA 00031 標記要終止的會話

2021-10-03 08:25:43 字數 1527 閱讀 5459

ora-00031:標記要終止的會話

現象描述:oracle客戶端plsql更新大資料量表,由於速度很慢,中途進行中斷處理操作,甚至在任務管理器中殺掉了plsql程序。之後重啟plsql客戶端,對該大資料量表進行操作(查詢,更新,刪除)均出現等待現象。查詢鎖表sql,發現該錶依舊是鎖定狀態,同時殺鎖:alter system kill session』sid,serial#』,報錯:標記要終止的會話。

問題原因:一些oracle中的程序被殺掉後,狀態被置為"killed",但是鎖定的資源很長時間不釋放。

此時有兩種方法處理:

方法一:重啟資料庫服務。由於資料庫中有「killded」狀態的程序,一直殺不掉,shutdown immediate命令可能會一直停留在shutdown immediate過程,而使用shutdown abort 會損壞資料庫。

方法二:在資料庫伺服器層面殺掉「killded」狀態的程序。

解決方法二步驟如下:

查鎖表sql:

select sess.sid, 

sess.serial#,

lo.oracle_username,

lo.os_user_name,

ao.object_name,

lo.locked_mode

from v$locked_object lo,

dba_objects ao,

v$session sess

where ao.object_id = lo.object_id and lo.session_id = sess.sid;

一.查詢killded狀態的程序,結果與查鎖sql對應

select a.spid,b.sid,b.serial#,b.username 

from v$process a,v$session b

where a.addr=b.paddr

and b.status=

'killed'

;

二.找到對應的進行,查詢對應程序在資料庫伺服器(作業系統)的程序號

select b.spid,a.osuser,b.program 

from v$session a,v$process b

where a.paddr=b.addr

and a.sid=? --sid**於步驟一

三·.在資料庫伺服器上殺程序

1)、在unix上,用root身份執行命令:#kill -9 spid(spid 由步驟二·查詢)

2)、在windows(unix也適用)用orakill殺死執行緒,orakill是oracle提供的乙個可執行命令,語法為:

orakill sid thread

其中:sid:表示要殺死的程序屬於的例項名

thread:是要殺掉的執行緒號,即步驟二·查詢出的spid。

例:c:>orakill orcl 12345

注意:這裡要注意的是kill os程序是在服務端操作,而不是你程式所在客戶機。

Oracle學習筆記 0003

1 ora 32004解決方法 我在修改引數 log archive start true後啟動資料庫,報告錯誤ora 32004,我以為是我改錯了,又改回了false,後來重啟還是報這個錯,檢視了官方文件之後才知道原來這個引數在10g已經廢除了,我等於是加了一條沒有的引數在spfile裡面,後來我...

0003 使用者登入和登出

使用者登入流程 使用者輸入 頁面校驗資料後提交表單 判斷是否已經登入 判斷輸入是否合法 查詢資料庫是否有對應使用者 返回登入結果 先對頁面表單提交位址和方式進行調整,輸入項新增required必填項屬性。因為要使用actionerror,在useraction繼承actionsupport類新增lo...

0003 簡單的a b問題

寫在後面 0003 簡單的a b問題 難度級別 a 執行時間限制 1000ms 執行空間限制 256000kb 長度限制 2000000b 試題描述 輸入兩個不超過10000的正整數,輸出這兩個數的和。輸入只有一行包括兩個正整數,由乙個空格隔開。輸出只有乙個數表示輸入的兩個數的和。輸入示例 23 4...