第5章 數(shù)據(jù)庫(kù)安全保護(hù).ppt_第1頁(yè)
第5章 數(shù)據(jù)庫(kù)安全保護(hù).ppt_第2頁(yè)
第5章 數(shù)據(jù)庫(kù)安全保護(hù).ppt_第3頁(yè)
第5章 數(shù)據(jù)庫(kù)安全保護(hù).ppt_第4頁(yè)
第5章 數(shù)據(jù)庫(kù)安全保護(hù).ppt_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第5章 數(shù)據(jù)庫(kù)安全保護(hù),北京林業(yè)大學(xué) 軟件教研室,2,5.1 數(shù)據(jù)庫(kù)的安全性 5.2 完整性控制 5.3 并發(fā)控制與封鎖 5.4 數(shù)據(jù)庫(kù)的恢復(fù),北京林業(yè)大學(xué) 軟件教研室,3,5.1 數(shù)據(jù)庫(kù)的安全性,5.1.1 數(shù)據(jù)庫(kù)安全性的含義 數(shù)據(jù)庫(kù)的安全性是指保護(hù)數(shù)據(jù)庫(kù)以防止非法使用所造成的數(shù)據(jù)泄露、更改或破壞。 安全性問(wèn)題有許多方面 : (1)法律、社會(huì)和倫理方面時(shí)問(wèn)題。 (2)物理控制方面的問(wèn)題。 (3)政策方面的問(wèn)題。 (4)運(yùn)行方面的問(wèn)題。 (5)硬件控制方面的問(wèn)題。 (6)操作系統(tǒng)安全性方面的問(wèn)題。 (7)數(shù)據(jù)庫(kù)系統(tǒng)本身的安全性方面的問(wèn)題。,北京林業(yè)大學(xué) 軟件教研室,4,5.1.2 安全性控制的

2、一般方法,安全性控制是指要盡可能地杜絕所有可能的數(shù)據(jù)庫(kù)非法訪問(wèn)。,圖5-1 安全控制模型,北京林業(yè)大學(xué) 軟件教研室,5,安全性控制的一般方法 用戶標(biāo)識(shí)和鑒定 用戶存取權(quán)限控制 定義視圖 數(shù)據(jù)加密 審計(jì)(Audit),北京林業(yè)大學(xué) 軟件教研室,6,用戶標(biāo)識(shí)和鑒定 用戶標(biāo)識(shí)和鑒定是由系統(tǒng)提供一定的方式讓用戶標(biāo)識(shí)自己的名字或身份,系統(tǒng)內(nèi)部記錄著所有合法用戶的標(biāo)識(shí),每次用戶要求進(jìn)入系統(tǒng)時(shí),由系統(tǒng)進(jìn)行核實(shí),通過(guò)鑒定后才提供機(jī)器的使用權(quán)。 用戶標(biāo)識(shí)和鑒定的方法 用一個(gè)用戶名或用戶標(biāo)識(shí)符來(lái)標(biāo)明用戶的身份,系統(tǒng)以此來(lái)鑒別用戶的合法性。 用戶標(biāo)識(shí)符是用戶公開(kāi)的標(biāo)識(shí),它不足以成為鑒別用戶身份的憑證。 通過(guò)用戶名和

3、口令來(lái)鑒定用戶的方法簡(jiǎn)單易行,但該方法在使用時(shí),由于用戶名和口令的產(chǎn)生和使用比較簡(jiǎn)單,也容易被竊取,因此還可采用更復(fù)雜的方法。,北京林業(yè)大學(xué) 軟件教研室,7,授權(quán)表,用戶標(biāo)識(shí),數(shù)據(jù)對(duì)象,操作類型,用戶存取權(quán)限控制 用戶存取權(quán)限指的是不同的用戶對(duì)于不同的數(shù)據(jù)對(duì)象允許執(zhí)行的操作權(quán)限。 在數(shù)據(jù)庫(kù)系統(tǒng)中,定義用戶存取權(quán)限稱為授權(quán) 。 這些授權(quán)定義經(jīng)過(guò)編譯后以一張授權(quán)表的形式存放在數(shù)據(jù)字典中。,北京林業(yè)大學(xué) 軟件教研室,8,關(guān)系系統(tǒng)中的存取權(quán)限,北京林業(yè)大學(xué) 軟件教研室,9,對(duì)于授權(quán)表,一個(gè)衡量授權(quán)機(jī)制的重要指標(biāo)就是授權(quán)粒度,即可以定義的數(shù)據(jù)對(duì)象的范圍,在關(guān)系數(shù)據(jù)庫(kù)中,授權(quán)粒度包括關(guān)系、記錄或?qū)傩浴?授

