第13章 數(shù)據(jù)庫 數(shù)據(jù)庫恢復技術_第1頁
第13章 數(shù)據(jù)庫 數(shù)據(jù)庫恢復技術_第2頁
第13章 數(shù)據(jù)庫 數(shù)據(jù)庫恢復技術_第3頁
第13章 數(shù)據(jù)庫 數(shù)據(jù)庫恢復技術_第4頁
第13章 數(shù)據(jù)庫 數(shù)據(jù)庫恢復技術_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第13章數(shù)據(jù)庫恢復技術13.1恢復的基本概念13.2數(shù)據(jù)庫故障的種類13.3數(shù)據(jù)庫恢復的類型13.4恢復技術13.5緩沖區(qū)管理*1概述計算機同其他任何設備一樣,都有可能發(fā)生故障。這種情況一旦發(fā)生,就有可能造成數(shù)據(jù)丟失。數(shù)據(jù)庫系統(tǒng)必須采取必要的措施,以保證不會或盡可能減少數(shù)據(jù)丟失。數(shù)據(jù)庫恢復是DBMS必須提供的功能。*213.1恢復的基本概念數(shù)據(jù)庫恢復是指當數(shù)據(jù)庫發(fā)生故障時,將數(shù)據(jù)庫恢復到正確(一致性)狀態(tài)的過程。數(shù)據(jù)庫恢復是基于事務的原子性特性。數(shù)據(jù)庫恢復過程通常遵循一個可預測的方案?;謴蜋C制有兩個關鍵問題:如何建立備份數(shù)據(jù);如何利用備份數(shù)據(jù)進行恢復。*3數(shù)據(jù)轉儲數(shù)據(jù)庫恢復采用的基本技術:數(shù)據(jù)轉儲(也稱為數(shù)據(jù)庫備份)。轉儲就是定期地將整個數(shù)據(jù)庫復制到輔助存儲設備上,比如磁帶、磁盤。數(shù)據(jù)轉儲只能將數(shù)據(jù)庫恢復到轉儲時的狀態(tài)。如果想恢復到故障發(fā)生時的狀態(tài),則必須利用轉儲之后的事務日志。*4轉儲分類靜態(tài)轉儲在系統(tǒng)中無運行事務時進行。在轉儲期間不允許對數(shù)據(jù)庫進行任何操作。動態(tài)轉儲不用等待正在運行的事務結束。在轉儲期間允許運行新的事務。*5靜態(tài)與動態(tài)轉儲比較靜態(tài)轉儲實現(xiàn)簡單,靜態(tài)轉儲得到的一定是數(shù)據(jù)庫的一個一致性副本。轉儲期間但會降低數(shù)據(jù)庫的可用性。動態(tài)轉儲不能保證轉儲結束后的數(shù)據(jù)庫副本是正確的必須利用日志將數(shù)據(jù)庫恢復到一致性狀態(tài)轉儲期間不會降低數(shù)據(jù)庫的可用性。*6轉儲內(nèi)容分類海量轉儲:每次轉儲全部數(shù)據(jù)庫,增量轉儲:每次只轉儲上一次轉儲之后修改過的數(shù)據(jù)。從恢復的角度看,用海量轉儲的數(shù)據(jù)庫副本進行恢復更方便,但如果數(shù)據(jù)量很大,事務處理又比較頻繁,則增量轉儲會更有效。海量轉儲和增量轉儲可以是動態(tài)的,也可以是靜態(tài)的。*713.2數(shù)據(jù)庫故障的種類數(shù)據(jù)庫故障是指導致數(shù)據(jù)庫值出現(xiàn)錯誤描述狀態(tài)的情況,影響數(shù)據(jù)庫運行的故障有多種:事務內(nèi)部的故障系統(tǒng)故障其它故障*8事務內(nèi)部的故障可預期的這類故障可通過事務程序本身發(fā)現(xiàn)。如銀行轉賬事務中,如果A賬戶金額不足,則不能進行轉賬。非預期性的這類故障不能由應用程序來處理。如運算溢出或因死鎖而被撤銷的事務。*9事務故障事務故障意味著事務沒有達到終點,數(shù)據(jù)庫可能處于不正確的狀態(tài)。數(shù)據(jù)庫的恢復機制要在不影響其他事務運行的情況下,強行撤銷該事務中的全部操作,使該事務就像沒發(fā)生過一樣。這類恢復操作稱為事務撤銷(UNDO)。*10系統(tǒng)故障是指造成系統(tǒng)停止運轉、系統(tǒng)要重啟的故障。例如:硬件錯誤(CPU故障)操作系統(tǒng)故障突然停電等。這類故障會影響正在運行的所有事務,但不破壞數(shù)據(jù)庫。*11系統(tǒng)故障產(chǎn)生的結果一些未完成事務的結果可能已經(jīng)送入物理數(shù)據(jù)庫中,從而造成數(shù)據(jù)庫可能處于不正確狀態(tài);有些已經(jīng)提交的事務可能有一部分結果還保留在緩沖區(qū)中,尚未寫到物理數(shù)據(jù)庫中,因此會丟失這些事務對數(shù)據(jù)的修改,使數(shù)據(jù)庫處于不一致狀態(tài)。*12系統(tǒng)故障恢復方法恢復子系統(tǒng)在系統(tǒng)重新啟動時必須:撤銷所有未完成的事務重做所有已提交的事務從而保證將數(shù)據(jù)庫恢復到一致狀態(tài)。*13其他故障介質(zhì)故障或由計算機病毒引起的故障或破壞,均歸為其他故障。介質(zhì)故障指外存故障,如磁盤損壞等。這類故障會對數(shù)據(jù)庫造成破壞,并影響正在操作的數(shù)據(jù)庫的所有事務。這類故障雖然發(fā)生的可能性很小,但破壞性很大。計算機病毒的破壞性很大,而且極易傳播,它也可以對數(shù)據(jù)庫造成毀滅性的破壞。*14故障對數(shù)據(jù)庫的影響有兩種可能性:一種是數(shù)據(jù)庫本身的破壞;另一種是數(shù)據(jù)庫沒有破壞,但數(shù)據(jù)可能不正確(因事務非正常終止)。數(shù)據(jù)庫恢復就是保證數(shù)據(jù)庫的正確和一致,其原理是:冗余。即數(shù)據(jù)庫中任何一部分被破壞的或不正確的數(shù)據(jù)均可根據(jù)冗余數(shù)據(jù)來重建?;謴偷脑砗芎唵?,但實現(xiàn)的技術細節(jié)卻很復雜*1513.3數(shù)據(jù)庫恢復的類型無論出現(xiàn)何種類型的故障,都必須終止或提交事務,以維護數(shù)據(jù)完整性。事務的恢復類型:向前恢復。向后恢復。介質(zhì)故障恢復。*1613.3.1向前恢復也稱為重做(REDO)用于物理損壞情形的恢復過程。如:磁盤損壞向數(shù)據(jù)庫緩沖區(qū)寫入數(shù)據(jù)時的故障將緩沖區(qū)中的信息傳輸?shù)酱疟P時出現(xiàn)的故障*17永久生效的更新事務的中間結果被寫入到數(shù)據(jù)庫緩沖區(qū)中,數(shù)據(jù)在緩沖區(qū)和數(shù)據(jù)庫的物理存儲之間進行傳輸。當緩沖區(qū)的數(shù)據(jù)被傳輸?shù)轿锢泶鎯ζ骱?,更新操作才是永久性的?18緩沖區(qū)√重做事務如果在寫入緩沖區(qū)和傳輸緩沖數(shù)據(jù)到物理存儲器過程中發(fā)生故障,則恢復管理器必須確定故障發(fā)生時執(zhí)行WRITE操作的事務的狀態(tài):如果事務已經(jīng)執(zhí)行了COMMIT語句,則恢復管理器將重做(也稱為前滾)事務的操作并將事務的更新結果保存到數(shù)據(jù)庫中。向前恢復保證了事務的持久性。*19向前恢復過程首先讀取最新的數(shù)據(jù)庫轉儲和修改數(shù)據(jù)的事務日志。然后讀取日志記錄,從數(shù)據(jù)庫轉儲之后的第一個記錄開始,一直讀到物理損壞前的最后一次記錄。(從后向前讀)對于每一條日志記錄,把數(shù)據(jù)庫轉儲中相關的數(shù)據(jù)值修改為日志記錄中修改后的值,使數(shù)據(jù)庫中的值是事務執(zhí)行完成后的最終結果。*20重做示意圖*2113.3.2向后恢復向后恢復(也稱為撤銷,UNDO)用于數(shù)據(jù)庫正常操作過程中發(fā)生錯誤時的恢復過程。這種錯誤可能是人為鍵入的數(shù)據(jù),或是程序異常結束而留下的未完成的數(shù)據(jù)庫修改。*22向后恢復(續(xù))如果在故障發(fā)生時事務尚未提交,則將導致數(shù)據(jù)庫的不一致性。因此恢復管理器必須撤銷(回滾)事務對數(shù)據(jù)庫的所有影響。向后恢復保證了事務的原子性。*23向后恢復過程從數(shù)據(jù)庫的當前狀態(tài)和事務日志的最后一條記錄開始,按從前向后的順序讀取日志,將數(shù)據(jù)庫中已更新的數(shù)據(jù)值改為記錄在日志中的更新前的值(前像),直至錯誤發(fā)生點。*24回滾示意圖*25示例1*26撤銷撤銷重做重做重做重做示例2有事務操作歷史及相應的日志記錄:時間事務操作日志記錄說明時刻1R1(A,50)(S,1)啟動事務T1的日志記錄,無需在日志中記錄讀操作,但這個操作表示事務T1的開始時刻2W1(A,20)(W,1,A,50,20)將事務T1修改A的操作記入日志。A修改前的值是50,修改后的值是20時刻3R2(C,100)(S,2)啟動事務T2的日志記錄時刻4W2(C,50)(W,2,C,100,50)將事務T2修改C的操作記入日志。C修改前的值是100,修改后的值是50時刻5C2(C,2)提交T2(將日志緩沖區(qū)中的信息寫入日志文件)時刻6R1(B,50)沒有日志項時刻7W1(B,80)(W,1,B,50,80)將事務T1修改B的操作記入日志。B修改前的值是50,修改后的值是80時刻8C1(C,1)提交T1(將日志緩沖區(qū)中的信息寫入日志文件)恢復完成之后:A=50,B=50,C=50系統(tǒng)崩潰X故障恢復過程在發(fā)生故障的系統(tǒng)被重啟后,數(shù)據(jù)庫的恢復經(jīng)歷了兩個階段:撤銷:按逆向順序讀取日志文件中的記錄直至第一條記錄;重做:順序向前讀取日志文件中的記錄直到最后一條記錄。大多數(shù)商業(yè)DBMS都是先進行撤銷,再進行重做。*28在W1(B,80)之后發(fā)生故障的事務操作撤銷過程*29序號日志記錄完成的撤銷操作1(C,2)將事務T2放入事務提交列表2(W,2,C,100,50)由于事務T2在提交列表,因此不進行任何操作3(S,2)記錄事務T2不再活動4(W,1,A,50,20)事務T1還未提交。最后一部是寫操作,因此系統(tǒng)執(zhí)行撤銷操作,把A改為修改前的值(50)。將事務T1放入未提交事務列表5(S,1)到達事務T1的開始點,現(xiàn)在沒有可撤銷的活動了,因此撤銷階段結束在W1(B,80)之后發(fā)生故障的事務操作重做過程*30序號日志記錄重做操作6(S,1)無動作7(W,1,A,50,20)事務T1未提交,無動作8(S,2)無動作9(W,2,C,100,50)由于事務T2已提交,因此重做該修改,即把C的值改為5010(C,2)無動作,恢復結束13.3.3介質(zhì)故障恢復當發(fā)生介質(zhì)故障時,磁盤上的物理數(shù)據(jù)和日志文件均遭到破壞,這是破壞最嚴重的一種故障。要從介質(zhì)故障中恢復數(shù)據(jù)庫,必須在故障前對數(shù)據(jù)庫進行定期轉儲。在介質(zhì)正常后,再利用轉儲恢復數(shù)據(jù)庫。*3113.4恢復技術恢復技術依賴于數(shù)據(jù)庫損壞的類型和程度?;驹瓌t是事務的所有操作必須作為一個邏輯工作單元來對待,并且要保證數(shù)據(jù)庫的一致性。數(shù)據(jù)庫損壞的類型:物理損壞非物理或事務故障*32物理損壞需要利用數(shù)據(jù)庫的最新轉儲進行恢復。如果事務日志文件沒有損壞,還可利用事務日志重新執(zhí)行已提交事務的更新操作。*33事務故障需要撤銷(回滾)引起不一致的修改。為確保更新已到達物理存儲設備,有必要重做(前滾)一些事務。通過使用事務日志文件中更新前的值(前像)和更新后的值(后像),使數(shù)據(jù)庫恢復到一致性狀態(tài)。這種技術也稱為基于日志的恢復技術。有兩種:延遲更新立即更新*3413.4.1延遲更新技術只有到達事務的提交點,更新才被寫入數(shù)據(jù)庫。即:數(shù)據(jù)庫的更新要延遲到事務執(zhí)行成功并提交時。在事務執(zhí)行過程中,更新只被記錄在事務日志和緩沖區(qū)中。當事務提交后,更新被記錄到數(shù)據(jù)庫。*35延遲更新技術(續(xù))如果一個事務在到達提交點之前出現(xiàn)故障,將不會修改數(shù)據(jù)庫,因此沒必要進行撤銷操作。但如果發(fā)生故障時事務的更新還未寫入到數(shù)據(jù)庫,則必須重做已提交事務的更新。*36延遲更新技術的日志內(nèi)容當事務T啟動時,將“事務開始”(或<T,BEGIN>)記錄寫入事務日志文件。在事務T執(zhí)行期間,寫入一條包含所有之前指定的日志數(shù)據(jù)的日志記錄,例如,為屬性A賦新值ai,則用<WRITE(A,ai)>表示。當事務T的所有活動都成功提交時,將記錄<T,COMMIT>寫入事務日志,并將該事務的所有日志記錄寫到磁盤上,然后提交該事務。如果事務T被撤銷了,則忽略該事務的事務日志,并且不執(zhí)行寫操作。*37注意是在事務真正提交之前將日志記錄寫到磁盤因此,如果在數(shù)據(jù)庫的真正更新過程中發(fā)生了故障,日志記錄不會受損。當故障發(fā)生時,檢查日志文件,找到故障發(fā)生時正在執(zhí)行的所有事務。從日志文件的最后一個入口開始,回滾到最近的一個檢查點(13.4.4介紹)記錄。*38恢復過程所有出現(xiàn)了事務開始和事務提交日志記錄的事務必須被重做。重做的順序是日志記錄被寫入日志的順序。如果在故障發(fā)生前已經(jīng)執(zhí)行了寫操作,由于該寫操作對數(shù)據(jù)項沒有影響,因此即使再次寫該數(shù)據(jù)也不會有問題。這種方法保證了一定會更新所有在故障發(fā)生前沒有被正確更新的數(shù)據(jù)項。*39恢復過程(續(xù))對所有出現(xiàn)了事務開始和事務撤銷的日志記錄的事務,不進行特別的操作,因為它們實際上并沒有寫數(shù)據(jù)庫。如果在恢復過程中又發(fā)生了系統(tǒng)崩潰,則可以再次使用日志記錄來恢復數(shù)據(jù)庫。*40轉賬示例賬戶A轉賬給賬戶B2000元,假設賬戶A現(xiàn)余額10000元,賬戶B現(xiàn)余額3000元。轉賬事務T的正常執(zhí)行過程:*41時間事務步驟動作時刻1READ(A,a1)讀取賬戶A的當前余額時刻2a1=a1-2000將賬戶A的余額減去2000時刻3WRITE(A,a1)將新的余額寫入到賬戶表中時刻4READ(B,b1)讀取賬戶B的當前余額時刻5b1=b1+2000將賬戶B的余額加上2000時刻6WRITE(B,b1)將新的余額寫入到賬戶表中立即更新轉賬示例(續(xù))轉賬事務T的延時更新日志記錄*42時間日志記錄數(shù)據(jù)庫存儲的值事務開始之前A=10000B=3000時刻1<T,BEGIN>時刻2<T,A,8000>時刻3<T,B,5000>時刻4<T,COMMIT>事務執(zhí)行之后A=8000B=5000轉賬示例(續(xù))在<T,COMMIT>記錄被寫入事務日志之后、更新記錄被寫入數(shù)據(jù)庫之前發(fā)生故障時,事務T的延時更新日志記錄:*43時間日志記錄數(shù)據(jù)庫存儲的值事務開始之前A=10000B=3000時刻1<T,BEGIN>時刻2<T,A,8000>時刻3<T,B,5000>時刻4<T,COMMIT>當系統(tǒng)進行恢復時,重做事務T的操作,賬戶A和B的新值8000和5000被寫入到數(shù)據(jù)庫中。轉賬示例(續(xù))在WRITE(B,b1)操作執(zhí)行之前發(fā)生故障的事務日志。事務T的延時更新日志記錄:*44時間日志記錄數(shù)據(jù)庫存儲的值事務開始之前A=10000B=3000時刻1<T,BEGIN>時刻2<T,A,8000>時刻3<T,B,5000>當系統(tǒng)進行恢復時,無需執(zhí)行任何操作。數(shù)據(jù)庫中賬戶A和B的值仍為10000和3000。13.4.2立即更新技術更新一旦發(fā)生即被施加到數(shù)據(jù)庫中,而無需等到事務提交點以及所有的更改被保存在事務日志時。除了需要重做故障之前已提交的事務所做的更改外,還需要撤銷當故障發(fā)生時仍未提交的事務所造成的影響。*45立即更新技術的日志內(nèi)容當事務T開始時,“事務開始”(或<T,BEGIN>)被寫入事務日志文件。當執(zhí)行寫操作時,向日志文件中寫入一條包含必要數(shù)據(jù)的記錄。一旦寫入了事務日志記錄,就對數(shù)據(jù)庫緩沖區(qū)進行寫更新。當緩沖區(qū)數(shù)據(jù)被轉入輔存時,寫入對數(shù)據(jù)庫的更新讀數(shù)據(jù)庫自身的更新在緩沖區(qū)下一次被刷新到輔存時進行。當事務T提交時,“事務提交”(<T,COMMIT>)記錄被寫入事務日志。*46說明日志記錄是在對應的寫操作施加到數(shù)據(jù)庫之前被寫入的,這稱為“先寫日志協(xié)議”。通過使用先寫日志協(xié)議,恢復管理器可以大膽假設,如果在日志文件中不存在某個事務的提交記錄,則該事務在故障發(fā)生時一定處于活動狀態(tài),因此必須被撤銷。*47說明如果事務被撤銷,則可利用日志撤銷事務所做的修改,因為日志中包含了所有被更新字段的原始值(前像)。由于一個事務可能對一個數(shù)據(jù)項進行過多次更改,因此對寫的撤銷應按逆序進行。無論事務的寫操作是否被施加到了數(shù)據(jù)庫,寫入數(shù)據(jù)項的前像保證了數(shù)據(jù)庫被恢復到事務開始前的狀態(tài)。*48恢復過程對于任何在日志中同時有“事務開始”和“事務提交”記錄的事務,用日志記錄來重做,按日志記錄的方式寫入更新字段的后像值。對于任何在日志中只有“事務開始”記錄而沒有“事務提交”記錄的事務,必須撤銷它。這里使用日志記錄得到被修改字段的前像值,并將前像值寫入數(shù)據(jù)庫,從而將數(shù)據(jù)庫恢復到事務開始之前的狀態(tài)。撤銷操作按它們被寫入日志的逆序進行。*49立即更新日志示例轉賬事務T的立即更新日志記錄:*50時間日志記錄數(shù)據(jù)庫存儲的值事務開始之前A=10000B=3000時刻1<T,BEGIN>時刻2<T,A,10000,8000>時刻3A=8000時刻4<T,B,3000,5000>時刻5B=5000時刻6<T,COMMIT>轉賬事務立即更新示例(續(xù))寫操作WRITE(B,b1)執(zhí)行之前發(fā)生故障時的事務日志:*51時間日志記錄數(shù)據(jù)庫存儲的值事務開始之前A=10000B=3000時刻1<T,BEGIN>時刻2<T,A,10000,8000>時刻3A=8000事務T必須被撤銷,因此執(zhí)行UNDO(T)操作,使A的值恢復為10000,且事務T需要重新開始。立即更新示例(續(xù))當<T,COMMIT>被寫入事務日志之后,但新值被寫入數(shù)據(jù)庫之前發(fā)生故障時的事務日志:時間日志記錄數(shù)據(jù)庫存儲的值事務開始之前A=10000B=3000時刻1<T,BEGIN>時刻2<T,A,10000,8000>時刻3A=8000時刻4<T,B,3000,5000>時刻5B=5000時刻6<T,COMMIT>當系統(tǒng)恢復時,執(zhí)行REDO(T)操作,A和B的值分別為8000和5000。13.4.3鏡像頁技術在鏡像頁模式中,數(shù)據(jù)庫被認為是由固定大小的磁盤分區(qū)的邏輯存儲單元組成。通過頁表將頁映射到物理磁盤分區(qū),數(shù)據(jù)庫中的每個邏輯頁對應頁表中的一條記錄。每條記錄包含頁所存儲的物理存儲的分區(qū)號。在單用戶環(huán)境下,鏡像頁技術不需要使用事務日志,在多用戶環(huán)境下可能需要事務日志來支持并發(fā)控制。*53鏡像頁技術(續(xù))鏡像頁方法在事務的生存期內(nèi),維護兩個頁表,:當前頁表、鏡像頁表。當事務剛啟動時,兩個頁表是一樣的。此后,鏡像頁表不再改變,并在系統(tǒng)故障時用于恢復數(shù)據(jù)庫。在事務執(zhí)行過程中,當前頁表被用于記錄對數(shù)據(jù)庫的所有更新。但事務結束時,當前頁表轉變成鏡像頁表。*54鏡像頁模式*55說明被事務影響的頁被復制到新的物理存儲區(qū)中,通過當前頁表,這些分區(qū)和那些沒有被修改的分區(qū)是事務可以訪問的。被更改的頁的老版本保持不變,通過鏡像頁表事務仍然可以訪問這些頁。鏡像頁表包含事務開始之前頁表中存在的記錄以及從未被事務修改的分區(qū)記錄。鏡像頁表在事務發(fā)生時保持不變,用于撤銷事務時使用。*56鏡像頁技術優(yōu)缺點優(yōu)點:消除了維護事務日志文件的開銷,而且,由于不需要對操作進行撤銷或重做,因此恢復速度非???。缺點:數(shù)據(jù)碎片或分散,需要定期進行垃圾收集以回收不能訪問的分區(qū)。*5713.4.4檢查點技術在利用日志進行數(shù)據(jù)庫恢復時,一般需要檢查所有的日志記錄。這有兩個問題:搜索整個日志將耗費大量的時間,很多需要重做的事務實際上可能已經(jīng)將它們的更新結果寫到了數(shù)據(jù)庫中,而恢復子系統(tǒng)又重新執(zhí)行這些操作,同樣浪費了大量時間。*58檢查點技術為解決上述問題,發(fā)展了具有檢查點的恢復技術。這種技術在日志文件中增加兩個新的記錄檢查點記錄重新開始記錄檢查點記錄的內(nèi)容包括:建立檢查點時刻所有正在執(zhí)行的事務列表;這些事務最近一個日志記錄的地址。*59重新開始文件用于記錄各個檢查點記錄在日志文件中的地址。圖示為建立檢查點Ci時對應的日志文件和重新開始文件。動態(tài)維護日志文件的方法周期性地執(zhí)行建立檢查點和保存數(shù)據(jù)庫狀態(tài)的操作。具體步驟:①

將日志緩沖區(qū)中的所有日志記錄寫到磁盤日志文件上。②

在日志文件中寫入一個檢查點記錄,該記錄包含所有在檢查點運

溫馨提示

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

評論

0/150

提交評論