系統管理Lesson 10. Managing Data Concurrency
- 1. 請對 Oracle 資料庫鎖機制做一個完整的說明,
- 2. 事務在獲取排他的行鎖的同時,為什么要同時獲取一個共享的表鎖?
- 3. 當鎖沖突發生時,如何解決,請給出相應的 SQL 命令,
- 4. 死鎖是如何發生的,如何解決?
- 5. Oracle 資料庫的行鎖,本質上是對資料塊的鎖定,這個說法對不對?
- 6. OCP 考題:
1. 請對 Oracle 資料庫鎖機制做一個完整的說明,
鎖:
可以防止多個會話同時更改同一資料
是在指定陳述句的最低可能級別自動獲取(行、塊、表)(物件、資料庫、方案)
鎖機制:
(提供)高級資料并發處理(能力):
- 執行插入、更新和洗掉時用行級鎖
- 查詢不需要任何鎖
自動佇列管理
在事務處理結束(使用 COMMIT 或 ROLLBACK 操作)之前會一直保持鎖定
2. 事務在獲取排他的行鎖的同時,為什么要同時獲取一個共享的表鎖?
修改資料庫時,將資料從塊中讀取到記憶體,修改完后提交,由資料庫寫行程寫入到資料檔案中
防止用戶在修改表行資料的同時,其他管理員洗掉洗掉表
3. 當鎖沖突發生時,如何解決,請給出相應的 SQL 命令,
第一步 找出 Session ID(會話 ID)
SQL陳述句
SELECT sid, serial#, username FROM v$session
WHERE sid IN (SELECT blocking_session FROM v$session);
v$session 當前會話
blocking_session 凡是持有鎖的會話
第二步 解決鎖沖突
ALTER SYSTEM KILL SESSION ‘SID,SERIAL#’ IMMEDIATE;
A. 持有鎖的會話提交或者回退(釋放掉)
B. 終止持有鎖的會話(緊急情況下)
4. 死鎖是如何發生的,如何解決?
事務T1在等待T2,而T2又在等待T1,兩個事務永遠不能結束
兩個或更多會話等待已被其中另一個會話鎖定的資料
ORA-00060
Deadlock detectd while waiting for resource
解決:
完全自動,殺死其中一個事務
5. Oracle 資料庫的行鎖,本質上是對資料塊的鎖定,這個說法對不對?
不對
關系型表格資料在塊內部一行一行存盤的,行片段(Row piece)
行鎖
6. OCP 考題:
ABE
TM 鎖(表級鎖)
TX 鎖(事務鎖或行級鎖)
封鎖型別:
排他鎖(exclusive lock,即X鎖)(寫鎖) 只允許事務T讀取和修改資料物件A,其他事務都不能在對資料物件A
共享鎖(share lock,即S鎖) (讀鎖) 事務T可以讀資料物件A但不能修改A,其他事務只能再對A加S鎖,而不能加S鎖
資料庫鎖機制
oracle-資料庫的各種-鎖-詳解
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/128484.html
標籤:AI
上一篇:mybatis復雜查詢
下一篇:查詢,單行函式,多行函式