4、權(quán)粒度越細(xì),授權(quán)子系統(tǒng)就越靈活,能夠提供的安全性就越完善。,北京林業(yè)大學(xué) 軟件教研室,10,數(shù)據(jù)加密 加密的基本思想是根據(jù)一定的算法將原始數(shù)據(jù)(加密成為不可直接識(shí)別的格式,數(shù)據(jù)以密文的形式存儲(chǔ)和傳輸。 加密方法: 替換方法,該方法使用密鑰將明文中的每一個(gè)字符轉(zhuǎn)換為密文中的字符。 轉(zhuǎn)換方法,該方法將明文中的字符按不同的順序重新排列。 通常將這兩種方法結(jié)合起來(lái)使用,就可以達(dá)到相當(dāng)高的安全程度。,北京林業(yè)大學(xué) 軟件教研室,11,審計(jì) 審計(jì)功能是一種監(jiān)視措施,它跟蹤記錄有關(guān)數(shù)據(jù)的訪問(wèn)活動(dòng)。 審計(jì)追蹤把用戶對(duì)數(shù)據(jù)庫(kù)的所有操作自動(dòng)記錄下來(lái),存放在一個(gè)特殊文件中,即審計(jì)日志中。 記錄的內(nèi)容一般包括:操作類型

5、(如修改、查詢等),操作終端標(biāo)識(shí)與操作者標(biāo)識(shí),操作日期和時(shí)間,操作所涉及到的相關(guān)數(shù)據(jù)(如基本表、視圖、記錄、屬性等),數(shù)據(jù)的前象和后象等。,北京林業(yè)大學(xué) 軟件教研室,12,5.1.3 SQL Server2000的數(shù)據(jù)安全性機(jī)制,為了實(shí)現(xiàn)安全性,SQL Server 2000對(duì)用戶的訪問(wèn)進(jìn)行兩個(gè)階段的檢驗(yàn): 身份驗(yàn)證階段(Authentication):身份驗(yàn)證機(jī)制決定了用戶能否連接(或登錄)到SQL Server 2000服務(wù)器。 權(quán)限許可確認(rèn)階段(Permission Validation):權(quán)限許可機(jī)制決定了經(jīng)過(guò)了身份驗(yàn)證后的用戶連接到SQL Server 2000服務(wù)器可以執(zhí)行的具體操

6、作,包括服務(wù)器上的操作和具體的數(shù)據(jù)庫(kù)上的操作。,北京林業(yè)大學(xué) 軟件教研室,13,5.1.4 SQL Server2000的身份驗(yàn)證模式,Windows身份驗(yàn)證模式 在該驗(yàn)證模式下,SQL Server 2000使用Windows操作系統(tǒng)來(lái)對(duì)登錄的賬號(hào)進(jìn)行身份驗(yàn)證,支持Windows操作系統(tǒng)的密碼策略和鎖寫(xiě)策略,賬號(hào)和密碼保存在Windows操作系統(tǒng)的賬戶數(shù)據(jù)庫(kù)中。 Windows驗(yàn)證模式下主要有以下優(yōu)點(diǎn): (1)數(shù)據(jù)庫(kù)管理員的工作可以集中在管理數(shù)據(jù)庫(kù)方面,而不是管理用戶賬戶。 (2)Windows有著更強(qiáng)的用戶賬戶管理工具。可以設(shè)置賬戶鎖定、密碼期限等。 (3)Windows的組策略支持多個(gè)用

7、戶同時(shí)被授權(quán)訪問(wèn)SQL Server。 如果網(wǎng)絡(luò)中有多個(gè)SQL Server服務(wù)器,就可以選擇通過(guò)Windows身份驗(yàn)證機(jī)制來(lái)完成。,北京林業(yè)大學(xué) 軟件教研室,14,TCP/IP Sockets,命名管道,SQL Server身份驗(yàn)證模式,Windows身份驗(yàn)證模式,混合身份驗(yàn)證模式 混合身份驗(yàn)證模式允許以SQL Server身份驗(yàn)證模式或者Windows身份驗(yàn)證模式來(lái)進(jìn)行驗(yàn)證。 混合驗(yàn)證模式具有以下優(yōu)點(diǎn): (1)創(chuàng)建了Windows之上的另外一個(gè)安全層次。 (2)支持更大范圍的用戶,如非Windows客戶、Novell網(wǎng)用戶等。 (3)一個(gè)應(yīng)用程序可以使用單個(gè)的SQL Server登錄賬號(hào)和

8、口令。,北京林業(yè)大學(xué) 軟件教研室,15,5.1.5 SQL Server的登錄賬號(hào)和服務(wù)器角色,在SQL Server中,賬號(hào)有兩種:一種是登錄服務(wù)器的登錄賬號(hào)(Login Name),另外一種是使用數(shù)據(jù)庫(kù)的用戶賬號(hào)(User Name)。 查看服務(wù)器的登錄賬號(hào) 使用Enterprise Manager 進(jìn)入Enterprise Manager,展開(kāi)“SQL Server組”,找到所要連接的SQL Server服務(wù)器;展開(kāi)該服務(wù)器對(duì)應(yīng)的文件夾,再展開(kāi)“安全性”文件夾,單擊“登錄”選項(xiàng),即可看到系統(tǒng)創(chuàng)建的默認(rèn)登錄賬號(hào)及已建立的其他登錄賬號(hào) 。 使用存儲(chǔ)過(guò)程 EXEC sp_helplogins,

9、北京林業(yè)大學(xué) 軟件教研室,16,創(chuàng)建服務(wù)器的登錄賬號(hào) 利用Enterprise Manage 利用存儲(chǔ)過(guò)程 EXEC sp_addlogin 登錄賬號(hào)名稱, 密碼, 默認(rèn)數(shù)據(jù)庫(kù)名, 使用的語(yǔ)言 例5-1 建立了一個(gè)名稱為Mike的登錄賬號(hào)。 EXEC sp_addlogin Mike, m1934, Teach, NULL 更改登錄賬號(hào)的屬性 使用存儲(chǔ)過(guò)程sp_password可改變登錄賬號(hào)的密碼 EXEC sp_password 舊密碼, 新密碼, 登錄賬號(hào)名稱 使用存儲(chǔ)過(guò)程sp_addsrvrolemember可以將登錄賬號(hào)加入服務(wù)器的角色中 EXEC sp_addsrvrolemembe

10、r 登錄賬號(hào), 服務(wù)器角色名稱,北京林業(yè)大學(xué) 軟件教研室,17,刪除登錄賬號(hào) 使用Enterprise Manager 使用存儲(chǔ)過(guò)程 sp_droplogin 登錄賬號(hào) SQL Server的服務(wù)器角色 角色(Role)是對(duì)權(quán)限集中管理的一種機(jī)制,將不同的權(quán)限組合在一起就形成了一種角色。 服務(wù)器角色是執(zhí)行服務(wù)器級(jí)管理操作的用戶權(quán)限的集合。,北京林業(yè)大學(xué) 軟件教研室,18,5.1.6 SQL Server的數(shù)據(jù)庫(kù)用戶賬號(hào)和數(shù)據(jù)庫(kù)角色,數(shù)據(jù)庫(kù)的用戶賬號(hào) 用戶賬號(hào)要在特定的數(shù)據(jù)庫(kù)內(nèi)創(chuàng)建,并關(guān)聯(lián)一個(gè)登錄賬號(hào)(當(dāng)一個(gè)數(shù)據(jù)庫(kù)的用戶創(chuàng)建時(shí),必須關(guān)聯(lián)一個(gè)登錄賬號(hào))。 每個(gè)登錄賬號(hào)在一個(gè)數(shù)據(jù)庫(kù)中只能有一個(gè)用戶賬

11、號(hào),但每個(gè)登錄賬號(hào)可以在不同的數(shù)據(jù)庫(kù)中各有一個(gè)用戶賬號(hào)。 注意: master和tempdb數(shù)據(jù)庫(kù)中的guest用戶賬號(hào)不能刪除,而其他數(shù)據(jù)庫(kù)中的guest用戶賬號(hào)可以刪除。 登錄賬號(hào)具有對(duì)某個(gè)數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限,并不表示該登錄賬號(hào)對(duì)該數(shù)據(jù)庫(kù)具有存取的權(quán)限。,北京林業(yè)大學(xué) 軟件教研室,19,查看數(shù)據(jù)庫(kù)的用戶賬號(hào) 利用存儲(chǔ)過(guò)程 EXEC sp_helpuser 創(chuàng)建數(shù)據(jù)庫(kù)的用戶賬號(hào) 使用存儲(chǔ)過(guò)程 sp_adduser 登錄賬號(hào), 用戶賬號(hào), 所屬的數(shù)據(jù)庫(kù)角色 設(shè)置數(shù)據(jù)庫(kù)用戶賬號(hào)的權(quán)限 對(duì)數(shù)據(jù)庫(kù)對(duì)象的操作,具體含義如下 SELECT:對(duì)表或者視圖進(jìn)行查詢。 INSERT:在表或者視圖中插入記錄。 U

12、PDATE:對(duì)表或者視圖中的數(shù)據(jù)進(jìn)行修改。 DELETE:刪除表或者視圖中的數(shù)據(jù)。 EXEC:執(zhí)行存儲(chǔ)過(guò)程。 DRI:可對(duì)表的外鍵加以限制,以完成表的參照完整性。,北京林業(yè)大學(xué) 軟件教研室,20,刪除數(shù)據(jù)庫(kù)用戶賬號(hào) 存儲(chǔ)過(guò)程 sp_dropuser 用戶賬號(hào) 數(shù)據(jù)庫(kù)角色 數(shù)據(jù)庫(kù)角色是對(duì)數(shù)據(jù)庫(kù)對(duì)象操作的權(quán)限的集合。 數(shù)據(jù)庫(kù)角色可分為兩種: 固定的標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)角色(系統(tǒng)創(chuàng)建的) 應(yīng)用程序角色 當(dāng)我們打算讓某些用戶只能通過(guò)特定的應(yīng)用程序間接地存取數(shù)據(jù)庫(kù)中的數(shù)據(jù)而不是直接地存取數(shù)據(jù)庫(kù)數(shù)據(jù)時(shí),就應(yīng)該考慮使用應(yīng)用程序角色。,北京林業(yè)大學(xué) 軟件教研室,21,北京林業(yè)大學(xué) 軟件教研室,22,創(chuàng)建新的數(shù)據(jù)庫(kù)角色

