




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
事務管理1事務管理1事務管理問題的引入
事務并發(fā)控制數(shù)據(jù)庫恢復2事務管理問題的引入2問題的引入多用戶同時操作數(shù)據(jù)庫系統(tǒng)在執(zhí)行用戶的請求時出現(xiàn)故障例如:帳戶A轉帳給帳戶B10000元。UPDATEYHZHSET余額=余額-10000WHERE帳號=‘A’UPDATEYHZHSET余額=余額+10000WHERE帳號=‘B’3問題的引入多用戶同時操作數(shù)據(jù)庫例如:帳戶A轉帳給帳戶B100
事務的基本概念事務(Transaction)用戶定義的一個對數(shù)據(jù)庫讀寫操作序列一個不可分割的工作單位在關系數(shù)據(jù)庫中,事務可以是一條、一組SQL語句,或整個程序。事務和程序的區(qū)別?程序包含多個事務4事務的基本概念事務(Transaction)4
事務的性質原子性(Atomicity)事務中的操作要么都做,要么都不做(AllorNone)一致性(Consistency)事務執(zhí)行的結果必須使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)與原子性密切相關隔離性(Isolation)并發(fā)執(zhí)行的各事務不能相互干擾持續(xù)性/永久性(Durability)事務一旦提交,它對數(shù)據(jù)庫的更新不再受后繼操作或故障的影響★
DBMS中事務處理必須保證其ACID特性,這樣才能保證數(shù)據(jù)庫中數(shù)據(jù)的安全和正確。5事務的性質原子性(Atomicity)5銀行轉帳:從帳號A中取出一萬元,存入帳號B。定義一個事務,該事務包括兩個操作這兩個操作要么全做,要么全不做全做或者全不做,數(shù)據(jù)庫都處于一致性狀態(tài)。如果只做一個操作,數(shù)據(jù)庫就處于不一致性狀態(tài)。
B=B+1
A=A-1BA
事務的性質6銀行轉帳:從帳號A中取出一萬元,存入帳號B。
BA事務的性T1的修改被T2覆蓋了!
讀A=16
A←A-3寫回A=13①讀A=16
②
③A←A-1
寫回A=15
④T2T1
事務的性質7T1的修改被T2覆蓋了!
①讀A=16T2T1事務的性質
事務的基本概念事務的開始和結束可以由用戶顯式控制。SQL定義事務的語句Begintransaction(事務開始)Committransaction(事務提交,正常結束,將更新結果寫入磁盤)Rollbacktransaction(事務回滾,撤銷事務中所有已完成的更新)Savetransaction(保存點,可以只撤消部分事務)8事務的基本概念事務的開始和結束可以由用戶顯式控制。8
事務的基本概念顯式定義方式
BEGINTRANSACTIONBEGINTRANSACTIONSQL語句1
SQL語句1
SQL語句2SQL語句2。。。。。。。。。。
COMMITROLLBACK9事務的基本概念顯式定義方式9COMMIT事務正常結束提交事務的所有操作(讀+更新)事務中所有對數(shù)據(jù)庫的更新永久生效ROLLBACK事務異常終止事務運行的過程中發(fā)生了故障,不能繼續(xù)執(zhí)行,回滾事務的所有更新操作事務回滾到開始時的狀態(tài)
事務的基本概念10COMMIT事務的基本概念10事務的基本概念隱含事務與自動提交
ALTERINSERTCREATEDELETEDROPSELECTUPDATETRUNCATETABEL11事務的基本概念隱含事務與自動提交11例:刪除倉庫“WH1”,并將職工T表當中所有在“WH1”倉庫中職工記錄刪除。事務案例BEGINTRANSACTIONMYDELDELETEFROM倉庫TWHERE倉庫號='WH1'DELETEFROM職工TWHERE倉庫號='WH1'IF@@ERROR<>0ROLLBACKTRANSACTIONMYDELELSECOMMITTRANSACTIONMYDEL12例:刪除倉庫“WH1”,并將職工T表當中所有在“WH1”倉庫恢復機制與并發(fā)控制機制的提出事務在運行過程中因某種故障被強行終止,數(shù)據(jù)庫一致性被破壞,需進行恢復。多個事務并行運行時,不同事務的各種操作交叉進行,為保證各事務的執(zhí)行互不干擾,需進行并發(fā)控制。事務是恢復和并發(fā)控制的基本單位
事務的基本概念13恢復機制與并發(fā)控制機制的提出事務的基本概念13干擾問題
解決干擾——封鎖
封鎖不當——死鎖
封鎖與隔離級別
并發(fā)控制14干擾問題并發(fā)控制14干擾問題丟失更新問題未提交依賴(讀“臟”數(shù)據(jù))問題不一致分析問題幻象讀問題15干擾問題丟失更新問題15丟失更新問題例:旅客A來到A售票處,要買一張15日北京到上海的13次直達快速列車的軟臥車票,售票員A(下稱用戶A)在終端A查看剩余票信息;幾乎在同時,旅客B來到B售票處,也要買一張15日北京到上海的13次直達快速列車的軟臥車票,售票員B(下稱用戶B)從終端B查到了同樣的剩余票信息;旅客A買了一張15日13次7車廂5號下鋪的軟臥票,用戶A更新剩余票信息并將它存入數(shù)據(jù)庫;這時用戶B不知道用戶A已經(jīng)將15日13次7車廂5號下鋪的軟臥票賣出,使旅客B也買了一張15日13次7車廂5號下鋪的軟臥票,用戶B更新剩余票信息并將它存入數(shù)據(jù)庫(重復了用戶A已經(jīng)做過的更新)??偟男Ч?5日13次7車廂5號下鋪的軟臥票賣了兩次。其原因是:允許了用戶B在過時的信息基礎上去更新數(shù)據(jù)庫,而沒有迫使他去看最新的信息。
16丟失更新問題例:總的效果:15日13次7車廂5號下鋪的軟臥票丟失更新問題
用SQL術語描述丟失更新問題17丟失更新問題用SQL術語描述丟失更新問題17未提交依賴問題
未提交依賴問題也稱為讀“臟”(DirtyRead)數(shù)據(jù)問題,查詢一個已經(jīng)被其他事務更新、但尚未提交的元組,將會引起未提交依賴問題。
18未提交依賴問題未提交依賴問題也稱為讀“臟”(DirtyR不一致分析問題
不一致分析問題也稱為不可重復讀問題,很多應用可能需要校驗功能,這時往往需要連續(xù)兩次或多次讀數(shù)據(jù)進行校驗和分析,結果由于其他事務的干擾,使得前后結果不一致,從而產生校驗錯誤(即不一致的分析)。
19不一致分析問題不一致分析問題也稱為不可重復讀問題,很多應用幻象讀問題
幻象讀問題與不一致分析問題有關,當事務A讀數(shù)據(jù)時,事務B在對同一個關系進行插入或刪除操作,這時事務A再讀同一條件的元組時,會發(fā)現(xiàn)神秘地多出了一些元組或丟失了一些元組,把這種現(xiàn)象稱作幻象讀。
20幻象讀問題幻象讀問題與不一致分析問題有關,當事務A讀數(shù)據(jù)時可串行性各單個事務如能將數(shù)據(jù)庫從一個正確狀態(tài)轉變?yōu)榱硪粋€正確狀態(tài),則認為該事務是正確的;按任何一個串行順序依次執(zhí)行多個事務是正確的。事物交叉過程是正確的,當且僅當其與串行執(zhí)行過程等價,則事務是可串行化的。21可串行性各單個事務如能將數(shù)據(jù)庫從一個正確狀態(tài)轉變?yōu)榱硪粋€正確可串行性例子:兩個事務:初值:A=10,B=10。T1:SELECTAUPDATEA=A-5SELECTBUPDATEB=B+5T2:SELECTBUPDATEB=B-522可串行性例子:兩個事務:初值:A=10,B=10。T1:SE可串行性T1:SELECTAUPDATEA=A-5SELECTBUPDATEB=B+5T2:
SELECTBUPDATEB=B-523可串行性T1:T2:23可串行性T1:SELECTAUPDATEA=A-5SELECTBUPDATEB=B+5T2:SELECTBUPDATEB=B-524可串行性T1:T2:24可串行性T1:SELECTAUPDATEA=A-5SELECTBUPDATEB=B+5T2:SELECTBUPDATEB=B-525可串行性T1:T2:25可串行性T1:SELECTAUPDATEA=A-5SELECTBUPDATEB=B+5T2:SELECTBUPDATEB=B-5不可串行化26可串行性T1:T2:不可串行化26封鎖
封鎖的基本技術
封鎖機制
SQLServer中與封鎖有關的命令
封鎖粒度
意向鎖
27封鎖封鎖的基本技術27封鎖的基本技術當需要查詢或更新數(shù)據(jù)時,先對數(shù)據(jù)進行封鎖,以避免來自其他事務的干擾。針對不同的干擾問題可以有不同的封鎖機制。
以丟失更新問題為例,實施封鎖的基本思想是:當一個用戶對一個表或記錄進行更新時,封鎖該表或記錄,使其他用戶不能在同一時刻更新相同的表或記錄,迫使其他用戶在更新后的基礎上(而不是在更新前的基礎上)再實施另外的更新操作。
28封鎖的基本技術當需要查詢或更新數(shù)據(jù)時,先對數(shù)據(jù)進行封鎖,以避封鎖的基本技術實施封鎖以后的事件進程29封鎖的基本技術實施封鎖以后的事件進程29封鎖機制
共享封鎖
獨占封鎖
更新封鎖
有些封鎖在執(zhí)行完相應操作后就自動釋放封鎖,有些封鎖則保持到事務結束(提交或撤消)時才釋放(無論如何,所有的封鎖都會在事務結束時自動釋放)。
30封鎖機制共享封鎖有些封鎖在執(zhí)行完相應操作共享封鎖
共享封鎖是為讀操作設置的一種封鎖,所以也稱作讀封鎖,或簡稱S鎖,目的是想讀到一組不變的數(shù)據(jù),也就是在讀數(shù)據(jù)的過程中,不允許其他用戶對該數(shù)據(jù)進行任何修改操作。這種封鎖可以保證最大的并發(fā)性,任何數(shù)量的用戶都可以同時對同樣的數(shù)據(jù)施加這種共享鎖。已經(jīng)實施共享鎖的表拒絕來自其他事務的獨占封鎖和更新封鎖。
31共享封鎖共享封鎖是為讀操作設置的一種封鎖,所以也稱作讀封鎖獨占封鎖
獨占封鎖也叫排他封鎖,它是為修改操作設置的一種封鎖,也稱為寫封鎖,或簡稱為X鎖,這是最嚴格的一類封鎖。當需要對表實施插入、刪除或修改操作時,應該使用獨占封鎖。已經(jīng)實施獨占封鎖的表,拒絕來自其他用戶的任何封鎖。32獨占封鎖獨占封鎖也叫排他封鎖,它是為修改操作設置的一種封鎖更新封鎖
當需要對一個記錄或一組記錄進行更新時(只是修改,不包括插入和刪除)使用更新封鎖,該封鎖的目的是防止其他用戶在同一時刻修改同一記錄。已經(jīng)實施更新封鎖的記錄,拒絕來自其他用戶的任何封鎖。33更新封鎖當需要對一個記錄或一組記錄進行更新時(只是修改,不SQLServer中與封鎖有關的命令
SQLServer的封鎖操作是在相關語句的“WITH(<table_hint>)”子句中完成的,該短語可以在SELECT、INSERT、UPDATE和DELETE等語句中指定表級鎖定的方式和范圍。34SQLServer中與封鎖有關的命令SQLServerSQLServer中與封鎖有關的命令常用的封鎖關鍵詞有:TABLOCK:對表施行共享封鎖,在讀完數(shù)據(jù)后立刻釋放封鎖,此類封鎖可以避免讀“臟”數(shù)據(jù),但不具有可重復讀的特性。HOLDLOCK:與TABLOCK一起使用,可將共享鎖保留到事務完成,而不是在讀完數(shù)據(jù)后立即釋放鎖,這樣可以保證數(shù)據(jù)的可重復獨特性。
35SQLServer中與封鎖有關的命令常用的封鎖關鍵詞有:3SQLServer中與封鎖有關的命令NOLOCK:不進行封鎖,此關鍵詞僅應用于SELECT語句,這樣可能會讀取未提交事務的數(shù)據(jù),即有可能發(fā)生“臟”讀。TABLOCKX:對表實施獨占封鎖。UPDLOCK:對表中的指定元組實施更新封鎖;這時其他事務可以對同一表中的其他元組也實施更新封鎖,但是不允許對表實施共享封鎖和獨占封鎖。
36SQLServer中與封鎖有關的命令NOLOCK:不進行封SQLServer中與封鎖有關的命令R(日期,車次,座別,座位號,狀態(tài))狀態(tài)初值為:NULL…DECLARE@ddatetime,@tchar(6),@schar(2),@nchar(10)…BEGINTRANSACTIONSELECT@n=座位號
FROMRWITH(UPDLOCK)WHERE日期=@dAND車次=@tAND座別=@sAND狀態(tài)
ISNULL…IF…UPDATERSET狀態(tài)="Y"WHERE座位號=@nAND日期=@dAND車次=@tAND座別=@sCOMMITTRANSACTIONELSEROLLBACKTRANSACTION…37SQLServer中與封鎖有關的命令R(日期,車次,座別,封鎖粒度
封鎖的對象可以是表、也可以是元組等,我們把封鎖對象的大小稱為封鎖粒度(Granularity)。封鎖的對象可以是邏輯單元(如表和元組等),也可以是物理單元(如數(shù)據(jù)頁和數(shù)據(jù)塊等)。數(shù)據(jù)庫管理系統(tǒng)一般都具有多粒度鎖定功能,允許一個事務鎖定不同類型的資源。
38封鎖粒度封鎖的對象可以是表、也可以是元組等,我們把封鎖對象封鎖粒度鎖定在較小的粒度(例如行)可以增加并發(fā)操作的性能,但系統(tǒng)開銷也較大。這是因為如果封鎖的粒度小,則意味著需要的鎖多,從而需要系統(tǒng)控制更多的鎖。
鎖定在較大的粒度(例如表)會降低操作的并發(fā)性,這是因為鎖定整個表限制了其他事務對表中任意部分進行訪問。封鎖粒度大,則不需要太多的封鎖,由于需要維護的鎖較少,所以系統(tǒng)開銷較低。
39封鎖粒度鎖定在較小的粒度(例如行)可以增加并發(fā)操作的性能,但意向鎖
為了降低封鎖的成本,提高并發(fā)的性能,數(shù)據(jù)庫管理系統(tǒng)還支持一種意向鎖(IntentionLock)。
意向鎖表示一種封鎖意向,當需要在某些底層資源上(如元組)獲取封鎖時,可以先對高層資源(如表)實施意向鎖。40意向鎖為了降低封鎖的成本,提高并發(fā)的性能,數(shù)據(jù)庫管理系統(tǒng)還死鎖
產生死鎖的原因
避免死鎖
發(fā)現(xiàn)死鎖解決死鎖
41死鎖產生死鎖的原因41產生死鎖的原因右圖示意了兩個并發(fā)事務所發(fā)生事件的序列,兩個程序都為了等待對方釋放數(shù)據(jù)資源而產生死鎖。
42產生死鎖的原因右圖示意了兩個并發(fā)事務所發(fā)生事件的序列,兩個程避免死鎖
相同順序法
所有的用戶程序約定都按相同的順序來封鎖表一次封鎖法
為了完成一個事務,一次性封鎖所需要的全部表43避免死鎖相同順序法43避免死鎖的封鎖
44避免死鎖的封鎖44發(fā)現(xiàn)死鎖超時法
即一個事務在等待的時間超過了規(guī)定的時限后就認為發(fā)生了死鎖。這種方法非常不可靠,如果設置的等待時限長,則不能及時發(fā)現(xiàn)死鎖;如果設置的等待時限短,則可能會將沒有發(fā)生死鎖的事務誤判為死鎖。
45發(fā)現(xiàn)死鎖超時法45發(fā)現(xiàn)死鎖等待圖法
即通過有向圖判定事務是否是可串行化的,如果是則說明沒有發(fā)生死鎖,否則說明發(fā)生了死鎖。具體思路是:用節(jié)點來表示正在運行的事務,用有向邊來表示事務之間的等待關系,如右圖所示,如果有向圖中發(fā)現(xiàn)回路,則說明發(fā)生了死鎖。
46發(fā)現(xiàn)死鎖等待圖法46解決死鎖發(fā)現(xiàn)死鎖后解決死鎖的一般策略是:自動使“年輕”的事務(即完成工作量少的事務)先退回去,然后讓“年老”的事務(即完成工作量多的事務)先執(zhí)行,等“年老”的事務完成并釋放封鎖后,“年輕”的事務再重新執(zhí)行。
47解決死鎖發(fā)現(xiàn)死鎖后解決死鎖的一般策略是:自動使“年輕”的事務隔離級別在避免干擾的情況下,適當?shù)慕档透綦x級別,從而提高并發(fā)的操作效率。隔離級別越低,并發(fā)操作效率越高,但是產生干擾的可能性也越大。隔離級別越高,并發(fā)操作效率越低,同時產生干擾的可能性也越小。在設計應用時,可以在所能容忍的干擾程度范圍內,盡可能降低隔離級別,提高應用的執(zhí)行效率。48隔離級別在避免干擾的情況下,適當?shù)慕档透綦x級別,從而提高并發(fā)隔離級別未提交讀(READUNCOMMITTED):最低級別,僅可保證不讀取物理損壞的數(shù)據(jù),隔離級別最低。提交讀(READCOMMITTED):SQLServer默認級別,可以保證不讀取“臟”數(shù)據(jù)可重復讀(REPEATABLEREAD):可以保證讀一致性,避免不一致分析問題??纱谢⊿ERIALIZABLE):事務隔離的最高級別,事務之間完全隔離。SQL支持4種隔離級別:49隔離級別未提交讀(READUNCOMMITTED):最低級隔離級別SETTRANSACTIONISOLATIONLEVEL{READUNCOMMITTED┃READCOMMITTED┃REPEATABLEREAD┃SERIALIZABLE}設置隔離級別的命令50隔離級別SETTRANSACTIONISOLATION數(shù)據(jù)庫恢復數(shù)據(jù)庫恢復概述備份恢復與還原51數(shù)據(jù)庫恢復數(shù)據(jù)庫恢復概述51數(shù)據(jù)庫恢復概述故障是不可避免的計算機硬件故障系統(tǒng)軟件和應用軟件的錯誤操作員的失誤惡意的破壞故障的影響運行事務非正常中斷破壞數(shù)據(jù)庫52數(shù)據(jù)庫恢復概述故障是不可避免的52數(shù)據(jù)庫管理系統(tǒng)對故障的對策DBMS提供恢復子系統(tǒng)保證故障發(fā)生后,能把數(shù)據(jù)庫中的數(shù)據(jù)從錯誤狀態(tài)恢復到某種邏輯一致的狀態(tài)保證事務ACID恢復技術是衡量系統(tǒng)優(yōu)劣的重要指標數(shù)據(jù)庫恢復概述53數(shù)據(jù)庫管理系統(tǒng)對故障的對策數(shù)據(jù)庫恢復概述53故障類型事務故障系統(tǒng)故障磁盤介質故障54故障類型事務故障54事務故障什么是事務故障某個事務在運行過程中由于種種原因未運行至正常終止點就夭折了事務故障的常見原因輸入數(shù)據(jù)有誤運算溢出違反了某些完整性限制某些應用程序出錯并行事務發(fā)生死鎖。。。。55事務故障什么是事務故障55事務故障的恢復發(fā)生事務故障時,夭折的事務可能已把對數(shù)據(jù)庫的部分修改寫回磁盤事務故障的恢復:撤消該事務清除該事務對數(shù)據(jù)庫的所有修改,使得這個事務象根本沒有啟動過一樣56事務故障的恢復發(fā)生事務故障時,夭折的事務可能已把對數(shù)據(jù)庫的部系統(tǒng)故障什么是系統(tǒng)故障整個系統(tǒng)的正常運行突然被破壞所有正在運行的事務都非正常終止內存中數(shù)據(jù)庫緩沖區(qū)的信息全部丟失外部存儲設備上的數(shù)據(jù)未受影響57系統(tǒng)故障什么是系統(tǒng)故障57系統(tǒng)故障的恢復清除尚未完成的事務對數(shù)據(jù)庫的所有修改系統(tǒng)重新啟動時,恢復程序要強行撤消所有未完成事務將緩沖區(qū)中已完成事務提交的結果寫入數(shù)據(jù)庫系統(tǒng)重新啟動時,恢復程序需要重做所有已提交的事務58系統(tǒng)故障的恢復清除尚未完成的事務對數(shù)據(jù)庫的所有修改58介質故障硬件故障使存儲在外存中的數(shù)據(jù)部分丟失或全部丟失介質故障比前兩類故障的可能性小得多,但破壞性大得多59介質故障硬件故障使存儲在外存中的數(shù)據(jù)部分丟失或全部丟失59介質故障的恢復裝入數(shù)據(jù)庫發(fā)生介質故障前某個時刻的數(shù)據(jù)副本重做自此時始的所有成功事務,將這些事務已提交的結果重新記入數(shù)據(jù)庫60介質故障的恢復裝入數(shù)據(jù)庫發(fā)生介質故障前某個時刻的數(shù)據(jù)副本60備份類型雙機熱備份雙工備份磁盤鏡像冗余磁盤陣列數(shù)據(jù)庫備份技術61備份類型雙機熱備份61日志對備份的補充,記錄所有對數(shù)據(jù)庫的更新操作。注意:應該將日志和主數(shù)據(jù)庫安排在不同的存儲設備上。62日志對備份的補充,記錄所有對數(shù)據(jù)庫的更新操作。注意:應該將日恢復類型簡單恢復允許將數(shù)據(jù)庫恢復到最新的備份。完全恢復允許將數(shù)據(jù)庫恢復到故障點狀態(tài)。ALTERDATABASE倉庫管理SETRECOVERYFULLALTERDATABASE倉庫管理SETRECOVERYSIMPLE63恢復類型簡單恢復ALTERDATABASE倉庫管理SE備份的類型全備份增量備份事務日志備份文件和文件組備份64備份的類型全備份64全備份完整地備份整個數(shù)據(jù)庫,同時也備份與該數(shù)據(jù)庫相關的事務處理日志。BACKUPDATABASEdatabase_nameTO{DISK|TAPE}=‘physical_backup_device_name’例:將“倉庫管理”數(shù)據(jù)庫完全備份到H盤根目錄下。BACKUPDATABASE倉庫管理TODISK=‘H:\CKGL.BAK’65全備份完整地備份整個數(shù)據(jù)庫,同時也備份與該數(shù)據(jù)庫相關的事務處增量備份只備份自上次數(shù)據(jù)庫備份后發(fā)生更改的數(shù)據(jù)。BACKUPDATABASEdatabase_nameTO{DISK|TAPE}=‘physical_backup_device_name’WITHDIFFERENTIAL例:將“倉庫管理”數(shù)據(jù)庫增量備份到H盤根目錄下。BACKUPDATABASE倉庫管理TODISK=‘H:\CKGL1.BAK’WITHDIFFERENTIAL66增量備份只備份自上次數(shù)據(jù)庫備份后發(fā)生更改的數(shù)據(jù)。BACKUP注:增量備份一定是在全備份的基礎上進行的,在一次全備份后可以連續(xù)進行增量備份。
增量備份會增加備份管理的難度。增量備份67注:增量備份67事務日志備份事務日志備份序列提供了連續(xù)的事務信息鏈,可支持從全備份,增量備份或文件備份進行快速恢復。BACKUPLOGdatabase_nameTO{DISK|TAPE}=‘physical_backup_device_name’例:將“倉庫管理”數(shù)據(jù)庫的事務日志備份到H盤根目錄下。BACKUPLOG倉庫管理TODISK=‘H:\CKGLLOG.BAK’注:簡單恢復模型不允許備份事務日志。68事務日志備份事務日志備份序列提供了連續(xù)的事務信息鏈,可支持從文件和文件組備份可以備份和恢復數(shù)據(jù)庫中的個別文件。文件備份和恢復操作必須與事務日志備份一起使用。因此,文件備份不適用于簡單恢復模型。必須在創(chuàng)建文件備份之后才能創(chuàng)建事務日志備份。69文件和文件組備份可以備份和恢復數(shù)據(jù)庫中的個別文件。69文件和文件組備份BACKUPDATABASEdatabase_name{FILE=logic_file_list|FILEGROUP=filegroup_list}TO{DISK|TAPE}=‘physical_backup_device_name’例:將“倉庫管理”數(shù)據(jù)庫中的“倉庫管理_DATA”文件備份到H盤根目錄下。BACKUPDATABASE倉庫管理FILE=‘倉庫管理_DATA’TODISK=‘H:\CKGLDATA.BAK’70文件和文件組備份BACKUPDATABASEdataba恢復或還原恢復整個數(shù)據(jù)庫恢復數(shù)據(jù)庫的部分內容恢復特定的文件或文件組恢復事務71恢復或還原恢復整個數(shù)據(jù)庫71根據(jù)數(shù)據(jù)庫全備份進行恢復RESTOREDATEBASEdatabase_nameFROM{DISK|TAPE}=‘physical_backup_device_name’[WITH[[,]{NORECOVERY|RECOVERY}][[,]REPLACE]注:如果在數(shù)據(jù)庫恢復之后即使用數(shù)據(jù)庫,應該選擇RECOVERY;如果在數(shù)據(jù)庫恢復之后還有后續(xù)的RESTORE操作,則應改為指定NORECOVERY。72根據(jù)數(shù)據(jù)庫全備份進行恢復RESTOREDATEBASE根據(jù)增量備份進行恢復已經(jīng)使用RESTOREDATEBASE命令完成了全備份的恢復,同時指定了NORECOVERY;在進行增量恢復時根據(jù)需要指定RECOVERY或NORECOVERY字句;如果有多個增量備份,則一定要按照備份的先后順序進行恢復。73根據(jù)增量備份進行恢復已經(jīng)使用RESTOREDATEBASE根據(jù)事務日志進行恢復在恢復事務日志備份之前需要首先恢復數(shù)據(jù)庫全備份或增量數(shù)據(jù)庫備份;如果有多個日志備份,則按先后順序進行恢復。注意:74根據(jù)事務日志進行恢復在恢復事務日志備份之前需要首先恢復數(shù)據(jù)庫根據(jù)事務日志進行恢復RESTORELOGdatabase_nameFROM{DISK|TAPE}=‘physical_backup_device_name’[WITH[[,]{NORECOVERY|RECOVERY}][[,]STOPAT=date_time|[,]STOPATMARK=‘mark_name’[AFTERdatetime]|[,]STOPBEFOREMARK=‘mark_name’[AFTERdatetime]]]75根據(jù)事務日志進行恢復RESTORELOGdatabase根據(jù)文件或文件組進行恢復RESTOREDATEBASEdatabase_name{FILE=logic_file_list|FILEGROUP=filegroup_list}FROM{DISK|TAPE}=‘physical_backup_device_name’76根據(jù)文件或文件組進行恢復RESTOREDATEBASE事務管理77事務管理1事務管理問題的引入
事務并發(fā)控制數(shù)據(jù)庫恢復78事務管理問題的引入2問題的引入多用戶同時操作數(shù)據(jù)庫系統(tǒng)在執(zhí)行用戶的請求時出現(xiàn)故障例如:帳戶A轉帳給帳戶B10000元。UPDATEYHZHSET余額=余額-10000WHERE帳號=‘A’UPDATEYHZHSET余額=余額+10000WHERE帳號=‘B’79問題的引入多用戶同時操作數(shù)據(jù)庫例如:帳戶A轉帳給帳戶B100
事務的基本概念事務(Transaction)用戶定義的一個對數(shù)據(jù)庫讀寫操作序列一個不可分割的工作單位在關系數(shù)據(jù)庫中,事務可以是一條、一組SQL語句,或整個程序。事務和程序的區(qū)別?程序包含多個事務80事務的基本概念事務(Transaction)4
事務的性質原子性(Atomicity)事務中的操作要么都做,要么都不做(AllorNone)一致性(Consistency)事務執(zhí)行的結果必須使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)與原子性密切相關隔離性(Isolation)并發(fā)執(zhí)行的各事務不能相互干擾持續(xù)性/永久性(Durability)事務一旦提交,它對數(shù)據(jù)庫的更新不再受后繼操作或故障的影響★
DBMS中事務處理必須保證其ACID特性,這樣才能保證數(shù)據(jù)庫中數(shù)據(jù)的安全和正確。81事務的性質原子性(Atomicity)5銀行轉帳:從帳號A中取出一萬元,存入帳號B。定義一個事務,該事務包括兩個操作這兩個操作要么全做,要么全不做全做或者全不做,數(shù)據(jù)庫都處于一致性狀態(tài)。如果只做一個操作,數(shù)據(jù)庫就處于不一致性狀態(tài)。
B=B+1
A=A-1BA
事務的性質82銀行轉帳:從帳號A中取出一萬元,存入帳號B。
BA事務的性T1的修改被T2覆蓋了!
讀A=16
A←A-3寫回A=13①讀A=16
②
③A←A-1
寫回A=15
④T2T1
事務的性質83T1的修改被T2覆蓋了!
①讀A=16T2T1事務的性質
事務的基本概念事務的開始和結束可以由用戶顯式控制。SQL定義事務的語句Begintransaction(事務開始)Committransaction(事務提交,正常結束,將更新結果寫入磁盤)Rollbacktransaction(事務回滾,撤銷事務中所有已完成的更新)Savetransaction(保存點,可以只撤消部分事務)84事務的基本概念事務的開始和結束可以由用戶顯式控制。8
事務的基本概念顯式定義方式
BEGINTRANSACTIONBEGINTRANSACTIONSQL語句1
SQL語句1
SQL語句2SQL語句2。。。。。。。。。。
COMMITROLLBACK85事務的基本概念顯式定義方式9COMMIT事務正常結束提交事務的所有操作(讀+更新)事務中所有對數(shù)據(jù)庫的更新永久生效ROLLBACK事務異常終止事務運行的過程中發(fā)生了故障,不能繼續(xù)執(zhí)行,回滾事務的所有更新操作事務回滾到開始時的狀態(tài)
事務的基本概念86COMMIT事務的基本概念10事務的基本概念隱含事務與自動提交
ALTERINSERTCREATEDELETEDROPSELECTUPDATETRUNCATETABEL87事務的基本概念隱含事務與自動提交11例:刪除倉庫“WH1”,并將職工T表當中所有在“WH1”倉庫中職工記錄刪除。事務案例BEGINTRANSACTIONMYDELDELETEFROM倉庫TWHERE倉庫號='WH1'DELETEFROM職工TWHERE倉庫號='WH1'IF@@ERROR<>0ROLLBACKTRANSACTIONMYDELELSECOMMITTRANSACTIONMYDEL88例:刪除倉庫“WH1”,并將職工T表當中所有在“WH1”倉庫恢復機制與并發(fā)控制機制的提出事務在運行過程中因某種故障被強行終止,數(shù)據(jù)庫一致性被破壞,需進行恢復。多個事務并行運行時,不同事務的各種操作交叉進行,為保證各事務的執(zhí)行互不干擾,需進行并發(fā)控制。事務是恢復和并發(fā)控制的基本單位
事務的基本概念89恢復機制與并發(fā)控制機制的提出事務的基本概念13干擾問題
解決干擾——封鎖
封鎖不當——死鎖
封鎖與隔離級別
并發(fā)控制90干擾問題并發(fā)控制14干擾問題丟失更新問題未提交依賴(讀“臟”數(shù)據(jù))問題不一致分析問題幻象讀問題91干擾問題丟失更新問題15丟失更新問題例:旅客A來到A售票處,要買一張15日北京到上海的13次直達快速列車的軟臥車票,售票員A(下稱用戶A)在終端A查看剩余票信息;幾乎在同時,旅客B來到B售票處,也要買一張15日北京到上海的13次直達快速列車的軟臥車票,售票員B(下稱用戶B)從終端B查到了同樣的剩余票信息;旅客A買了一張15日13次7車廂5號下鋪的軟臥票,用戶A更新剩余票信息并將它存入數(shù)據(jù)庫;這時用戶B不知道用戶A已經(jīng)將15日13次7車廂5號下鋪的軟臥票賣出,使旅客B也買了一張15日13次7車廂5號下鋪的軟臥票,用戶B更新剩余票信息并將它存入數(shù)據(jù)庫(重復了用戶A已經(jīng)做過的更新)??偟男Ч?5日13次7車廂5號下鋪的軟臥票賣了兩次。其原因是:允許了用戶B在過時的信息基礎上去更新數(shù)據(jù)庫,而沒有迫使他去看最新的信息。
92丟失更新問題例:總的效果:15日13次7車廂5號下鋪的軟臥票丟失更新問題
用SQL術語描述丟失更新問題93丟失更新問題用SQL術語描述丟失更新問題17未提交依賴問題
未提交依賴問題也稱為讀“臟”(DirtyRead)數(shù)據(jù)問題,查詢一個已經(jīng)被其他事務更新、但尚未提交的元組,將會引起未提交依賴問題。
94未提交依賴問題未提交依賴問題也稱為讀“臟”(DirtyR不一致分析問題
不一致分析問題也稱為不可重復讀問題,很多應用可能需要校驗功能,這時往往需要連續(xù)兩次或多次讀數(shù)據(jù)進行校驗和分析,結果由于其他事務的干擾,使得前后結果不一致,從而產生校驗錯誤(即不一致的分析)。
95不一致分析問題不一致分析問題也稱為不可重復讀問題,很多應用幻象讀問題
幻象讀問題與不一致分析問題有關,當事務A讀數(shù)據(jù)時,事務B在對同一個關系進行插入或刪除操作,這時事務A再讀同一條件的元組時,會發(fā)現(xiàn)神秘地多出了一些元組或丟失了一些元組,把這種現(xiàn)象稱作幻象讀。
96幻象讀問題幻象讀問題與不一致分析問題有關,當事務A讀數(shù)據(jù)時可串行性各單個事務如能將數(shù)據(jù)庫從一個正確狀態(tài)轉變?yōu)榱硪粋€正確狀態(tài),則認為該事務是正確的;按任何一個串行順序依次執(zhí)行多個事務是正確的。事物交叉過程是正確的,當且僅當其與串行執(zhí)行過程等價,則事務是可串行化的。97可串行性各單個事務如能將數(shù)據(jù)庫從一個正確狀態(tài)轉變?yōu)榱硪粋€正確可串行性例子:兩個事務:初值:A=10,B=10。T1:SELECTAUPDATEA=A-5SELECTBUPDATEB=B+5T2:SELECTBUPDATEB=B-598可串行性例子:兩個事務:初值:A=10,B=10。T1:SE可串行性T1:SELECTAUPDATEA=A-5SELECTBUPDATEB=B+5T2:
SELECTBUPDATEB=B-599可串行性T1:T2:23可串行性T1:SELECTAUPDATEA=A-5SELECTBUPDATEB=B+5T2:SELECTBUPDATEB=B-5100可串行性T1:T2:24可串行性T1:SELECTAUPDATEA=A-5SELECTBUPDATEB=B+5T2:SELECTBUPDATEB=B-5101可串行性T1:T2:25可串行性T1:SELECTAUPDATEA=A-5SELECTBUPDATEB=B+5T2:SELECTBUPDATEB=B-5不可串行化102可串行性T1:T2:不可串行化26封鎖
封鎖的基本技術
封鎖機制
SQLServer中與封鎖有關的命令
封鎖粒度
意向鎖
103封鎖封鎖的基本技術27封鎖的基本技術當需要查詢或更新數(shù)據(jù)時,先對數(shù)據(jù)進行封鎖,以避免來自其他事務的干擾。針對不同的干擾問題可以有不同的封鎖機制。
以丟失更新問題為例,實施封鎖的基本思想是:當一個用戶對一個表或記錄進行更新時,封鎖該表或記錄,使其他用戶不能在同一時刻更新相同的表或記錄,迫使其他用戶在更新后的基礎上(而不是在更新前的基礎上)再實施另外的更新操作。
104封鎖的基本技術當需要查詢或更新數(shù)據(jù)時,先對數(shù)據(jù)進行封鎖,以避封鎖的基本技術實施封鎖以后的事件進程105封鎖的基本技術實施封鎖以后的事件進程29封鎖機制
共享封鎖
獨占封鎖
更新封鎖
有些封鎖在執(zhí)行完相應操作后就自動釋放封鎖,有些封鎖則保持到事務結束(提交或撤消)時才釋放(無論如何,所有的封鎖都會在事務結束時自動釋放)。
106封鎖機制共享封鎖有些封鎖在執(zhí)行完相應操作共享封鎖
共享封鎖是為讀操作設置的一種封鎖,所以也稱作讀封鎖,或簡稱S鎖,目的是想讀到一組不變的數(shù)據(jù),也就是在讀數(shù)據(jù)的過程中,不允許其他用戶對該數(shù)據(jù)進行任何修改操作。這種封鎖可以保證最大的并發(fā)性,任何數(shù)量的用戶都可以同時對同樣的數(shù)據(jù)施加這種共享鎖。已經(jīng)實施共享鎖的表拒絕來自其他事務的獨占封鎖和更新封鎖。
107共享封鎖共享封鎖是為讀操作設置的一種封鎖,所以也稱作讀封鎖獨占封鎖
獨占封鎖也叫排他封鎖,它是為修改操作設置的一種封鎖,也稱為寫封鎖,或簡稱為X鎖,這是最嚴格的一類封鎖。當需要對表實施插入、刪除或修改操作時,應該使用獨占封鎖。已經(jīng)實施獨占封鎖的表,拒絕來自其他用戶的任何封鎖。108獨占封鎖獨占封鎖也叫排他封鎖,它是為修改操作設置的一種封鎖更新封鎖
當需要對一個記錄或一組記錄進行更新時(只是修改,不包括插入和刪除)使用更新封鎖,該封鎖的目的是防止其他用戶在同一時刻修改同一記錄。已經(jīng)實施更新封鎖的記錄,拒絕來自其他用戶的任何封鎖。109更新封鎖當需要對一個記錄或一組記錄進行更新時(只是修改,不SQLServer中與封鎖有關的命令
SQLServer的封鎖操作是在相關語句的“WITH(<table_hint>)”子句中完成的,該短語可以在SELECT、INSERT、UPDATE和DELETE等語句中指定表級鎖定的方式和范圍。110SQLServer中與封鎖有關的命令SQLServerSQLServer中與封鎖有關的命令常用的封鎖關鍵詞有:TABLOCK:對表施行共享封鎖,在讀完數(shù)據(jù)后立刻釋放封鎖,此類封鎖可以避免讀“臟”數(shù)據(jù),但不具有可重復讀的特性。HOLDLOCK:與TABLOCK一起使用,可將共享鎖保留到事務完成,而不是在讀完數(shù)據(jù)后立即釋放鎖,這樣可以保證數(shù)據(jù)的可重復獨特性。
111SQLServer中與封鎖有關的命令常用的封鎖關鍵詞有:3SQLServer中與封鎖有關的命令NOLOCK:不進行封鎖,此關鍵詞僅應用于SELECT語句,這樣可能會讀取未提交事務的數(shù)據(jù),即有可能發(fā)生“臟”讀。TABLOCKX:對表實施獨占封鎖。UPDLOCK:對表中的指定元組實施更新封鎖;這時其他事務可以對同一表中的其他元組也實施更新封鎖,但是不允許對表實施共享封鎖和獨占封鎖。
112SQLServer中與封鎖有關的命令NOLOCK:不進行封SQLServer中與封鎖有關的命令R(日期,車次,座別,座位號,狀態(tài))狀態(tài)初值為:NULL…DECLARE@ddatetime,@tchar(6),@schar(2),@nchar(10)…BEGINTRANSACTIONSELECT@n=座位號
FROMRWITH(UPDLOCK)WHERE日期=@dAND車次=@tAND座別=@sAND狀態(tài)
ISNULL…IF…UPDATERSET狀態(tài)="Y"WHERE座位號=@nAND日期=@dAND車次=@tAND座別=@sCOMMITTRANSACTIONELSEROLLBACKTRANSACTION…113SQLServer中與封鎖有關的命令R(日期,車次,座別,封鎖粒度
封鎖的對象可以是表、也可以是元組等,我們把封鎖對象的大小稱為封鎖粒度(Granularity)。封鎖的對象可以是邏輯單元(如表和元組等),也可以是物理單元(如數(shù)據(jù)頁和數(shù)據(jù)塊等)。數(shù)據(jù)庫管理系統(tǒng)一般都具有多粒度鎖定功能,允許一個事務鎖定不同類型的資源。
114封鎖粒度封鎖的對象可以是表、也可以是元組等,我們把封鎖對象封鎖粒度鎖定在較小的粒度(例如行)可以增加并發(fā)操作的性能,但系統(tǒng)開銷也較大。這是因為如果封鎖的粒度小,則意味著需要的鎖多,從而需要系統(tǒng)控制更多的鎖。
鎖定在較大的粒度(例如表)會降低操作的并發(fā)性,這是因為鎖定整個表限制了其他事務對表中任意部分進行訪問。封鎖粒度大,則不需要太多的封鎖,由于需要維護的鎖較少,所以系統(tǒng)開銷較低。
115封鎖粒度鎖定在較小的粒度(例如行)可以增加并發(fā)操作的性能,但意向鎖
為了降低封鎖的成本,提高并發(fā)的性能,數(shù)據(jù)庫管理系統(tǒng)還支持一種意向鎖(IntentionLock)。
意向鎖表示一種封鎖意向,當需要在某些底層資源上(如元組)獲取封鎖時,可以先對高層資源(如表)實施意向鎖。116意向鎖為了降低封鎖的成本,提高并發(fā)的性能,數(shù)據(jù)庫管理系統(tǒng)還死鎖
產生死鎖的原因
避免死鎖
發(fā)現(xiàn)死鎖解決死鎖
117死鎖產生死鎖的原因41產生死鎖的原因右圖示意了兩個并發(fā)事務所發(fā)生事件的序列,兩個程序都為了等待對方釋放數(shù)據(jù)資源而產生死鎖。
118產生死鎖的原因右圖示意了兩個并發(fā)事務所發(fā)生事件的序列,兩個程避免死鎖
相同順序法
所有的用戶程序約定都按相同的順序來封鎖表一次封鎖法
為了完成一個事務,一次性封鎖所需要的全部表119避免死鎖相同順序法43避免死鎖的封鎖
120避免死鎖的封鎖44發(fā)現(xiàn)死鎖超時法
即一個事務在等待的時間超過了規(guī)定的時限后就認為發(fā)生了死鎖。這種方法非常不可靠,如果設置的等待時限長,則不能及時發(fā)現(xiàn)死鎖;如果設置的等待時限短,則可能會將沒有發(fā)生死鎖的事務誤判為死鎖。
121發(fā)現(xiàn)死鎖超時法45發(fā)現(xiàn)死鎖等待圖法
即通過有向圖判定事務是否是可串行化的,如果是則說明沒有發(fā)生死鎖,否則說明發(fā)生了死鎖。具體思路是:用節(jié)點來表示正在運行的事務,用有向邊來表示事務之間的等待關系,如右圖所示,如果有向圖中發(fā)現(xiàn)回路,則說明發(fā)生了死鎖。
122發(fā)現(xiàn)死鎖等待圖法46解決死鎖發(fā)現(xiàn)死鎖后解決死鎖的一般策略是:自動使“年輕”的事務(即完成工作量少的事務)先退回去,然后讓“年老”的事務(即完成工作量多的事務)先執(zhí)行,等“年老”的事務完成并釋放封鎖后,“年輕”的事務再重新執(zhí)行。
123解決死鎖發(fā)現(xiàn)死鎖后解決死鎖的一般策略是:自動使“年輕”的事務隔離級別在避免干擾的情況下,適當?shù)慕档透綦x級別,從而提高并發(fā)的操作效率。隔離級別越低,并發(fā)操作效率越高,但是產生干擾的可能性也越大。隔離級別越高,并發(fā)操作效率越低,同時產生干擾的可能性也越小。在設計應用時,可以在所能容忍的干擾程度范圍內,盡可能降低隔離級別,提高應用的執(zhí)行效率。124隔離級別在避免干擾的情況下,適當?shù)慕档透綦x級別,從而提高并發(fā)隔離級別未提交讀(READUNCOMMITTED):最低級別,僅可保證不讀取物理損壞的數(shù)據(jù),隔離級別最低。提交讀(READCOMMITTED):SQLServer默認級別,可以保證不讀取“臟”數(shù)據(jù)可重復讀(REPEATABLEREAD):可以保證讀一致性,避免不一致分析問題??纱谢⊿ERIALIZABLE):事務隔離的最高級別,事務之間完全隔離。SQL支持4種隔離級別:125隔離級別未提交讀(READUNCOMMITTED):最低級隔離級別SETTRANSACTIONISOLATIONLEVEL{READUNCOMMITTED┃READCOMMITTED┃REPEATABLEREAD┃SERIALIZABLE}設置隔離級別的命令126隔離級別SETTRANSACTIONISOLATION數(shù)據(jù)庫恢復數(shù)據(jù)庫恢復概述備份恢復與還原127數(shù)據(jù)庫恢復數(shù)據(jù)庫恢復概述51數(shù)據(jù)庫恢復概述故障是不可避免的計算機硬件故障系統(tǒng)軟件和應用軟件的錯誤操作員的失誤惡意的破壞故障的影響運行事務非正常中斷破壞數(shù)據(jù)庫128數(shù)據(jù)庫恢復概述故障是不可避免的52數(shù)據(jù)庫管理系統(tǒng)對故障的對策DBMS提供恢復子系統(tǒng)保證故障發(fā)生后,能把數(shù)據(jù)庫中的數(shù)據(jù)從錯誤狀態(tài)恢復到某種邏輯一致的狀態(tài)保證事務ACID恢復技術是衡量系統(tǒng)優(yōu)劣的重要指標數(shù)據(jù)庫恢復概述129數(shù)據(jù)庫管理系統(tǒng)對故障的對策數(shù)據(jù)庫恢復概述53故障類型事務故障系統(tǒng)故障磁盤介質故障130故障類型事務故障54事務故障什么是事務故障某個事務在運行過程中由于種種原因未運行至正常終止點就夭折了事務故障的常見原因輸入數(shù)據(jù)有誤運算溢出違反了某些完整性限制某些應用程序出錯并行事務發(fā)生死鎖。。。。131事務故障什么是事務故障55事務故障的恢復發(fā)生事務故障時,夭折的事務可能已把對數(shù)據(jù)庫的部分修改寫回磁盤事務故障的恢復:撤消該事務清除該事務對數(shù)據(jù)庫的所有修改,使得這個事務象根本沒有啟動過一樣132事務故障的恢復發(fā)生事務故障時,夭折的事務可能已把對數(shù)據(jù)庫的部系統(tǒng)故障什么是系統(tǒng)故障整個系統(tǒng)的正常運行突然被破壞所有正在運行的事務都非正常終止內存中數(shù)據(jù)庫緩沖區(qū)的信息全部丟失外部存儲設備上的數(shù)據(jù)未受影響133系統(tǒng)故障什么是系統(tǒng)故障57系統(tǒng)故障的恢復清除尚未完成的事務對數(shù)據(jù)庫的所有修改系統(tǒng)重新啟動時,恢復程序要強行撤消所有未完成事務將緩沖區(qū)中已完成事務提交的結果寫入數(shù)據(jù)庫系統(tǒng)重新啟動時,恢復程序需要重做所有已提交的事務134系統(tǒng)故障的恢復清除尚未完成的事務對數(shù)據(jù)庫的所有修改58介質故障硬件故障使存儲在外存中的數(shù)據(jù)部分丟失或全部丟失介質故障比前兩類故障的可能性小得多,但破壞性大得多135介質故障硬件故障使存儲在外存中的數(shù)據(jù)部分丟失或全部丟失59介質故障的恢復裝入數(shù)據(jù)庫發(fā)生介質故障前某個時刻的數(shù)據(jù)副本重做自此時始的所有成功事務,將這些事務已提交的結果重新記入數(shù)據(jù)庫136介質故障的恢復裝入數(shù)據(jù)庫發(fā)生介質故障前某個時刻的數(shù)據(jù)副本60備份類型雙機熱備份雙工備份磁盤鏡像冗余磁盤陣列數(shù)據(jù)庫備份技術137備份類型雙機熱備份61日志對備份的補充,記錄所有對數(shù)據(jù)庫的更新操作。注意:應該將日志和主數(shù)據(jù)庫安排在不同的存儲設備上。138日志對備份的補充,記錄所有對數(shù)據(jù)庫的更新操作。注意:應該將日恢復類型簡單恢復允許將數(shù)據(jù)庫恢復到最新的備份。完全恢復允許將數(shù)據(jù)庫恢復到故障點狀態(tài)。ALTERDATABASE倉庫管理SETRECOVERYFULLALTERDATABASE倉庫管理SETRECOVERYSIMPLE139恢復類型簡單恢復ALTERDATABASE倉庫管理SE備份的類型全備份增量備份事務日志備份文件和文件組備份140備份的類型全備份64全備份完整地備份整個數(shù)據(jù)庫,同時也備份與該數(shù)據(jù)庫相關的事務處理日志。BACKUPDATAB
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 飼料市場銷售協(xié)議書
- 運輸裝卸委托協(xié)議書
- 下水道承包合同協(xié)議書
- 公司安全責任人協(xié)議書
- 遺書財產分配協(xié)議書
- 食品貨物轉讓協(xié)議書
- 公共管理案例寫作
- 鋼筋承包分包協(xié)議書
- 親人間贈予房子協(xié)議書
- 茶樓股權分配協(xié)議書
- 一起重新構想我們的未來:為教育打造新的社會契約
- 層序地層學在油氣勘探開發(fā)中的應用
- 青銅器的紋樣課件
- 《獻給阿爾吉儂的花束》讀后感優(yōu)秀5篇
- 中醫(yī)臨床路徑
- 2023年云南省腫瘤醫(yī)院醫(yī)護人員招聘筆試題庫及答案解析
- 輻射及其安全防護(共38張PPT)
- 初三中考宣誓誓詞82060
- 觸電事故桌面推演方案
- 《中興通訊績效管理制度》-人事制度表格【管理資料】
- 鐵路工務技術手冊
評論
0/150
提交評論