背景:執行了乙個需要處理大量資料的儲存過程,時間非常長,手工中斷修改**後,重新編譯,儲存過程還在執行過程中,重新編譯則報該錯誤
解決:
1、查詢
查詢是否有正在執行的函式或儲存過程,所致物件鎖
sql>select name
from v$db_object_cache
where owner=』wisgdb』
and type in(『procedure』,』function』)
and locks > 0
adn pins > 0;
也可用查詢ddl鎖
select * from dba_ddl_locks
2、處理程序
alter system kill session 『21,149』;
3、出現另外乙個錯誤ora-00031
3.1 可以通過下列語句查詢:
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』;
發現21這個session的狀態已經變為killed
3.2如果利用上面的命令殺死乙個程序後,程序狀態被置為」killed」,但是鎖定的資源很長時間沒有被釋放,那麼可以在os級再殺死相應的程序(執行緒),首先執行下面的語句獲得程序(執行緒)號:
select b.spid,a.osuser,b.program
from v%process b,
v%process a
where a.paddr=b.addr and a.sid=21
3.3在os上殺死這個程序(執行緒)
在unix上,用root身份執行命令:#kill -9 21(即第2步查詢出的spid) (-9引數表示無條件終止)
不知為什麼,在部落格後台編輯時$符號不能正常顯示,所以用%替換
Selenium筆記(6)等待
1.簡介 在selenium操作瀏覽器的過程中,每一次請求url,selenium都會等待頁面載入完畢以後,才會將操作許可權再次交給我們的程式。但是,由於ajax和各種js 的非同步載入問題,所以我們在使用selenium的時候常常會遇到操作的元素還沒有載入出來,就會引發報錯。為了解決這個問題,se...
6 等待,只因曾經承諾
6 等待,只因曾經承諾 hub thread 中還有乙個函式沒有講,它就是try to freeze 這是與電源管理相關的函式。對大多數人來說,關於這個函式,了解就可以了。隨著linux開始支援suspended之後,有人提倡,每乙個核心程序都應該在適當的時候,呼叫try to freeze 什麼意...
3 1等待 通知機制(wait notify)
要點 wait 執行前在呼叫wait 之前,必須先要獲得物件鎖,即只有在同步方法或者同步 塊中呼叫wait 方法。執行作用 wait 使程序進入等待 阻塞狀態 在收到通知或者被中斷之前都會進入預執行佇列。執行之後1 執行wait 之後,當前執行緒釋放改物件鎖,在通知前與其他執行緒重新競爭資源 執行之...