13、sp_addrole 角色名, 擁有者 刪除數(shù)據(jù)庫(kù)角色 sp_droprole 角色名 創(chuàng)建數(shù)據(jù)庫(kù)應(yīng)用程序角色 sp_setapprole 應(yīng)用程序角色名, 密碼 用戶和角色的權(quán)限問(wèn)題 用戶權(quán)限繼承角色的權(quán)限 用戶分屬不同角色,北京林業(yè)大學(xué) 軟件教研室,23,5.2 完整性控制,5.2.1 數(shù)據(jù)庫(kù)完整性的含義 數(shù)據(jù)庫(kù)的完整性是指保護(hù)數(shù)據(jù)庫(kù)中數(shù)據(jù)的正確性、有效性和相容性,防止錯(cuò)誤的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫(kù)造成無(wú)效操作。 數(shù)據(jù)庫(kù)的完整性是指防止合法用戶使用數(shù)據(jù)庫(kù)時(shí)向數(shù)據(jù)庫(kù)中加入不符合語(yǔ)義的數(shù)據(jù)。完整性措施的防范對(duì)象是不合語(yǔ)義的數(shù)據(jù)。,北京林業(yè)大學(xué) 軟件教研室,24,5.2.2 完整性規(guī)則的組成,完整性規(guī)則主

