freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

第6章計算機安全技術(編輯修改稿)

2025-02-07 16:23 本頁面
 

【文章內容簡介】 相應的辦法進行管理和控制。 并發(fā)控制的主要方法是封鎖技術( Locking)。 當事務 1修改數據時,將數據封鎖,這樣在事務 1讀取和修改數據時,其它的事務就不能對數據進行讀取和修改,直到事務 1解除封鎖。 基本的封鎖類型叫做排它型鎖,又稱 X封鎖。如果事務 T向系統(tǒng)申請得到數據 A的 X封鎖權,則只允許事務 T對數據 A進行讀取和修改,其他一切事務對數據 A的封鎖申請只能到事務 T將數據修改完畢釋放封鎖才能成功,其間狀態(tài)只能是等待狀態(tài)。 利用 X封鎖可以解決表 、 、 。見表 : (參見教材 204頁) 死鎖、活鎖和可串行化 死鎖與活鎖 封鎖的控制方法有可能會引起死鎖和活鎖的問題。 某個事務永遠處于等待狀態(tài)稱為活鎖,例如:事務1操作數據 A時的請求封鎖后,事務 2和事務 3操作數據 A的請求處于等待狀態(tài)。當事務 1完成之時事務首先滿足了事務 3的請求,事務 3操作過程中,事務 4進行請求,于是事務 3完成之后,封鎖權交給事務 4…… 所以事務 2永遠處于等待狀態(tài),這叫做活鎖。 基本的封鎖類型叫做排它型鎖,又稱 X封鎖。如果事務 T向系統(tǒng)申請得到數據 A的 X封鎖權,則只允許事務 T對數據 A進行讀取和修改,其他一切事務對數據 A的封鎖申阿解決活鎖的最常見方法是對事務進行排隊,按“先入先出”的原則進行調度。 兩個或兩個以上的事務永遠無法結束,彼此都在等待對方解除封鎖,結果造成事務永遠等待,這種封鎖叫做死鎖。舉例過程如表 。 數據庫解決死鎖問題的主要方法有以下幾種: (1) 要求每個事務一次就將所有要使用的數據全部加鎖,否則就不能執(zhí)行。如上例中,事務 1將數據 A、 B一次全部加鎖,則當事務 1執(zhí)行時,事務2等待,這樣就不會發(fā)生死鎖。 (3) 不預防死鎖的發(fā)生,而是讓系統(tǒng)用某種方法判斷當前系統(tǒng)中是否有死鎖現象。如果發(fā)生死鎖再設法解除,使事務繼續(xù)運行。這種方法一般以某個事務作為犧牲品,把它的封鎖撤消,恢復到初始狀態(tài)。它所釋放出來的資源就可以分配給其它的事務了,由此便可解除死鎖現象。 可串行化 并行事務執(zhí)行時,系統(tǒng)的調度是隨機的,因此,需要一個尺度去判斷事務執(zhí)行的正確性。當并行操作的結果與串行操作的結果相同時,我們則認為這個并行事務處理結果是正確的。這個并行操作調度稱為可串行化調度。 對于表 ,先執(zhí)行操作員 1的事務和先執(zhí)行操作員2的事務所得到的結果是不同的,前者的執(zhí)行結果為 400,后者的執(zhí)行結果為 100,這種事務按先后順序一個一個的執(zhí)行稱為串行操作。對于表,因為它們的各個事務按分時的方法同時進行處理的。表 執(zhí)行結果與先操作員 1后操作員 2的操作結果是一致的,則我們認為這個并行操作是正確的。 可串行化是并行事務正確性的準則。這個準則規(guī)定,一個給定的交叉調度,當且僅當它是可串行化的,才認為是正確的。 時標技術 時標技術是避免因出現數據不一致而造成的破壞數據庫的完整性的另外一種方法。由于它不是采用封鎖的方法,所以不會產生死鎖的問題。 在事務運行時,它的啟動時間就是事務的“時標”。如果兩個事務 T T2的時標分別為 t1與 t2, 若t1t2, 則稱 T1是年輕的事務, T2是年長的事務。 時標和封鎖技術之間的基本區(qū)別是:封鎖是使一組事務的并發(fā)執(zhí)行(即交叉執(zhí)行)同步,使它等價于這些事務的某一串行操作;時標法也是使一組事務的交叉執(zhí)行同步,但是它等價于這些事務的一個特定的串行執(zhí)行,即由時標的時序所確定的一個執(zhí)行。如果發(fā)生沖突,則通過撤消并重新啟動一個事務解決。如果事務重新啟動,則賦予新的時標。 在數據庫所有的物理更新推遲到 COMMIT的時候,未提交的那些修改實際上根本沒有建立。對于給定事務,如果某物理更新由于某理由而不能完成,則該事務的物理更新全都不能完成,事務就被賦予新的時標并重新啟動。 這樣,如果一個事務要求查看被較年輕事務更新了的記錄,或者,如果一個事務要求更新被較年輕的事務查看過或更新過的記錄,就會發(fā)生沖突。這類沖突是通過重新啟動發(fā)出請求的事務來解決的。由于物理更新決不在 COMMIT之前就寫外存,因此事務重啟動,不需要任何回退( ROLLBACK)。 如果若干事務訪問同一個數據庫記錄 R, 那么系統(tǒng)必須對 R保持兩個同步值: FMAX( 成功執(zhí)行了一個“ FIND R”操作的最年輕的事務的時標)和UMAX( 成功地執(zhí)行了一個“ UPD R”操作的最年輕的事務的時標)。設 T是企圖既要“ FIND R”又要“ UPD R”的一個事務, t是 T的時標。那么時間標志法并發(fā)控制技術用下列規(guī)則定義: FIND R: if t=UMAX then /*接受 FIND操作 */ FMAX: =MAX( t, FMAX) 。 else /*發(fā)生沖突 */ restart T。 UPD R: if t=FMAX and t=UMAX then/*接受 UPD操作 */ UMAX : =t。 else/*發(fā)生沖突 */ restart T。 這里“ restart T”表示事務 T重新啟動,并賦予新的時標。 例如,對于表 ,假定操作員 A1的事務( t1) 比操作員 A2的事務( t2) 年輕,即 t1t2, 結果將在時間 t6使操作員 A2的事務 T2的更新失敗, T2將重新啟動,這是表 解決方法。 數據庫的備份與恢復 備份對數據庫的安全來說是至關重要的。備份是指在某種介質上,如磁帶、磁盤等,存儲數據庫或部分數據庫的拷貝?;謴褪侵讣皶r將數據庫返回到原來的狀態(tài)。 數據庫的備份 數據庫的備份大致有三種類型:冷備份、熱備份和邏輯備份。 冷備份 冷備份的思想是關閉數據庫,在沒有最終用戶訪問它的情況下將其備份。這是保持數據完整性的最好辦法,但如果數據庫太大,無法在備份窗口中完成對它的備份,該方法就不適用了。 2. 熱備份 熱備份是在數據庫更新正在被寫入的數據時進行。熱備份嚴重依賴日志文件。在進行時,日志文件將業(yè)務指令 堆起來”,而不真正將任何數據值寫入數據庫記錄。當這些業(yè)務被堆起來時,數據庫表并沒有被更新,因此數據庫被完整地備份。 該方法有一些明顯的缺點。首先,如果系統(tǒng)在進行備份時崩潰,則堆在日志文件中的所有業(yè)務都會被丟失,因此也會造成數據的丟失。其次,它要求 DBA仔細地監(jiān)視系統(tǒng)資源,這樣日志文件就不會占滿所有的存儲空間而不得不停止接受業(yè)務。最后,日志文件本身在某種程度上也需要被備份以便重建數據。需要考慮另外的文件并使其與數據庫文件協(xié)調起來為備份增加了復雜度。 由于數據庫的大小和系統(tǒng)可用性的需求,沒有對其進行備份的其他辦法。在有些情況下,如果日志文件能決定上次備份操作后哪些業(yè)務更改了哪些記錄的話,對數據庫進行增量備份是可行的。 3. 邏輯備份 邏輯備份使用軟件技術從數據庫提取數據并將結果寫入一個輸出文件。該輸出文件不是一個數據庫表,但是表中的所有數據是一個映像。不能對此輸出文件進行任何真正的數據庫操作。在大多數客戶機 /服務器數據庫中,結構化查詢語言( SQL, structured query language) 就是用來創(chuàng)建輸出文件的。該過程有些慢,對大型數據庫的全盤備份不實用。 盡管如此,當僅想備份那些上次備份之后改變了的數據,即增量備份時,該方法非常好。 為了從輸出文件恢復數據,必須生成逆 SQL語句。該過程也相當耗時,但工作的效果相當好。 制定備份的策略 備份不是實時的,備份應該什么時候做,用什么方式做,這主要取決于數據庫的不同規(guī)模和不同的用途。備份主要考慮以下的幾個因素: (1) 備份周期,是按月、周、天、還是小時; (2) 使用冷備份還是熱備份; (3) 使用增量備份還是全部備份,或者兩者同時使用;(增量備份只備份自上次備份后的所有更新的數據。全部備份是完整備份數據庫中所有數據。) (4) 使用什么介質進行備份,備份到磁盤還是磁帶; (5) 是人工備份還是設計一個程序定期自動備份; (6) 備份介質的存放是否防竊、防磁、防火。 數據庫的恢復 恢復也稱為重載或重入,是指當磁盤損壞或數據庫崩潰時,通過轉儲或卸載的備份重新安裝數據庫的過程。 : (1) 周期性地(如 3天一次)對整個數據庫進行轉儲,把它復制到備份介質中(如磁帶中),作為后備副本,以備恢復之用。 轉儲通常又可分為靜態(tài)轉儲和動態(tài)轉儲。靜態(tài)轉儲是指轉儲期間不允許(或不存在)對數據庫進行任何存取、修改活動。而動態(tài)轉儲是指在存儲期間允許對數據庫進行存取或修改。 (2) 對數據庫的每次修改,都記下修改前后的值,寫入“運行日志”數集中。它與后備副本結合,可有效地恢復數據庫。 日志文件是用來記錄對數據庫每一次更新活動的文件。在動態(tài)轉儲方式中必須建立日志文件,后備副本和日志文件綜合起來才能有效地恢復數據庫。在靜態(tài)轉儲方式中,也可以建立日志文件。當數據庫毀壞后可重新裝入后備副本把數據庫恢復到轉儲結束時刻的正確狀態(tài)。 然后利用日志文件,把已完成的事務進行重新處理,對故障發(fā)生時尚未完成的事務進行撤消處理。這樣不必重新運行那些已完成的事務程序就可把數據庫恢復到故障前某一時刻的正確狀態(tài),如圖 。 2. 利用日志文件恢復事務 下面介紹一下如何登記日志文件以及發(fā)生故障后如何利用日志文件恢復事務。 (1) 登記日志文件( logging) 事務運行過程中,系統(tǒng)把事務開始、事務結束(包括 COMMIT和 ROLLBACK)、 以及對數據庫的插入、刪除、修改等每一個操作作為一個登記記錄( log記錄)存放到日志文件中。 圖 每個記錄包括的主要內容有:執(zhí)行操作的事務標識,操作類型,更新前數據的舊值(對插入操作而言,此項為空值),更新后的新值(對刪除操作,此項為空值)。 登記的次序嚴格按并行事務執(zhí)行的時間次序。同時遵循“先寫日志文件”的規(guī)則。我們知道寫一個修改到數據庫和寫一個表示這個修改的 log記錄到日志文件中是兩個不同的操作。有可能在這兩個操作之間發(fā)生故障,即這兩個操作只完成了一個。如果先寫了數據庫修改,而在運行記錄中沒有登記下這個修改,則以后就無法恢復這個修改了。因此為了安全應該先寫日志文件,即首先把 log記錄寫到日志文件上,然后寫數據庫的修改。這就是“先寫日志文件”的原則。 (2) 事務恢復 利用日志文件恢復事務的過程分為二步: 第一步,從頭掃描日志文件,找出哪些事務在故障發(fā)生時已經結束(這些事務有 BEGIN TRANSACTION和 COMMIT記錄),哪些事務尚未結束(這些事務只有 BEGIN TRANSACTION, 無 COMMIT記錄)。 第二步,對尚未結束的事務進行撤消(也稱為UNDO) 處理,對已經結束的事務進行重做( REDO)。 進行 UNDO處理的方法是:反向掃描日志文件,對每個 UNDO事務的更新操作執(zhí)行反操作。 即對已經插入的新記錄執(zhí)行刪除操作,對已刪除的記錄重新插入,對修改的數據恢復舊值(即用
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1