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...