14、要由以下三部分構(gòu)成。 (1)觸發(fā)條件:規(guī)定系統(tǒng)什么時(shí)候使用規(guī)則來(lái)檢查數(shù)據(jù)。 (2)約束條件:規(guī)定系統(tǒng)檢查用戶發(fā)出的操作請(qǐng)求違背了什么樣的完整性約束條件。 (3)違約響應(yīng):規(guī)定系統(tǒng)如果發(fā)現(xiàn)用戶發(fā)出的操作請(qǐng)求違背了完整性約束條件,應(yīng)該采取一定的動(dòng)作來(lái)保證數(shù)據(jù)的完整性,即違約時(shí)要做的事情。 完整性規(guī)則從執(zhí)行時(shí)間上可分為立即執(zhí)行約束(Immediate Constraints)和延遲執(zhí)行約束(Deferred Constraints)。,北京林業(yè)大學(xué) 軟件教研室,25,一條完整性規(guī)則可以用一個(gè)五元組(D,O,A,C,P)來(lái)形式化地表示 D(Data):代表約束作用的數(shù)據(jù)對(duì)象,可以是關(guān)系、元組和列三種對(duì)

15、象; O(Operation):代表觸發(fā)完整性檢查的數(shù)據(jù)庫(kù)操作,即當(dāng)用戶發(fā)出什么操作請(qǐng)求時(shí)需要檢查該完整性規(guī)則,是立即執(zhí)行還是延遲執(zhí)行; A(Assertion):代表數(shù)據(jù)對(duì)象必須滿足的語(yǔ)義約束,這是規(guī)則的主體; C(Condition):代表選擇A作用的數(shù)據(jù)對(duì)象值的謂詞; P(Procedure):代表違反完整性規(guī)則時(shí)觸發(fā)執(zhí)行的操作過(guò)程。,北京林業(yè)大學(xué) 軟件教研室,26,完整性約束條件是完整性控制機(jī)制的核心。,例如,對(duì)于“學(xué)號(hào)(SNo)不能為空”的這條完整性約束中,D、O、A、C、P的含義分別如下: D:代表約束作用的數(shù)據(jù)對(duì)象為SNo屬性; O:當(dāng)用戶插入或修改數(shù)據(jù)時(shí)需要檢查該完整性規(guī)則;

16、A:SNo不能為空; C:A可作用于所有記錄的SNo屬性; P:拒絕執(zhí)行用戶請(qǐng)求。,北京林業(yè)大學(xué) 軟件教研室,27,5.2.3 完整性約束條件的分類,從約束條件使用的對(duì)象分,值的約束和結(jié)構(gòu)的約束 值的約束即對(duì)數(shù)據(jù)類型、數(shù)據(jù)格式、取值范圍和空值等進(jìn)行規(guī)定。 (1)對(duì)數(shù)據(jù)類型的約束,包括數(shù)據(jù)的類型、長(zhǎng)度、單位和精度等。 (2)對(duì)數(shù)據(jù)格式的約束。 (3)對(duì)取值范圍的約束。 (4)對(duì)空值的約束。 結(jié)構(gòu)的約束即對(duì)數(shù)據(jù)之間聯(lián)系的約束。 (1)函數(shù)依賴約束。 (2)實(shí)體完整性約束。 (3)參照完整性約束。 (4)統(tǒng)計(jì)約束。,北京林業(yè)大學(xué) 軟件教研室,28,從約束對(duì)象的狀態(tài)分,靜態(tài)約束和動(dòng)態(tài)約束 靜態(tài)約束 靜

