學習動態效能表第八篇-(1)-V$LOCK
-----轉三思
本檢視列出Oracle 伺服器當前擁有的鎖以及未完成的鎖或栓鎖請求。如果你覺著session在等待等待事件佇列那你應該檢查本檢視。如果你發現session在等待一個鎖。那麼按如下先後順序:
1.使用V$LOCK找出session持有的鎖。
2.使用V$SESSION找出持有鎖或等待鎖的session執行的sql語句。
3.使用V$SESSION_WAIT找出什麼原因導致session持有鎖堵塞。
4.使用V$SESSION獲取關於持有鎖的程式和使用者的更多資訊。
V$LOCK中的常用列
·SID:表示持有鎖的會話資訊。
·TYPE:表示鎖的型別。值包括TM和TX等。
·LMODE:表示會話等待的鎖模式的資訊。用數字0-6表示,和表1相對應。
·REQUEST:表示session請求的鎖模式的資訊。
·ID1,ID2:表示鎖的物件標識。
公共鎖型別
在Oracle資料庫中,DML鎖主要包括TM鎖和TX鎖,其中TM鎖稱為表級鎖,TX鎖稱為事務鎖或行級鎖。
當Oracle執行DML語句時,系統自動在所要操作的表上申請TM型別的鎖。當TM鎖獲得後,系統再自動申請TX型別的鎖,並將實際鎖定的資料行的鎖標誌位進行置位。這樣在事務加鎖前檢查TX鎖相容性時就不用再逐行檢查鎖標誌,而只需檢查TM鎖模式的相容性即可,大大提高了系統的效率。TM鎖包括了SS、SX、S、X等多種模式,在資料庫中用0-6來表示。不同的SQL操作產生不同型別的TM鎖,如下表1。
TX:行級鎖,事務鎖
·在改變資料時必須是排它模式(mode 6)。
·每一個活動事務都擁有一個鎖。它將在事務結束(commit/rollback)時釋放。
·如果一個塊包括的列被改變而沒有ITL(interested transaction list)槽位(entries),那麼session將鎖置於共享模式(mode 4)。當session獲得塊的ITL槽位時釋放。
·當一個事務首次發起一個DML語句時就獲得一個TX鎖,該鎖保持到事務被提交或回滾。當兩個或多個會話在表的同一條記錄上執行DML語句時,第一個會話在該條記錄上加鎖,其他的會話處於等待狀態。當第一個會話提交後,TX鎖被釋放,其他會話才可以加鎖。
·指出回滾段和事務表項
按下列項以避免競爭:
·避免TX-6型別競爭,需要根據您的應用而定。
·避免TX-4型別競爭,可以考慮增加物件INITRANS引數值。
TM:表級鎖
·資料庫執行任何DDL語句時必須是排它模式;例如,alter table,drop table。
·執行像insert,update,delete這類DML語句時處於共享模式。它防止其它session對同一個物件同時執行ddl語句。
·任何物件擁有正被改變的資料,TM鎖都將必須存在。
·鎖指向物件。
在TM佇列避免競爭,可以考慮遮蔽物件表級鎖,遮蔽表級鎖防止物件執行任何ddl語句。
ST:空間事務鎖
·每個資料庫(非例項)擁有一個ST鎖。
·除了本地管理表空間,在space管理操作(新建或刪除extents)時必須是排它模式。
·物件creation, dropping, extension, 以及truncation都處於這種鎖
·多數公共原因的爭奪,是在磁碟排序(並非使用真正的臨時表空間)或回滾段擴充套件或收縮。
按如下項以避免競爭:
·使用真正的臨時表空間(true temporary tablespaces),利用臨時檔案。臨時段在磁碟排序之後並不建立或刪除。
·使用本地管理表空間。
·指定回滾段避免動態擴充套件和收縮,或使用自動undo management。
·避免應用執行建立或刪除資料庫物件。
UL:使用者定義鎖使用者可以自定義鎖。內容較多並與此節關係不大,略過。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/196700/viewspace-754301/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 學習動態效能表(八)-(1)-v$lock
- 學習動態效能表(八)-(2)-v$lock
- 學習動態效能表(三)-(1)-v$sqlSQL
- 學習動態效能表(四)-(1)-v$sqltextSQL
- (轉)學習Oracle動態效能表-(3)V$LOCK,V$LOCKED_OBJECTOracleObject
- (轉):學習Oracle動態效能表-(1)-V$SQLAREAOracleSQL
- 學習oracle動態效能表--v$transactionOracle
- 學習動態效能表(19)--V$UNDOSTAT
- 學習動態效能表(16)--V$ROWCACHE
- 學習動態效能表(15)--V$ROLLSTAT
- 學習動態效能表(九)--V$FILESTAT
- 學習動態效能表(七)--V$PROCESS
- 學習動態效能表(二)--v$sesstat
- 學習動態效能表(一)--v$sysstat
- 學習動態效能表(五)-v$sessionSession
- 學習動態效能表(五)--V$SESSIONSession
- 學習動態效能表(六)-(1)-V$SESSION_WAITSessionAI
- Oracle動態效能檢視學習之v$lock & v$locked_objectOracleObject
- 學習動態效能表(20)--V$WAITSTATAI
- 學習動態效能表(四)-(2)-V$SQLAREASQL
- 學習動態效能表(11)--v$latch$v$latch_children
- (轉):學習Oracle動態效能表-(7)-V$SQLTEXT,V$SQLAREAOracleSQL
- [轉]學習Oracle動態效能表-(6)-V$SQLTEXT,V$SQLAREAOracleSQL
- 學習動態效能表(18)--V$SYSTEM_EVENT
- (轉):學習Oracle動態效能表-(12)-V$PROCESSOracle
- (轉):學習Oracle動態效能表-(10)-V$FILESTATOracle
- (轉):學習Oracle動態效能表-(8)-V$SESSIONOracleSession
- (轉):學習Oracle動態效能表-(5)-V$SESSTATOracle
- (轉)學習Oracle動態效能表-(4)-V$SYSSTATOracle
- (轉):學習Oracle動態效能表-(2)-V$SQLTEXTOracleSQL
- (轉):學習Oracle動態效能表-(21)-V$UNDOSTATOracle
- (轉):學習Oracle動態效能表-(19)-v$rowcacheOracle
- (轉):學習Oracle動態效能表-(18)-V$ROLLSTATOracle
- 學習動態效能表(13)--V$OPEN_CURSOR
- 學習動態效能表
- 學習動態效能表(17)--v$segstat&v$segment_statistics
- 學習動態效能表(14)--V$PARAMETER&V$SYSTEM_PARAMETER
- 學習動態效能表(12)--V$DB_OBJECT_CACHEObject