加鎖是為了防止一些操作而進行的
而排他鎖呢
DML 操作的是表裡面的數據行;
DDL 操作的是表的元數據(表結構);
ORACLE裡鎖有以下幾種模式:
數字越大鎖級別越高
一般的查詢語句如select
select
當對話使用for update子串打開一個游標時
所有返回集中的數據行都將處於行級(Row
其他對象只能查詢這些數據行
insert / update / delete
沒有commit之前插入同樣的一條記錄會沒有反應
因為後一個
創建索引的時候也會產生
locked_mode為
但DDL(alter
有主外鍵約束時 update / delete
DDL語句時是
以DBA角色
select object_id
select t
from v$locked_object t
where t
如果有長期出現的一列
我們可以用下面SQL語句殺掉長期沒有釋放非正常的鎖
alter system kill session
如果出現了鎖的問題
當你采用的是直接連接數據庫的方式
也不要用OS系統命令 $kill process_num 或者 $kill
因為一個用戶進程可能產生一個以上的鎖
記得在數據庫級別用alter system kill session
select o
from v$locked_object l
where o
From:http://tw.wingwit.com/Article/program/Oracle/201311/16693.html