17、態(tài)約束是指對(duì)數(shù)據(jù)庫(kù)每一個(gè)確定狀態(tài)所應(yīng)滿足的約束條件,是反映數(shù)據(jù)庫(kù)狀態(tài)合理性的約束,這是最重要的一類完整性約束。上面介紹的值的約束和結(jié)構(gòu)的約束均屬于靜態(tài)約束。 動(dòng)態(tài)約束 動(dòng)態(tài)約束是指數(shù)據(jù)庫(kù)從一種狀態(tài)轉(zhuǎn)變?yōu)榱硪环N狀態(tài)時(shí),新舊值之間所應(yīng)滿足的約束條件,動(dòng)態(tài)約束反映的是數(shù)據(jù)庫(kù)狀態(tài)變遷的約束。 例如,學(xué)生年齡在更改時(shí)只能增長(zhǎng),職工工資在調(diào)整時(shí)不得低于其原來(lái)的工資。,北京林業(yè)大學(xué) 軟件教研室,29,5.2.4 數(shù)據(jù)完整性的實(shí)施,聲明式數(shù)據(jù)完整性 聲明式數(shù)據(jù)完整性是將數(shù)據(jù)所需符合的條件融入到對(duì)象的定義中,這樣SQL Server會(huì)自動(dòng)確保數(shù)據(jù)符合事先制定的條件。 聲明式數(shù)據(jù)完整性的特點(diǎn)是: 通過(guò)針對(duì)表和字段

18、定義聲明的約束,可使聲明式數(shù)據(jù)完整性成為數(shù)據(jù)定義的一部分。 使用約束、默認(rèn)值與規(guī)則實(shí)施聲明式數(shù)據(jù)完整性。,北京林業(yè)大學(xué) 軟件教研室,30,程序化數(shù)據(jù)完整性 如果所需符合的條件以及該條件的實(shí)施均通過(guò)所編寫(xiě)的程序代碼完成,則這種形式的數(shù)據(jù)完整性稱為程序化數(shù)據(jù)完整性。 程序化數(shù)據(jù)完整性的特點(diǎn)是: 程序化數(shù)據(jù)完整性可以通過(guò)相關(guān)的程序語(yǔ)言及工具在客戶端或服務(wù)器端實(shí)施。 SQL Server可以使用存儲(chǔ)過(guò)程或觸發(fā)器實(shí)施程序化數(shù)據(jù)完整性。,北京林業(yè)大學(xué) 軟件教研室,31,5.2.5 規(guī)則,規(guī)則(Rule)就是數(shù)據(jù)庫(kù)對(duì)存儲(chǔ)在表中的列或用戶自定義數(shù)據(jù)類型中的值的規(guī)定和限制。 規(guī)則與其作用的表或用戶自定義數(shù)據(jù)類型

19、是相互獨(dú)立的,即表或用戶自定義對(duì)象的刪除、修改不會(huì)對(duì)與之相連的規(guī)則產(chǎn)生影響。 創(chuàng)建規(guī)則 CREATE RULE rule_name AS condition_expression 例5-12 創(chuàng)建學(xué)生年齡規(guī)則。 CREATE RULE age_rule AS age = 18 and age = 50,北京林業(yè)大學(xué) 軟件教研室,32,查看規(guī)則 用存儲(chǔ)過(guò)程sp_helptext查看規(guī)則 sp_helptext objname = name 規(guī)則的綁定與松綁 創(chuàng)建規(guī)則后,規(guī)則僅僅是一個(gè)存在于數(shù)據(jù)庫(kù)中的對(duì)象,并未發(fā)生作用。需要將規(guī)則與數(shù)據(jù)庫(kù)表或用戶自定義對(duì)象聯(lián)系起來(lái),才能達(dá)到創(chuàng)建規(guī)則的目的。 所謂綁

20、定就是指定規(guī)則作用于哪個(gè)表的哪一列或哪個(gè)用戶自定義數(shù)據(jù)類型。 解除規(guī)則與對(duì)象的綁定稱為“松綁”。,北京林業(yè)大學(xué) 軟件教研室,33,規(guī)則對(duì)已經(jīng)輸入表中的數(shù)據(jù)不起作用。,用存儲(chǔ)過(guò)程sp_bindrule綁定規(guī)則 sp_bindrule rulename = rule,objname = object_name, futureonly 例5-14 綁定規(guī)則age_rule 到S表的字段Age。 EXEC sp_bindrule age_rule, S.Age 用存儲(chǔ)過(guò)程sp_unbindrule解除規(guī)則的綁定 sp_unbindrule objname = object_name,futureonl

21、y 例5-15 解除已綁定到S表的字段Age的規(guī)則age_rule。 EXEC sp_unbindrule S.Age,北京林業(yè)大學(xué) 軟件教研室,34,在刪除一個(gè)規(guī)則前必須先將與其綁定的對(duì)象解除綁定。,刪除規(guī)則 使用DROP RULE命令刪除規(guī)則 DROP RULE rule_name ,.n 例5-16 刪除age_rule規(guī)則。 DROP RULE age_rule,北京林業(yè)大學(xué) 軟件教研室,35,5.2.6 默認(rèn),默認(rèn)(Default)是向用戶輸入記錄時(shí)沒(méi)有指定具體數(shù)據(jù)的列中自動(dòng)插入的數(shù)據(jù)。 表的一列或一個(gè)用戶自定義數(shù)據(jù)類型只能與一個(gè)默認(rèn)綁定。 創(chuàng)建默認(rèn) CREATE DEFAULT d

