




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 學習目標學習目標 n 掌握數據庫安全性、完整性、事務、并發控制和數據庫恢復掌握數據庫安全性、完整性、事務、并發控制和數據庫恢復 的基本概念;的基本概念; n 了解數據庫安全性控制的一般方法了解數據庫安全性控制的一般方法, 掌握數據庫安全性中的掌握數據庫安全性中的 存取控制技術;存取控制技術; n 掌握常用的完整性控制方法;掌握常用的完整性控制方法; n 理解并發控制的原則和方法;理解并發控制的原則和方法; n 掌握基本的數據庫恢復技術。掌握基本的數據庫恢復技術。 主要內容主要內容 n 4.1 數據庫安全性數據庫安全性 n 4.2 數據庫完整性數據庫完整性 n 4.3 事務事務 n 4.4 并
2、發控制并發控制 n 4.5 數據庫恢復技術數據庫恢復技術 數據庫安全性概述數據庫安全性概述 n 問題的提出問題的提出 u數據庫的一大特點是數據可以共享數據庫的一大特點是數據可以共享 u數據共享必然帶來數據庫的安全性問題數據共享必然帶來數據庫的安全性問題 u數據庫系統中的數據共享不能是無條件的共享數據庫系統中的數據共享不能是無條件的共享 例:例: 軍事秘密、國家機密、新產品實驗數據、軍事秘密、國家機密、新產品實驗數據、 市場需求分析、市場營銷策略、銷售計劃、市場需求分析、市場營銷策略、銷售計劃、 客戶檔案、醫療檔案、銀行儲蓄數據客戶檔案、醫療檔案、銀行儲蓄數據 數據庫安全性數據庫安全性 數據庫安
3、全性概述數據庫安全性概述 n 非法使用數據庫的情況非法使用數據庫的情況 u編寫合法程序繞過編寫合法程序繞過DBMS及其授權機制及其授權機制 u直接或編寫應用程序執行非授權操作直接或編寫應用程序執行非授權操作 u通過多次合法查詢數據庫從中推導出一些保密數據通過多次合法查詢數據庫從中推導出一些保密數據 數據庫安全性概述數據庫安全性概述 n 計算機系統中,安全措施是一級一級層層設置計算機系統中,安全措施是一級一級層層設置 數據庫安全性概述數據庫安全性概述 n 數據庫安全性控制的常用方法數據庫安全性控制的常用方法 u用戶標識和鑒定用戶標識和鑒定 u存取控制存取控制 u視圖視圖 u審計審計 u加密存儲加
4、密存儲 用戶標識與鑒別用戶標識與鑒別 n 系統提供的最外層安全保護措施系統提供的最外層安全保護措施 u 確認用戶名確認用戶名 u 口令口令 u 約定計算過程約定計算過程 u 利用用戶具有的物品利用用戶具有的物品 磁卡、磁卡、USB Key等等 u 利用用戶的個人特征利用用戶的個人特征 指紋、聲音等指紋、聲音等 n 實際應用:幾種方法綜合實際應用:幾種方法綜合 u 案例:網上銀行案例:網上銀行 存取控制存取控制 n 存取控制機制組成存取控制機制組成 u定義用戶權限定義用戶權限 u合法權限檢查合法權限檢查 n 用戶權限定義和合法權檢查機制一起組成了用戶權限定義和合法權檢查機制一起組成了 DBMS的
5、安全子的安全子 系統系統 自主存取控制方法自主存取控制方法 n 定義用戶存取權限:定義用戶可以在哪些數據庫對象上進行哪些類型的定義用戶存取權限:定義用戶可以在哪些數據庫對象上進行哪些類型的 操作操作 n 用戶權限組成用戶權限組成 n數據對象數據對象 n操作類型操作類型 n 通過通過 SQL 的的 GRANT 語句和語句和 REVOKE 語句實現語句實現 n 定義存取權限稱為定義存取權限稱為授權授權 自主存取控制方法(續)自主存取控制方法(續) n 關系數據庫系統中存取控制對象關系數據庫系統中存取控制對象 對象類型對象類型對象對象操操 作作 類類 型型 數據庫數據庫模式模式CREATE SCHE
6、MA 基本表基本表CREATE TABLE,ALTER TABLE 模式模式視圖視圖CREATE VIEW 索引索引CREATE INDEX 數據數據基本表和視圖基本表和視圖SELECT,INSERT,UPDATE,DELETE,REFERENCES, ALL PRIVILEGES 數據數據屬性列屬性列SELECT,INSERT,UPDATE, REFERENCES ALL PRIVILEGES 關系數據庫系統中的存取權限關系數據庫系統中的存取權限 授權與回收授權與回收 一、GRANT n GRANT語句的一般格式:語句的一般格式: GRANT ,. ON TO ,. WITH GRANT O
7、PTION; n 語義:將對指定操作對象的指定操作權限授予指定的用戶語義:將對指定操作對象的指定操作權限授予指定的用戶 GRANT u發出發出GRANT: DBA 數據庫對象創建者(即屬主數據庫對象創建者(即屬主Owner) 擁有該權限的用戶擁有該權限的用戶 u按受權限的用戶按受權限的用戶 一個或多個具體用戶一個或多個具體用戶 PUBLIC(全體用戶)(全體用戶) 回收回收 二、REVOKE n 授予的權限可以由授予的權限可以由DBA或其他授權者用或其他授權者用REVOKE語句收回語句收回 n REVOKE語句的一般格式為:語句的一般格式為: REVOKE ,. ON FROM ,.; 視圖機
8、制視圖機制 n 把要保密的數據對無權存取這些數據的用戶隱藏起來,對數把要保密的數據對無權存取這些數據的用戶隱藏起來,對數 據提供一定程度的安全保護據提供一定程度的安全保護 視圖機制(續)視圖機制(續) 例例14建立計算機系學生的視圖,把對該視圖的建立計算機系學生的視圖,把對該視圖的SELECT權限授于權限授于U1,把該,把該 視圖上的所有操作權限授于視圖上的所有操作權限授于U2 先建立計算機系學生的視圖先建立計算機系學生的視圖CS_S CREATE VIEW CS_S AS SELECT * FROM S WHERE SDEPT=CS; 視圖機制(續)視圖機制(續) 在視圖上進一步定義存取權限
9、在視圖上進一步定義存取權限 GRANT SELECT ON CS_S TO U1 ; GRANT ALL PRIVILIGES ON CS_S TO U2; 審計審計 n 什么是審計什么是審計 u審計日志(審計日志(Audit Log) 將用戶對數據庫的所有操作記錄在上面將用戶對數據庫的所有操作記錄在上面 uDBA利用審計日志利用審計日志 找出非法存取數據的人、時間和內容找出非法存取數據的人、時間和內容 uC2以上安全級別的以上安全級別的DBMS必須具有必須具有 審計(續)審計(續) n 審計分為審計分為 u 用戶級審計用戶級審計 針對自己創建的數據庫表或視圖進行審計針對自己創建的數據庫表或視
10、圖進行審計 記錄所有用戶對這些表或視圖的一切成功和(或)不成功的記錄所有用戶對這些表或視圖的一切成功和(或)不成功的 訪問要求以及各種類型的訪問要求以及各種類型的SQL操作操作 u 系統級審計系統級審計 DBA設置設置 監測成功或失敗的登錄要求監測成功或失敗的登錄要求 監測監測GRANT和和REVOKE操作以及其他數據庫級權限下的操操作以及其他數據庫級權限下的操 作作 數據加密數據加密 n 數據加密數據加密 u 防止數據庫中數據在存儲和傳輸中失密的有效手段防止數據庫中數據在存儲和傳輸中失密的有效手段 n 加密的基本思想加密的基本思想 n 加密方法加密方法 u 替換方法替換方法 u 置換方法置換
11、方法 u 混合混合方法方法 n DBMS中的數據加密中的數據加密 以下補充內容為教材第七章內容以下補充內容為教材第七章內容 SQL SERVER 2005 數據庫的安全性數據庫的安全性 n 問題一:當用戶登錄數據庫系統時,如何確保只有合法的用 戶才能登錄到系統中呢?這是一個最基本的安全性問題,也 是數據庫管理系統提供的基本功能。在Microsoft SQL Server 2005系統中,這個問題是通過身份驗證模式和主體解 決的。 n 問題二:當用戶登錄到系統中,他可以執行哪些操作、使用 哪些對象和資源呢?這也是一個非常基本的安全問題,在 Microsoft SQL Server 2005系統中
12、,這個問題是通過安全 對象和權限設置來實現的。 n 問題三:數據庫中的對象由誰所有? SQL SERVER 2005 數據庫的安全性數據庫的安全性 n 賬戶與登錄管理 SQL SERVER 2005 數據庫的安全性數據庫的安全性 n 角色管理 SQL SERVER 2005 數據庫的安全性數據庫的安全性 n 權限管理 SQL SERVER 2005 數據庫的安全性數據庫的安全性 n SQL Server安全身份驗證 主要內容主要內容 n 4.1 數據庫安全性數據庫安全性 n 4.2 數據庫完整性數據庫完整性 n 4.3 事務事務 n 4.4 并發控制并發控制 n 4.5 數據庫恢復技術數據庫恢
13、復技術 數據庫完整性數據庫完整性 n 數據庫的完整性數據庫的完整性 u 數據的數據的正確性正確性和和相容性相容性 n 數據的完整性和安全性是兩個不同概念數據的完整性和安全性是兩個不同概念 u 數據的完整性數據的完整性 防止數據庫中存在不符合語義的數據,也就是防止數據庫中存在不正防止數據庫中存在不符合語義的數據,也就是防止數據庫中存在不正 確的數據確的數據 防范對象:不合語義的、不正確的數據防范對象:不合語義的、不正確的數據 u 數據的安全性數據的安全性 保護數據庫防止惡意的破壞和非法的存取保護數據庫防止惡意的破壞和非法的存取 防范對象:非法用戶和非法操作防范對象:非法用戶和非法操作 數據庫完整
14、性數據庫完整性(續續) 為維護數據庫的完整性,為維護數據庫的完整性,DBMS必須:必須: u1.定義功能:提供定義完整性約束條件的機制定義功能:提供定義完整性約束條件的機制 u2.檢查功能:檢查用戶發出的操作請求,看是否違背了完整性約束條檢查功能:檢查用戶發出的操作請求,看是否違背了完整性約束條 件件 u3.保護功能:發現違約,采取措施保證數據庫的完整性。保護功能:發現違約,采取措施保證數據庫的完整性。 數據庫完整性的分類數據庫完整性的分類 1 實體完整性實體完整性 2 參照完整性參照完整性 3 用戶定義的完整性用戶定義的完整性 實體完整性定義實體完整性定義 n 關系模型的實體完整性定義:關系
15、的主碼具有唯一值,且不能為關系模型的實體完整性定義:關系的主碼具有唯一值,且不能為NULL n 關系模型的實體完整性實現方法:關系模型的實體完整性實現方法: uCREATE TABLE中用中用PRIMARY KEY定義定義 n 單屬性構成的碼有兩種說明方法單屬性構成的碼有兩種說明方法 u定義為列級約束條件定義為列級約束條件 u定義為表級約束條件定義為表級約束條件 n 對多個屬性構成的碼只有一種說明方法對多個屬性構成的碼只有一種說明方法 u定義為表級約束條件定義為表級約束條件 實體完整性定義實體完整性定義(續續) 例例 將將S表中的表中的SNO屬性定義為主碼屬性定義為主碼 (1)在列級定義主碼
16、CREATE TABLE S (SNO CHAR(9) PRIMARY KEY, SNAME CHAR(20) NOT NULL, SEX CHAR(2) , AGE SMALLINT, SDEPT CHAR(20); 實體完整性定義實體完整性定義(續續) (2) 在表級定義主碼 CREATE TABLE S (SNO CHAR(9), SNAME CHAR(20) NOT NULL, SEX CHAR(2) , AGE SMALLINT, SDEPT CHAR(20), PRIMARY KEY (SNO) ); 實體完整性定義實體完整性定義(續續) 例將例將SC表中的表中的SNO,CNO屬性
17、組定義為主碼屬性組定義為主碼 CREATE TABLE SC (SNO CHAR(9) NOT NULL, CNO CHAR(4) NOT NULL, GRADE SMALLINT, PRIMARY KEY (SNO,CNO) /*只能在表級定義主碼只能在表級定義主碼*/ ); 實體完整性檢查和違約處理實體完整性檢查和違約處理 n 插入新記錄或對記錄進行更新操作時,插入新記錄或對記錄進行更新操作時,RDBMS按照實體完整性規則自動按照實體完整性規則自動 進行檢查。包括:進行檢查。包括: u1. 檢查主碼值是否唯一,如果不唯一則拒絕插入或修改檢查主碼值是否唯一,如果不唯一則拒絕插入或修改 u2.
18、 檢查主碼的各個屬性是否為空,只要有一個為空就拒絕插入或修改檢查主碼的各個屬性是否為空,只要有一個為空就拒絕插入或修改 數據庫完整性分類數據庫完整性分類 1 實體完整性實體完整性 2 參照完整性參照完整性 3 用戶定義的完整性用戶定義的完整性 4 觸發器觸發器 參照完整性定義參照完整性定義 n 參照完整性定義:外碼或者取參照完整性定義:外碼或者取NULL值,或者取其參照碼的值,或者取其參照碼的 值值 n 關系模型的參照完整性的實現方法:關系模型的參照完整性的實現方法: u在在CREATE TABLE中用中用FOREIGN KEY短語定義哪些列為外碼短語定義哪些列為外碼 u用用REFERENCE
19、S短語指明這些外碼參照哪些表的主碼短語指明這些外碼參照哪些表的主碼 參照完整性定義參照完整性定義(續續) 例如,關系例如,關系SC中一個元組表示一個學生選修的某門課程的成績,(中一個元組表示一個學生選修的某門課程的成績,(SNO, CNO)是主碼。)是主碼。SNO,CNO分別參照引用分別參照引用S表的主碼和表的主碼和C表的主碼表的主碼 例例 定義定義SC中的參照完整性中的參照完整性 CREATE TABLE SC (SNO CHAR(9) NOT NULL, CNO CHAR(4) NOT NULL, GRADE SMALLINT, PRIMARY KEY (SNO, CNO), /*在表級定
20、義實體完整性在表級定義實體完整性*/ FOREIGN KEY (SNO) REFERENCES S(SNO), /*在表級定義參照完整性在表級定義參照完整性*/ FOREIGN KEY (CNO) REFERENCES C(CNO) /*在表級定義參照完整性在表級定義參照完整性*/ ); 參照完整性檢查和違約處理參照完整性檢查和違約處理 可能破壞參照完整性的情況及違約處理 被參照表(例如被參照表(例如S)參照表(例如參照表(例如SC)違約處理違約處理 可能破壞參照完整性可能破壞參照完整性 插入元組插入元組拒絕拒絕 可能破壞參照完整性可能破壞參照完整性 修改外碼值修改外碼值拒絕拒絕 刪除元組刪除
21、元組 可能破壞參照完整性可能破壞參照完整性拒絕拒絕/級連刪除級連刪除/設置為空值設置為空值 修改主碼值修改主碼值 可能破壞參照完整性可能破壞參照完整性拒絕拒絕/級連修改級連修改/設置為空值設置為空值 違約處理違約處理 n 參照完整性違約處理參照完整性違約處理 u1. 拒絕拒絕(NO ACTION)執行執行 默認策略默認策略 u2. 級聯級聯(CASCADE)操作操作 u3. 設置為空值(設置為空值(SET-NULL) 對于參照完整性,除了應該定義外碼,還應定義對于參照完整性,除了應該定義外碼,還應定義外碼列是否外碼列是否 允許空值允許空值 違約處理違約處理(續續) 例例 顯式說明參照完整性的違
22、約處理示例顯式說明參照完整性的違約處理示例 CREATE TABLE SC (SNO CHAR(9) NOT NULL, CNO CHAR(4) NOT NULL, GRADE SMALLINT, PRIMARY KEY(SNO,CNO),), FOREIGN KEY (SNO) REFERENCES S(SNO) ON DELETE CASCADE /*當當刪除刪除S 表中的元組時,表中的元組時,級聯刪除級聯刪除SC表中相同表中相同SNO的元組的元組*/ ON UPDATE CASCADE, /*當當更新更新S 表中的元組時,表中的元組時,級聯更新級聯更新SC表中相同表中相同SNO的元組的元
23、組*/ FOREIGN KEY (CNO) REFERENCES C(CNO) ON DELETE NO ACTION /*當刪除當刪除C 表中的元組造成了與表中的元組造成了與SC表不一致時表不一致時拒絕刪除拒絕刪除*/ ON UPDATE CASCADE /*當更新當更新C表中的表中的CNO時,時,級聯更新級聯更新SC表中相應的元組表中相應的元組*/ ); 數據庫完整性數據庫完整性 1 實體完整性實體完整性 2 參照完整性參照完整性 3 用戶定義的完整性用戶定義的完整性 用戶定義的完整性用戶定義的完整性 n 用戶定義的完整性就是針對用戶定義的完整性就是針對某一具體應用某一具體應用的數據必須滿
24、足的的數據必須滿足的 語義要求語義要求 n 可以通過可以通過RDBMS實現,而不必由應用程序承擔實現,而不必由應用程序承擔 用戶定義的完整性實現用戶定義的完整性實現-屬性上的約束條件的定義屬性上的約束條件的定義 n CREATE TABLE時定義時定義 u列值非空(列值非空(NOT NULL) u列值唯一(列值唯一(UNIQUE) u檢查列值是否滿足一個布爾表達式(檢查列值是否滿足一個布爾表達式(CHECK) 屬性上的約束條件的定義屬性上的約束條件的定義(續續) n 1.不允許取空值不允許取空值 例例 在定義在定義SC表時,說明表時,說明GRADE屬性不允許取空值。屬性不允許取空值。 CREA
25、TE TABLE SC (SNO CHAR(9) , CNO CHAR(4) , GRADE SMALLINT NOT NULL, PRIMARY KEY (SNO, CNO), /* 如果在表級定義實體完整性,隱含了如果在表級定義實體完整性,隱含了SNO,CNO不允許取空值,則在列級不允許取空值,則在列級 不允許取空值的定義就不必寫了不允許取空值的定義就不必寫了 * / );); 用戶定義的完整性實現用戶定義的完整性實現-屬性上的約束條件的定義屬性上的約束條件的定義(續續) n 2.列值唯一列值唯一 例例 建立部門表建立部門表DEPT,要求部門名稱,要求部門名稱Dname列取值唯一,部門編號
26、列取值唯一,部門編號Deptno列列 為主碼為主碼 CREATE TABLE DEPT (Deptno NUMERIC(2), Dname CHAR(9) UNIQUE,/*要求要求Dname列值唯一列值唯一*/ Location CHAR(10), PRIMARY KEY (Deptno) ); 用戶定義的完整性實現用戶定義的完整性實現-屬性上的約束條件的定義屬性上的約束條件的定義(續續) n 3. 用用CHECK短語指定列值應該滿足的條件短語指定列值應該滿足的條件 例例 S表的表的SEX只允許取只允許取“男男”或或“女女”。 CREATE TABLE S (SNO CHAR(9) PRIM
27、ARY KEY, SNAME CHAR(8) NOT NULL, SEX CHAR(2) CHECK (SEX IN (男男,女女) ) , /*性別屬性性別屬性SEX只允許取只允許取男男或或女女 */ AGE SMALLINT, SDEPT CHAR(20) ); 用戶定義的完整性實現用戶定義的完整性實現-觸發器觸發器 n 觸發器(觸發器(Trigger)是用戶定義在關系表上的一類由)是用戶定義在關系表上的一類由事件驅事件驅 動動的特殊過程的特殊過程 u由服務器自動激活由服務器自動激活 u可以進行更為復雜的用戶定義完整性,具有更精細和更強大的數據可以進行更為復雜的用戶定義完整性,具有更精細和
28、更強大的數據 控制能力控制能力 u使用使用觸發器既可以實現靜態完整性約束(數據庫在某一確定狀態觸發器既可以實現靜態完整性約束(數據庫在某一確定狀態 時,記錄必須滿足的條件),又可以實現動態完整性約束(記錄從時,記錄必須滿足的條件),又可以實現動態完整性約束(記錄從 一個狀態更新為另一個狀態時,新舊記錄值必須滿足的條件。通過一個狀態更新為另一個狀態時,新舊記錄值必須滿足的條件。通過 在關系上定義在關系上定義delete、update觸發器實現)。觸發器實現)。 定義觸發器定義觸發器 n CREATE TRIGGER語法格式語法格式 CREATE TRIGGER BEFORE | AFTER ON
29、 FOR EACH ROW | STATEMENT WHEN 關系完整性約束的細分類關系完整性約束的細分類 n 根據完整性約束涉及對象的狀態,分為:靜態完整性約束、根據完整性約束涉及對象的狀態,分為:靜態完整性約束、 動態完整性約束。動態完整性約束。 n 根據完整性約束涉及的對象,分為:屬性級約束、元組級約根據完整性約束涉及的對象,分為:屬性級約束、元組級約 束(同一條記錄的不同元組之間必須滿足的約束)、表級約束(同一條記錄的不同元組之間必須滿足的約束)、表級約 束(同一個表的不同記錄或不同表之間必須滿足的約束)。束(同一個表的不同記錄或不同表之間必須滿足的約束)。 元組上的約束條件的定義元組
30、上的約束條件的定義-元組級約束定義元組級約束定義 例例 當學生的性別是男時,其名字不能以當學生的性別是男時,其名字不能以Ms.開始。開始。 CREATE TABLE S (SNO CHAR(9), SNAME CHAR(8) NOT NULL, SEX CHAR(2), AGE SMALLINT, SDEPT CHAR(20), PRIMARY KEY (SNO), CHECK (SEX=女 OR SNAME NOT LIKE Ms.%) /*定義了元組中定義了元組中SNAME和和 SEX兩個屬性值之間的約束條件兩個屬性值之間的約束條件*/ ); 性別是女性的元組都能通過該項檢查,因為性別是女
31、性的元組都能通過該項檢查,因為SEX=女女成立;成立; 當性別是男性時,要通過檢查則名字一定不能以當性別是男性時,要通過檢查則名字一定不能以Ms.打頭打頭 用戶自定義完整性的約束條件檢查和違約處理用戶自定義完整性的約束條件檢查和違約處理 n 插入元組或修改屬性的值時,插入元組或修改屬性的值時,RDBMS檢查屬性上的約束條檢查屬性上的約束條 件是否被滿足件是否被滿足 n 如果不滿足則操作被拒絕執行如果不滿足則操作被拒絕執行 以下補充內容為教材第七章內容以下補充內容為教材第七章內容 SQL SERVER 2005 數據庫的完整性數據庫的完整性 主要內容主要內容 n 4.1 數據庫安全性數據庫安全性
32、 n 4.2 數據庫完整性數據庫完整性 n 4.3 事務事務 n 4.4 并發控制并發控制 n 4.5 數據庫恢復技術數據庫恢復技術 事務事務(Transaction)的定義的定義 n 定義定義 u 一個數據庫操作序列一個數據庫操作序列 u 一個不可分割的工作單位一個不可分割的工作單位 u 恢復和并發控制的基本單位恢復和并發控制的基本單位 n 事務和程序比較事務和程序比較 u 在關系數據庫中,一個事務可以是一條或多條在關系數據庫中,一個事務可以是一條或多條SQL語句語句,也可以包含一個或多也可以包含一個或多 個程序。個程序。 u 一個程序通常包含多個事務一個程序通常包含多個事務 定義事務定義事
33、務 n 顯式定義方式顯式定義方式 BEGIN TRANSACTION BEGIN TRANSACTION SQL 語句語句1 SQL 語句語句1 SQL 語句語句2 SQL 語句語句2 。 。 COMMIT ROLLBACK n 隱式方式隱式方式 當用戶沒有顯式地定義事務時,當用戶沒有顯式地定義事務時, DBMS按缺省規定自動劃分事務,按缺省規定自動劃分事務,insert、delete、update都是缺都是缺 省事務省事務 例:銀行轉帳事務(從例:銀行轉帳事務(從A帳戶轉帳帳戶轉帳1000元到元到B帳戶)帳戶) 事務的特性事務的特性(ACID特性特性) 事務的事務的ACID特性:特性: n原
34、子性(原子性(Atomicity) n一致性(一致性(Consistency) n隔離性(隔離性(Isolation) n持續性(持續性(Durability ) 事務的這四大特性,由事務的這四大特性,由DBMS系統自動實現系統自動實現 事務的特性事務的特性原子性和一致性原子性和一致性 n 事務的原子性是由事務的原子性是由DBMS的的 事務管理事務管理 子系統實現的。子系統實現的。 n 原子性的實現:如果事務非正常結束,系統自動檢測并撤銷原子性的實現:如果事務非正常結束,系統自動檢測并撤銷 該事務,對用戶是透明的,不需要用戶干預該事務,對用戶是透明的,不需要用戶干預 n 什么是事務的一致性?什
35、么是事務的一致性? n 一個事務執行的結果,必須使數據庫從一個一致性狀態轉換一個事務執行的結果,必須使數據庫從一個一致性狀態轉換 為另一個一致性狀態,數據庫不能因為事務的執行而遭受破為另一個一致性狀態,數據庫不能因為事務的執行而遭受破 壞。事務的一致性是由壞。事務的一致性是由DBMS的的完整性控制完整性控制子系統實現的。子系統實現的。 事務的特性事務的特性隔離性和持續性隔離性和持續性 n 什么是事務的隔離性?什么是事務的隔離性? n 當多個事務并發執行時,多個事務之間的數據操作互相隔離,互不干當多個事務并發執行時,多個事務之間的數據操作互相隔離,互不干 擾,以保證所有事務執行完后,執行結果正確
36、。事務的隔離性通過擾,以保證所有事務執行完后,執行結果正確。事務的隔離性通過 DBMS的的并發控制并發控制子系統實現。子系統實現。 n 隔離性的實現:如果多個事務之間并發操作同一個數據,系統自動采隔離性的實現:如果多個事務之間并發操作同一個數據,系統自動采 用加鎖技術,保證多個事務有序地進行。用加鎖技術,保證多個事務有序地進行。 事務的特性事務的特性持續性持續性 n 什么是事務的持續性?什么是事務的持續性? n 一個事務一旦提交,它對數據庫的修改就是永久性的,其它操作一個事務一旦提交,它對數據庫的修改就是永久性的,其它操作 或故障不應該對其執行結果有任何影響或故障不應該對其執行結果有任何影響
37、n 事務的持續性是由事務的持續性是由DBMS的的 恢復管理恢復管理 子系統實現的子系統實現的。 【案例案例】 利用存儲過程來實現下面的應用利用存儲過程來實現下面的應用: 從一個賬戶轉指定數額的款項到從一個賬戶轉指定數額的款項到 另一個賬戶中。另一個賬戶中。 CREATE PROCEDURE TRANSFER(inAccount INT, outAccount INT, amount FLOAT) AS BEGIN DECLARE totalDeposit FLOAT BEGIN TRANSACTION /* 檢查轉出賬戶的余額檢查轉出賬戶的余額 */ SELECT totalDeposit=
38、total FROM ACCOUNT WHERE ACCOUNTNUM=outAccount; IF totalDeposit IS NULL THEN /* 賬戶不存在或賬戶中沒有存款賬戶不存在或賬戶中沒有存款 */ ROLLBACK RETURN END IF 事務舉例事務舉例可以在存儲過程中或者前臺應用程序中可以在存儲過程中或者前臺應用程序中 定義事務定義事務 IF totalDeposit amount THEN /* 賬戶賬戶存款不足賬戶賬戶存款不足 */ ROLLBACK RETURN END IF UPDATE account SET total=total-amount WHE
39、RE ACCOUNTNUM=outAccount /* 修改轉出賬戶,減去轉出額修改轉出賬戶,減去轉出額 */ UPDATE account SET total=total + amount WHERE ACCOUNTNUM=inAccount /* 修改轉入修改轉入 賬戶,增加轉出額賬戶,增加轉出額 */ COMMIT /* 提交轉賬事務提交轉賬事務 */ END 事務舉例事務舉例可以在存儲過程中或者前臺應用程序中定義事務可以在存儲過程中或者前臺應用程序中定義事務 執行:執行: exec Procedure TRANSFER(01003813828,01003815868,10000); 主
40、要內容主要內容 n 4.1 數據庫安全性數據庫安全性 n 4.2 數據庫完整性數據庫完整性 n 4.3 事務事務 n 4.4 并發控制并發控制 n 4.5 數據庫恢復技術數據庫恢復技術 問題的產生(續)問題的產生(續) n 不同的多事務執行方式不同的多事務執行方式 (1)事務串行執行事務串行執行 u每個時刻只有一個事務運行,其他事務必須等每個時刻只有一個事務運行,其他事務必須等 到這個事務結束以后方能運行到這個事務結束以后方能運行 u不能充分利用系統資源,發揮數據庫共享資源不能充分利用系統資源,發揮數據庫共享資源 的特點的特點 T1 T2 T3 事務的串行執行方式 問題的產生(續)問題的產生(
41、續) (2)單處理機的交叉并發方式(單處理機的交叉并發方式(Interleaved Concurrency) u在單處理機系統中,事務的并行執行是這些并行事務的并行操作輪流在單處理機系統中,事務的并行執行是這些并行事務的并行操作輪流 交叉運行交叉運行 u單處理機系統中的并行事務并沒有真正地并行運行,但能夠減少處理單處理機系統中的并行事務并沒有真正地并行運行,但能夠減少處理 機的空閑時間,提高系統的效率機的空閑時間,提高系統的效率 問題的產生(續)問題的產生(續) 事務的交叉并發執行方式 問題的產生(續)問題的產生(續) (3)多處理機的同時并發方式(多處理機的同時并發方式(simultaneo
42、us concurrency) u多處理機系統中,每個處理機可以運行一個事務,多個處理機多處理機系統中,每個處理機可以運行一個事務,多個處理機 可以同時運行多個事務,實現多個事務真正的并行運行可以同時運行多個事務,實現多個事務真正的并行運行 問題的產生(續)問題的產生(續) n 事務并發執行帶來的問題事務并發執行帶來的問題 u會產生多個事務同時存取同一數據的情況會產生多個事務同時存取同一數據的情況 u可能會存取和存儲不正確的數據,破壞事務一致性和數據庫的可能會存取和存儲不正確的數據,破壞事務一致性和數據庫的 一致性一致性 并發控制概述并發控制概述 n 并發控制機制的任務并發控制機制的任務 u對
43、并發操作進行正確調度對并發操作進行正確調度 u保證事務的隔離性保證事務的隔離性 u保證數據庫的一致性保證數據庫的一致性 T1的修改被的修改被T2覆蓋了!覆蓋了! 并發控制概述(續)并發控制概述(續) 并發操作帶來數據的不一致性實例 例例火車聯網售票系統中的一個活動序列火車聯網售票系統中的一個活動序列 (讀余票,余票減(讀余票,余票減1,更新數據,更新數據 庫)庫) 甲售票點甲售票點(T1事務事務)讀出某航班的機票余額讀出某航班的機票余額A,設,設A=10; 乙售票點乙售票點(T2事務事務)讀出同一航班的機票余額讀出同一航班的機票余額A,也為,也為10; 甲售票點賣出一張機票,修改余額甲售票點賣
44、出一張機票,修改余額AA-1,所以,所以A為為9,把,把A寫回數據庫寫回數據庫 ; 乙售票點也賣出一張機票,修改余額乙售票點也賣出一張機票,修改余額AA-1,所以,所以A為為9,把,把A寫回數據寫回數據 庫庫 u 結果明明賣出兩張車票,數據庫中車票余額只減少結果明明賣出兩張車票,數據庫中車票余額只減少1 并發控制概述(續)并發控制概述(續) n 這種情況稱為數據庫的不一致性,是由并發操作引起的。這種情況稱為數據庫的不一致性,是由并發操作引起的。 n 在并發操作情況下,對甲、乙兩個事務的操作序列的調度是隨機的。在并發操作情況下,對甲、乙兩個事務的操作序列的調度是隨機的。 n 若按上面的調度序列執
45、行,甲事務的修改就被丟失。若按上面的調度序列執行,甲事務的修改就被丟失。 u原因:第原因:第4步中乙事務修改步中乙事務修改A并寫回后覆蓋了甲事務的修改并寫回后覆蓋了甲事務的修改 并發控制概述(續)并發控制概述(續) n 并發操作帶來的數據不一致性并發操作帶來的數據不一致性 u丟失修改(丟失修改(Lost Update) u不可重復讀(不可重復讀(Non-repeatable Read) u讀讀“臟臟”數據(數據(Dirty Read) 丟失修改丟失修改 讀讀“臟臟”數據數據 不可重復讀不可重復讀 封鎖技術封鎖技術 n 封鎖就是事務封鎖就是事務T在對某個數據對象(例如表、記錄等)操作在對某個數據
46、對象(例如表、記錄等)操作 之前,先向系統發出請求,對其加鎖之前,先向系統發出請求,對其加鎖 n 加鎖后事務加鎖后事務T就對該數據對象有了一定的控制,在事務就對該數據對象有了一定的控制,在事務T釋放釋放 它的鎖之前,其它的事務不能更新此數據對象。它的鎖之前,其它的事務不能更新此數據對象。 基本封鎖類型基本封鎖類型 n 一個事務對某個數據對象加鎖后究竟擁有什么樣的控制由封鎖的類型決一個事務對某個數據對象加鎖后究竟擁有什么樣的控制由封鎖的類型決 定。定。 n 基本封鎖類型基本封鎖類型 u排它鎖(排它鎖(Exclusive Locks,簡記為,簡記為X鎖)鎖) u共享鎖(共享鎖(Share Lock
47、s,簡記為,簡記為S鎖)鎖) 排它鎖排它鎖 n 排它鎖又稱為排它鎖又稱為寫鎖寫鎖 n 若事務若事務T對數據對象對數據對象A加上加上X鎖,則只允許鎖,則只允許T讀取和修改讀取和修改A,其,其 它任何事務都不能再對它任何事務都不能再對A加任何類型的鎖,直到加任何類型的鎖,直到T釋放釋放A上的上的 鎖鎖 n 保證其他事務在保證其他事務在T釋放釋放A上的鎖之前不能再讀取和修改上的鎖之前不能再讀取和修改A 共享鎖共享鎖 n 共享鎖又稱為共享鎖又稱為讀鎖讀鎖 n 若事務若事務T對數據對象對數據對象A加上加上S鎖,則其它事務只能再對鎖,則其它事務只能再對A加加S鎖鎖 ,而不能加,而不能加X鎖,直到鎖,直到T
48、釋放釋放A上的上的S鎖鎖 n 保證其他事務可以讀保證其他事務可以讀A,但在,但在T釋放釋放A上的上的S鎖之前不能對鎖之前不能對A做做 任何修改任何修改 封鎖協議封鎖協議 n 運用封鎖方法時,對數據對象加鎖時需要約定一些規則運用封鎖方法時,對數據對象加鎖時需要約定一些規則 u何時申請封鎖何時申請封鎖 u持鎖時間持鎖時間 u何時釋放封鎖等何時釋放封鎖等 封鎖協議:一級封鎖協議封鎖協議:一級封鎖協議 n 事務事務T在修改數據之前必須先對其加在修改數據之前必須先對其加X鎖,直到鎖,直到事務結束事務結束才釋才釋 放;如果僅僅是讀數據不對其進行修改,則不需要加鎖。放;如果僅僅是讀數據不對其進行修改,則不需
49、要加鎖。 使用封鎖機制解決丟失修改問題使用封鎖機制解決丟失修改問題 n 事務T1在讀A進行修改 之前先對A加X鎖 n 當T2再請求對A加X鎖時 被拒絕 n T2只能等待T1釋放A上 的鎖后T2獲得對A的X鎖 n 這時T2讀到的A已經是 T1更新過的值9 n T2按此新的A值進行運 算,并將結果值A=8送 回到磁盤。避免了丟失 T1的更新。 沒有丟失修改沒有丟失修改 封鎖協議:二級封鎖協議封鎖協議:二級封鎖協議 n 二級封鎖協議是事務二級封鎖協議是事務T對要修改數據必須先加對要修改數據必須先加X鎖,直到鎖,直到事務事務 結束結束才釋放才釋放X鎖;對要讀取的數據必須先加鎖;對要讀取的數據必須先加S
50、鎖,鎖,讀完后讀完后即可即可 釋放釋放S鎖。鎖。 使用封鎖機制解決使用封鎖機制解決“讀臟數據讀臟數據”問題問題 封鎖協議:三級封鎖協議封鎖協議:三級封鎖協議 n 事務事務T在讀取數據之前必須先對其加在讀取數據之前必須先對其加S鎖,在要修改數據之前鎖,在要修改數據之前 必須先對其加必須先對其加X鎖,直到鎖,直到事務結束后事務結束后才釋放所有鎖。才釋放所有鎖。 n 三級封鎖協議解決了丟失修改問題、讀臟數據和不可重復讀三級封鎖協議解決了丟失修改問題、讀臟數據和不可重復讀 的事務并發調度問題的事務并發調度問題 封鎖協議:兩段鎖協議封鎖協議:兩段鎖協議 n 所有事務必須分兩個階段對數據項進行加鎖和解鎖:
51、所有事務必須分兩個階段對數據項進行加鎖和解鎖: u 在對任何數據進行讀、寫操作之前,首先要申請并獲得對該數據在對任何數據進行讀、寫操作之前,首先要申請并獲得對該數據 的封鎖。的封鎖。 u 在釋放一個封鎖之后,事務不能再申請任何封鎖。在釋放一個封鎖之后,事務不能再申請任何封鎖。 兩段鎖協議(續)兩段鎖協議(續) n “兩段兩段”鎖的含義鎖的含義 事務分為兩個階段事務分為兩個階段 u 第一階段是獲得封鎖,也稱為擴展階段第一階段是獲得封鎖,也稱為擴展階段 事務可以申請獲得任何數據項上的任何類型的鎖,但是不能釋放任事務可以申請獲得任何數據項上的任何類型的鎖,但是不能釋放任 何鎖何鎖 u 第二階段是釋放
52、封鎖,也稱為收縮階段第二階段是釋放封鎖,也稱為收縮階段 事務可以釋放任何數據項上的任何類型的鎖,但是不能再申請任何事務可以釋放任何數據項上的任何類型的鎖,但是不能再申請任何 鎖鎖 兩段鎖協議(續)兩段鎖協議(續) 例例 事務事務Ti遵守兩段鎖協議,其封鎖序列是遵守兩段鎖協議,其封鎖序列是 : Slock A Slock B Xlock C Unlock B Unlock A Unlock C; |擴展階段擴展階段| 收縮階段收縮階段 | 事務事務Tj不遵守兩段鎖協議,其封鎖序列是:不遵守兩段鎖協議,其封鎖序列是: Slock A Unlock A Slock B Xlock C Unlock
53、C Unlock B; 兩段鎖協議(續)兩段鎖協議(續) n 事務遵守兩段鎖協議是可串行化調度(并發調度的結果與某一種串行調度的結果事務遵守兩段鎖協議是可串行化調度(并發調度的結果與某一種串行調度的結果 相同)的充分條件,而不是必要條件。相同)的充分條件,而不是必要條件。 n 若并發事務都遵守兩段鎖協議,則對這些事務的任何并發調度策略都是可串行化若并發事務都遵守兩段鎖協議,則對這些事務的任何并發調度策略都是可串行化 的的 n 若并發事務的一個調度是可串行化的,不一定所有事務都符合兩段鎖協議若并發事務的一個調度是可串行化的,不一定所有事務都符合兩段鎖協議 n 兩段封鎖協議兩段封鎖協議(Two-P
54、hase Locking,簡稱,簡稱2PL)是最常用的一種封鎖協議是最常用的一種封鎖協議 死鎖和活鎖死鎖和活鎖 n 封鎖技術可以有效地解決并行操作的一致性問題,但也帶來封鎖技術可以有效地解決并行操作的一致性問題,但也帶來 一些新的問題一些新的問題 u死鎖死鎖 u活鎖活鎖 活鎖活鎖 n 事務事務T1封鎖了數據封鎖了數據R n 事務事務T2又請求封鎖又請求封鎖R,于是,于是T2等待。等待。 n T3也請求封鎖也請求封鎖R,當,當T1釋放了釋放了R上的封鎖之后系統首先批準了上的封鎖之后系統首先批準了T3的請求的請求 ,T2仍然等待。仍然等待。 n T4又請求封鎖又請求封鎖R,當,當T3釋放了釋放了R
55、上的封鎖之后系統又批準了上的封鎖之后系統又批準了T4的請求的請求 n T2有可能永遠等待,這就是有可能永遠等待,這就是活鎖活鎖的情形的情形 活鎖(續)活鎖(續) 活活 鎖鎖 活鎖(續)活鎖(續) n 避免活鎖:避免活鎖:采用先來先服務的策略采用先來先服務的策略 u當多個事務請求封鎖同一數據對象時當多個事務請求封鎖同一數據對象時 u按請求封鎖的先后次序對這些事務排隊按請求封鎖的先后次序對這些事務排隊 u該數據對象上的鎖一旦釋放,首先批準申請隊列中第一個事務獲得鎖該數據對象上的鎖一旦釋放,首先批準申請隊列中第一個事務獲得鎖 死鎖死鎖 n 事務事務T1封鎖了數據封鎖了數據R1 n T2封鎖了數據封鎖
56、了數據R2 n T1又請求封鎖又請求封鎖R2,因,因T2已封鎖了已封鎖了R2,于是,于是T1等待等待T2釋放釋放R2上的鎖上的鎖 n 接著接著T2又申請封鎖又申請封鎖R1,因,因T1已封鎖了已封鎖了R1,T2也只能等待也只能等待T1釋放釋放R1上的上的 鎖鎖 n 這樣這樣T1在等待在等待T2,而,而T2又在等待又在等待T1,T1和和T2兩個事務永遠不能結束,兩個事務永遠不能結束, 形成形成死鎖死鎖 死鎖(續)死鎖(續) T1T2 lock R1 Lock R2 Lock R2. 等待等待 等待等待Lock R1 等待等待等待等待 等待等待等待等待 死死 鎖鎖 解決死鎖的方法解決死鎖的方法 兩類
57、方法兩類方法 1. 預防死鎖預防死鎖 2. 死鎖的診斷與解除死鎖的診斷與解除 死鎖的預防死鎖的預防 n 產生死鎖的原因是兩個或多個事務都已封鎖了一些數據對象,然后又都產生死鎖的原因是兩個或多個事務都已封鎖了一些數據對象,然后又都 請求對已為其他事務封鎖的數據對象加鎖,從而出現死等待。請求對已為其他事務封鎖的數據對象加鎖,從而出現死等待。 n 預防死鎖的發生就是要破壞產生死鎖的條件預防死鎖的發生就是要破壞產生死鎖的條件 死鎖的預防(續)死鎖的預防(續) 預防死鎖的方法預防死鎖的方法 n 一次封鎖法一次封鎖法 n 順序封鎖法順序封鎖法 (1)一次封鎖法一次封鎖法 n 要求每個事務必須一次將所有要使
58、用的數據全部加鎖,要求每個事務必須一次將所有要使用的數據全部加鎖, 否則就不能繼續執行否則就不能繼續執行 n 存在的問題存在的問題 u降低系統并發度降低系統并發度 u難于事先精確確定封鎖對象難于事先精確確定封鎖對象 (2)順序封鎖法順序封鎖法 n 順序封鎖法是預先對數據對象規定一個封鎖順序,所有事務都按這個順順序封鎖法是預先對數據對象規定一個封鎖順序,所有事務都按這個順 序實行封鎖。序實行封鎖。 n 順序封鎖法存在的問題順序封鎖法存在的問題 u維護成本維護成本 數據庫系統中封鎖的數據對象極多,并且在不斷地變化。數據庫系統中封鎖的數據對象極多,并且在不斷地變化。 u難以實現:很難事先確定每一個事
59、務要封鎖哪些對象難以實現:很難事先確定每一個事務要封鎖哪些對象 死鎖的預防(續)死鎖的預防(續) n 結論結論 u在操作系統中廣為采用的預防死鎖的策略并不很適合數據庫的特點在操作系統中廣為采用的預防死鎖的策略并不很適合數據庫的特點 uDBMS在解決死鎖的問題上更普遍采用的是診斷并解除死鎖的方法在解決死鎖的問題上更普遍采用的是診斷并解除死鎖的方法 死鎖的診斷與解除死鎖的診斷與解除 n 死鎖的診斷死鎖的診斷 u超時法超時法 u事務等待圖法事務等待圖法 主要內容主要內容 n 4.1 數據庫安全性數據庫安全性 n 4.2 數據庫完整性數據庫完整性 n 4.3 事務事務 n 4.4 并發控制并發控制 n
60、 4.5 數據庫恢復技術數據庫恢復技術 數據庫恢復技術數據庫恢復技術 n 問題:問題:故障是不可避免的故障是不可避免的 u系統故障:計算機軟、硬件故障系統故障:計算機軟、硬件故障 u人為故障:操作員的失誤、惡意的破壞等。人為故障:操作員的失誤、惡意的破壞等。 n 數據庫的恢復數據庫的恢復 把數據庫從錯誤狀態恢復到某一已知的正確狀態把數據庫從錯誤狀態恢復到某一已知的正確狀態(亦稱為一致亦稱為一致 狀態或完整狀態狀態或完整狀態) 故障的種類故障的種類 n 事務內部的故障事務內部的故障 n 系統故障系統故障 n 介質故障介質故障 n 計算機病毒計算機病毒 一、事務內部的故障一、事務內部的故障 n 事
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國藥事管理制度
- 中央郡縣管理制度
- 中學印刷管理制度
- 中職公物管理制度
- 中試項目管理制度
- 中餐店面管理制度
- 變電站電氣一次安裝質量控制及技術要點分析
- “關系式”動員:探尋CZ市F社區暑期活動的獨特動員密碼
- 小建中湯治療原發性肝癌患者腹腔鏡肝切除術后疲勞綜合征的療效觀察
- 棉花葉片點云實例分割方法研究
- 人教版(2024)七年級下冊生物期末復習重點知識點提綱
- 2025年中考語文二輪復習:標點符號 專題練習題(含答案解析)
- 跌倒墜床防范試題及答案
- 2024-2025學年人教版(2024)初中英語七年級下冊(全冊)知識點歸納
- XXX社區居委會、業主委員會和物業管理機構三方聯席會議制度
- 2025年廣東省佛山市中考英語一模試卷
- 防塵網施工方案
- 學校部門協調制度
- 中華文化選講(吉林師范大學)知到課后答案智慧樹章節測試答案2025年春吉林師范大學
- 二年級下冊數學人教版導學案有余數的除法例6學案
- 物業管理行業公共區域安全免責協議
評論
0/150
提交評論