標籤:io 使用 sp on 資料 bs 代碼 line size
DDL鎖分為三種
1.排他DDL鎖
2.共用DDL鎖
3.可中斷解析鎖
大部分DDL都帶有排他DDL鎖,如一個表被修改中,可以使用select查詢資料,但是大多數操作都是不允許執行的,包括所有其他DDL語句。
但是在oracle中,有一些DDL操作沒有DDL鎖也發生。比如online建立索引
線上建立索引,會帶有DL,OD,低級TM鎖,但是沒有排他DDL鎖
DL 直接載入鎖,對錶進行直接載入路徑與建立索引不能同時進行。
OD鎖 online DDL支援真正的聯機。
低級TM鎖 防止其他DDL發生,同時還允許DML正常進行
另一類是共用DDL鎖
建立過程或視圖時,會對其中涉及到的表添加共用DDL鎖,這樣可以修改表的內容但是不能修改表的結構。
可中斷解析鎖
會話解析一條語句時,對於該語句引用的每一個對象都會施加解析鎖,這個目的是如果以某種方式刪除或修改了引用對象,可以將共用池中已經解析的緩衝語句無效刷出。
查詢指定表的鎖情況
select
(select username from v$session where sid=v$lock.sid) username,
sid,
id1,
id2,
lmode,
request,block,v$lock.type
from v$lock
where id1=73834;//object_id 通過user_objects查詢
查詢當前會話的可中斷解析鎖,作用是發現代碼無法編譯或逾時等待可以通過這個查詢找到誰正在使用
set linesize 1000
select session_id sid,owner,name,type,mode_held held,mode_requested request
from dba_ddl_locks
where session_id = (select sid from v$mystat where rownum=1);
oracle學習----DDL鎖理解