22、efault_name AS constant_expression 例5-17 創(chuàng)建出生日期默認(rèn)birthday_defa。 CREATE DEFAULT birthday_defa AS 1978-1-1,北京林業(yè)大學(xué) 軟件教研室,36,查看和修改默認(rèn) 使用sp_helptext存儲(chǔ)過(guò)程可以查看默認(rèn)的信息。 例5-18 查看默認(rèn)birthday_defa。 EXEC sp_helptext birthday_defa 默認(rèn)的綁定與松綁 用存儲(chǔ)過(guò)程sp_bindefault 綁定默認(rèn) sp_bindefault defname = default,objname = object_name,

23、 futureonly 用存儲(chǔ)過(guò)程sp_unbindefault 解除默認(rèn)的綁定 sp_unbindefault objname = object_name ,futureonly,北京林業(yè)大學(xué) 軟件教研室,37,例5-19 綁定默認(rèn)birthday_defa到數(shù)據(jù)表S的Birthday列上。 EXEC sp_bindefault birthday_defa, S.Birthday 例5-20 解除默認(rèn)birthday_defa與表S的Birthday列的綁定。 EXEC sp_unbindefault S.Birthday 刪除默認(rèn) 使用DROP RULE命令刪除默認(rèn) DROP DEFAUL

24、T default_name ,.n 例5-21 刪除學(xué)生生日默認(rèn)birthday_defa。 DROP DEFAULT birthday_defa,在刪除一個(gè)默認(rèn)前必須先將與其綁定的對(duì)象解除綁定,北京林業(yè)大學(xué) 軟件教研室,38,5.3 并發(fā)控制與封鎖,5.3.1 數(shù)據(jù)庫(kù)并發(fā)性的含義 為了充分利用數(shù)據(jù)庫(kù)資源,很多時(shí)候數(shù)據(jù)庫(kù)用戶都是對(duì)數(shù)據(jù)庫(kù)系統(tǒng)并行存取數(shù)據(jù),這樣就會(huì)發(fā)生多個(gè)用戶并發(fā)存取同一數(shù)據(jù)塊的情況,如果對(duì)并發(fā)操作不加控制可能會(huì)產(chǎn)生不正確的數(shù)據(jù),破壞數(shù)據(jù)的完整性。 并發(fā)控制就是解決這類問(wèn)題,以保持?jǐn)?shù)據(jù)庫(kù)中數(shù)據(jù)的一致性,即在任何一個(gè)時(shí)刻數(shù)據(jù)庫(kù)都將以相同的形式給用戶提供數(shù)據(jù)。,北京林業(yè)大學(xué) 軟件教

25、研室,39,事務(wù)是數(shù)據(jù)庫(kù)系統(tǒng)中執(zhí)行的一個(gè)工作單位,它是由用戶定義的一組操作序列。 一個(gè)事務(wù)可以是一組SQL語(yǔ)句、一條SQL語(yǔ)句或整個(gè)程序,一個(gè)應(yīng)用程序可以包括多個(gè)事務(wù)。 定義事務(wù)的語(yǔ)句有三條: BEGIN TRANSACTION COMMIT ROLLBACK,5.3.2 事務(wù)(Transaction),事務(wù)的開(kāi)始,事務(wù)的提交,事務(wù)的回滾,北京林業(yè)大學(xué) 軟件教研室,40,事務(wù)的特征 原子性(Atomicity) 一個(gè)事務(wù)是一個(gè)不可分割的工作單位,事務(wù)在執(zhí)行時(shí),應(yīng)該遵守“要么不做,要么全做”(Nothing or All)的原則,即不允許完成部分的事務(wù)。 一致性(Consistency) 事務(wù)對(duì)

26、數(shù)據(jù)庫(kù)的作用是數(shù)據(jù)庫(kù)從一個(gè)一致?tīng)顟B(tài)轉(zhuǎn)變到另一個(gè)一致?tīng)顟B(tài)。所謂數(shù)據(jù)庫(kù)的一致?tīng)顟B(tài)是指數(shù)據(jù)庫(kù)中的數(shù)據(jù)滿足完整性約束。 隔離性(Isolation) 如果多個(gè)事務(wù)并發(fā)地執(zhí)行,應(yīng)像各個(gè)事務(wù)獨(dú)立執(zhí)行一樣,一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾。 持久性(Durability) 持久性指一個(gè)事務(wù)一旦提交,它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就應(yīng)該是持久的,即使數(shù)據(jù)庫(kù)因故障而受到破壞,DBMS也應(yīng)該能夠恢復(fù)。,北京林業(yè)大學(xué) 軟件教研室,41,5.3.3 并發(fā)操作與數(shù)據(jù)的不一致性,例5-22 并發(fā)取款操作。假設(shè)存款余額R=1000元,甲事務(wù)T1取走存款100元,乙事務(wù)T2取走存款200元,如果正常操作,即甲事務(wù)T1執(zhí)行完畢再執(zhí)行乙

27、事務(wù)T2,存款余額更新后應(yīng)該是700元。但是如果按照如下順序操作,則會(huì)有不同的結(jié)果: (1)甲事務(wù)T1讀取存款余額R=1000元; (2)乙事務(wù)T2讀取存款余額R=1000元; (3)甲事務(wù)T1取走存款100元,修改存款余額R=R-100=900,把R=900寫(xiě)回到數(shù)據(jù)庫(kù); (4)乙事務(wù)T2取走存款200元,修改存款余額R=R-200=800,把R=800寫(xiě)回到數(shù)據(jù)庫(kù); 結(jié)果兩個(gè)事務(wù)共取走存款300元,而數(shù)據(jù)庫(kù)中的存款卻只少了200元。得到這種錯(cuò)誤的結(jié)果是由甲乙兩個(gè)事務(wù)并發(fā)操作引起的。,北京林業(yè)大學(xué) 軟件教研室,42,數(shù)據(jù)庫(kù)的并發(fā)操作導(dǎo)致的數(shù)據(jù)庫(kù)不一致性主要有以下三種: 丟失更新(Lost U

28、pdate) 當(dāng)兩個(gè)事務(wù)T1和T2讀入同一數(shù)據(jù),并發(fā)執(zhí)行修改操作時(shí),T2把T1或T1把T2的修改結(jié)果覆蓋掉,造成了數(shù)據(jù)的丟失更新問(wèn)題,導(dǎo)致數(shù)據(jù)的不一致。 污讀(Dirty Read ) 事務(wù)T1更新了數(shù)據(jù)R,事務(wù)T2讀取了更新后的數(shù)據(jù)R,事務(wù)T1由于某種原因被撤銷,修改無(wú)效,數(shù)據(jù)R恢復(fù)原值。事務(wù)T2得到的數(shù)據(jù)與數(shù)據(jù)庫(kù)的內(nèi)容不一致,這種情況稱為“污讀”。 不可重讀(Unrepeatable Read) 事務(wù)T1讀取了數(shù)據(jù)R,事務(wù)T2讀取并更新了數(shù)據(jù)R,當(dāng)事務(wù)T1再讀取數(shù)據(jù)R以進(jìn)行核對(duì)時(shí),得到的兩次讀取值不一致,這種情況稱為“不可重讀”。,北京林業(yè)大學(xué) 軟件教研室,43,5.3.4 封鎖,實(shí)現(xiàn)并發(fā)

29、控制的方法主要有兩種:封鎖(Lock)技術(shù)和時(shí)標(biāo)(Timestamping)技術(shù)。 封鎖類型(Lock Type) 所謂封鎖就是當(dāng)一個(gè)事務(wù)在對(duì)某個(gè)數(shù)據(jù)對(duì)象(可以是數(shù)據(jù)項(xiàng)、記錄、數(shù)據(jù)集以至整個(gè)數(shù)據(jù)庫(kù))進(jìn)行操作之前,必須獲得相應(yīng)的鎖,以保證數(shù)據(jù)操作的正確性和一致性。,北京林業(yè)大學(xué) 軟件教研室,44,基本的封鎖類型有兩種 排它型封鎖(Exclusive Lock) 排它型封鎖又稱寫(xiě)封鎖,簡(jiǎn)稱為X封鎖,它采用的原理是禁止并發(fā)操作。 共享封鎖(Share Lock) 共享封鎖又稱讀封鎖,簡(jiǎn)稱為S鎖,它采用的原理是允許其他用戶對(duì)同一數(shù)據(jù)對(duì)象進(jìn)行查詢,但不能對(duì)該數(shù)據(jù)對(duì)象進(jìn)行修改。 封鎖協(xié)議(Lock Pro

30、tocol) 封鎖可以保證合理地進(jìn)行并發(fā)控制,保證數(shù)據(jù)的一致性。 在封鎖時(shí),要考慮一定的封鎖規(guī)則,例如,何時(shí)開(kāi)始封鎖、封鎖多長(zhǎng)時(shí)間、何時(shí)釋放等,這些封鎖規(guī)則稱為封鎖協(xié)議。,北京林業(yè)大學(xué) 軟件教研室,45,上面講述過(guò)的并發(fā)操作所帶來(lái)的丟失更新、污讀和不可重讀等數(shù)據(jù)不一致性問(wèn)題,可以通過(guò)三級(jí)封鎖協(xié)議在不同程度上給予解決 : 一級(jí)封鎖協(xié)議 事務(wù)T在修改數(shù)據(jù)對(duì)象之前必須對(duì)其加X(jué)鎖,直到事務(wù)結(jié)束。 二級(jí)封鎖協(xié)議 在一級(jí)封鎖協(xié)議的基礎(chǔ)上,另外加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對(duì)其加S鎖,讀完后釋放S鎖。 三級(jí)封鎖協(xié)議 在一級(jí)封鎖協(xié)議的基礎(chǔ)上,另外加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對(duì)其加S鎖,讀完后并不釋放S鎖

31、,而直到事務(wù)T結(jié)束才釋放。,北京林業(yè)大學(xué) 軟件教研室,46,封鎖粒度(Lock Granularity) 封鎖粒度指封鎖的單位。 根據(jù)對(duì)數(shù)據(jù)的不同處理,封鎖的對(duì)象可以是這樣一些邏輯單元:字段、記錄、表、數(shù)據(jù)庫(kù)等,封鎖的數(shù)據(jù)對(duì)象的大小叫封鎖粒度。 封鎖粒度越小,系統(tǒng)中能夠被封鎖的對(duì)象就越多,并發(fā)度越高,但封鎖機(jī)構(gòu)復(fù)雜,系統(tǒng)開(kāi)銷也就越大。 封鎖粒度越大,系統(tǒng)中能夠被封鎖的對(duì)象就越少,并發(fā)度越低,封鎖機(jī)構(gòu)越簡(jiǎn)單,相應(yīng)系統(tǒng)開(kāi)銷也就越小。,北京林業(yè)大學(xué) 軟件教研室,47,死鎖和活鎖 活鎖(Livelock) 當(dāng)某個(gè)事務(wù)請(qǐng)求對(duì)某一數(shù)據(jù)進(jìn)行排它性封鎖時(shí),由于其他事務(wù)對(duì)該數(shù)據(jù)的操作而使這個(gè)事務(wù)處于永久等待狀態(tài)

32、,這種狀態(tài)稱為活鎖。 死鎖(Deadlock) 在同時(shí)處于等待狀態(tài)的兩個(gè)或多個(gè)事務(wù)中,其中的每一個(gè)在它能夠進(jìn)行之前,都等待著某個(gè)數(shù)據(jù),而這個(gè)數(shù)據(jù)已被它們中的某個(gè)事務(wù)所封鎖,這種狀態(tài)稱為死鎖。 死鎖產(chǎn)生的條件 : 互斥條件:一個(gè)數(shù)據(jù)對(duì)象一次只能被一個(gè)事務(wù)所使用,即對(duì)數(shù)據(jù)的封鎖采用排它式。 不可搶占條件:一個(gè)數(shù)據(jù)對(duì)象只能被占有它的事務(wù)所釋放,而不能被別的事務(wù)強(qiáng)行搶占。 部分分配條件:一個(gè)事務(wù)已經(jīng)封鎖分給它的數(shù)據(jù)對(duì)象,但仍然要求封鎖其他數(shù)據(jù)。 循環(huán)等待條件:允許等待其他事務(wù)釋放數(shù)據(jù)對(duì)象,系統(tǒng)處于加鎖請(qǐng)求相互等待的狀態(tài)。,北京林業(yè)大學(xué) 軟件教研室,48,數(shù)據(jù)R,T1,T2,事務(wù)依賴圖,死鎖的預(yù)防 一次

33、加鎖法: 一每個(gè)事物必須將所有要使用的數(shù)據(jù)對(duì)象全部依次加鎖,并要求加鎖成功,只要一個(gè)加鎖不成功,表示本次加鎖失敗,則應(yīng)該立即釋放所有加鎖成功的數(shù)據(jù)對(duì)象,然后重新開(kāi)始加鎖。 順序加鎖法: 是預(yù)先對(duì)所有可加鎖的數(shù)據(jù)對(duì)象規(guī)定一個(gè)加鎖順序,每個(gè)事務(wù)都需要按此順序加鎖,在釋放時(shí),按逆序進(jìn)行。 死鎖的診斷與解除 如果在事務(wù)依賴圖中沿著箭頭方向存在一個(gè)循環(huán),那么死鎖的條件就形成了,系統(tǒng)就會(huì)出現(xiàn)死鎖。 選擇一個(gè)處理死鎖代價(jià)最小的事務(wù),將其撤銷以解除死鎖。,北京林業(yè)大學(xué) 軟件教研室,49,5.4 數(shù)據(jù)庫(kù)的恢復(fù),系統(tǒng)必須具有檢測(cè)故障并把數(shù)據(jù)從錯(cuò)誤狀態(tài)中恢復(fù)到某一正確狀態(tài)的功能,這就是數(shù)據(jù)庫(kù)的恢復(fù)。 數(shù)據(jù)庫(kù)恢復(fù)的基本原理就是利用存儲(chǔ)在系統(tǒng)其他地方的冗余數(shù)據(jù)來(lái)修復(fù)。 恢復(fù)系統(tǒng)應(yīng)該提供兩種類型的功能: 生成冗余數(shù)據(jù) 對(duì)可能發(fā)生的故障作某些準(zhǔn)備 冗余重建 利用這些冗余數(shù)據(jù)恢復(fù)數(shù)據(jù)庫(kù),登記日志文件,數(shù)據(jù)轉(zhuǎn)儲(chǔ),北京林業(yè)大學(xué) 軟件教研室,50,登記日志文件 日志文件是用來(lái)記錄事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新操作的文件。 典型的日志文件主要包含以下內(nèi)容: (1)更新數(shù)據(jù)庫(kù)的事務(wù)標(biāo)識(shí)(標(biāo)明是哪個(gè)事務(wù)); (2)操作的類型(插入、刪除或修改); (3)操作對(duì)象; (4)更新前數(shù)據(jù)的舊值(對(duì)于插入操作,沒(méi)有舊值

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論