亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

DB2崩潰后用事務日志恢復的原理和技巧(1)

瀏覽:5日期:2023-11-10 10:28:16
在系統(tǒng)崩潰之后,使用DB2的事務日志恢復數(shù)據(jù)庫。您曾多少次碰到過錯誤消息“SQL0946C The transaction log for the database is full?在盡力解決該問題時,您是否停下來思考如下兩個問題:1. 為何存在事務日志;2. 事務日志記錄服務的目的是什么呢?若沒有事務,多個用戶和應用程序同時與一個數(shù)據(jù)庫進行交互時就必然會破壞數(shù)據(jù)。而假如沒有事務日志記錄,DB2 UDB中的一些據(jù)庫恢復方法就不會存在。假如您還沒有完全理解這些概念,也不必擔憂。我將解釋事務是什么以及事務日志記錄背后的機制。然后,我將展示在系統(tǒng)崩潰或程序故障之后,如何使用數(shù)據(jù)庫事務日志文件中所存儲的信息來使數(shù)據(jù)庫回歸到一致、可用的狀態(tài)。您還可以通過這些重要的日志做更多事情。在今后的專欄中,我將展示如何使用事務日志文件重現(xiàn)操作,以將數(shù)據(jù)庫恰好恢復到給定時間點所處的狀態(tài)。事務事務(也稱作工作單元)是指一個或多個SQL操作的序列,這些操作組合成一個單元且通常位于一個應用程序進程內(nèi)。該單元通常稱作是“原子的,因為它是不可分的——它的所有工作要么全都執(zhí)行,要么全都不執(zhí)行。一個給定的事務可以執(zhí)行任何數(shù)目的SQL操作(從一個到幾千個,取決于業(yè)務邏輯里對于“一步的定義)。一個事務的開始和終止定義了數(shù)據(jù)庫里數(shù)據(jù)一致性的點;要么將事務里所執(zhí)行的所有操作的結(jié)果應用到數(shù)據(jù)庫上,并使之成為永久的(已提交),要么將之都撤銷(回滾),使數(shù)據(jù)庫返回到啟動該事務之前的狀態(tài)。事務是在建立到數(shù)據(jù)庫的連接之后第一次執(zhí)行SQL語句時或在現(xiàn)有事務終止時立即啟動。一旦啟動,就可以使用名為原子提交的功能隱式地終止該事務。通過原子提交,會將每條可執(zhí)行的SQL語句當作一個事務。假如該語句執(zhí)行成功,那它所做的任何修改都將應用到數(shù)據(jù)庫上,但假如語句失敗,那修改將被丟棄。 1234下一頁 還可以通過執(zhí)行COMMIT或ROLLBACK SQL語句顯式地終止事務。這些語句的基本語法是:COMMIT <WORK>ROLLBACK <WORK>在COMMIT終止事務時,會將該事務從開始時對數(shù)據(jù)庫所做的所有修改變成永久性的。使用ROLLBACK,所有修改都將撤銷。事務所做的未提交的修改對其他用戶和應用程序來說是無法訪問的,除非那些用戶和應用程序使用的是未提交讀(UR)隔離。然而,一旦提交了事務所做的修改,它們對于所有其他用戶和應用程序來說就都是可以訪問的了,并且只能通過執(zhí)行新事務中的新SQL語句來刪除。事務日志記錄在向一個基表進行INSERT時,首先在緩沖池中創(chuàng)建一條記錄,該緩沖池與指定該表的數(shù)據(jù)存儲于何處的表空間相關(guān)聯(lián)。每次更新或刪除一條記錄時,就從存儲器中檢索包含該記錄的頁面,并復制到適當?shù)木彌_池中,然后由UPDATE/DELETE進行修改。一旦進行了這一修改,就會向日志緩沖器寫入一條反映該動作的記錄,日志緩沖器是內(nèi)存中的另一指定存儲區(qū)(為日志緩沖器預留的真正存儲大小是由logbufsiz數(shù)據(jù)庫配置參數(shù)控制的)。假如執(zhí)行INSERT,就會寫入一條包含了新行數(shù)據(jù)值的記錄。當出現(xiàn)刪除時,就寫入一條包含了該行原始值的記錄。假如執(zhí)行UPDATE,就寫入一條包含了該行原始值和新值的記錄(在大多數(shù)情況下,通過用該行的更新值在原始值上執(zhí)行EXCLUSIVE OR,為更新操作生成日志記錄)。最終,當執(zhí)行INSERT、UPDATE或DELETE的事務終止時,就將相應的COMMIT或ROLLBACK記錄寫入日志緩沖器。每當激活緩沖池I/O頁面清理器,日志緩沖器本身已滿,或者提交或回滾事務時,就立即將日志緩沖器中存儲的所有記錄寫入磁盤上所存儲的一個或多個事務日志文件中。假如發(fā)生系統(tǒng)故障,日志緩沖器的不斷刷新將最小化可能丟失的日志記錄數(shù)目。一旦將與特定事務相關(guān)聯(lián)的所有日志記錄(包括相應的COMMIT或ROLLBACK記錄)成功具體化(externalize)為一個或多個日志文件,就會將事務本身的結(jié)果復制到適當?shù)谋砜臻g容器以永久存儲(已修改的數(shù)據(jù)頁本身仍保留在內(nèi)存中,在必要時可以快速進行訪問;它們最終將被改寫)。該過程稱作寫前日志記錄(write-ahead logging),保證對數(shù)據(jù)所做的修改在記錄到數(shù)據(jù)庫之前,總是被具體化為日志文件。見下圖: 上一頁1234下一頁 因為多個事務可以在任何時候使用一個數(shù)據(jù)庫,所以一個日志文件可能包含屬于幾個不同事務的日志記錄。為了追蹤一條日志記錄屬于哪個事務,要給每條日志記錄分配一個非凡的事務ID,將之綁定到創(chuàng)建它的事務。通過使用事務ID,可以隨時將與特定事務相關(guān)聯(lián)的日志記錄寫入一個或多個日志文件,而不影響數(shù)據(jù)一致性——最終,對于終止該事務的操作的COMMIT或ROLLBACK記錄也將進行日志記錄。崩潰恢復在還未提交事務的修改之前,假如發(fā)生問題——例如,發(fā)生停電或應用程序異常終止——會發(fā)生什么事情呢?事務所做的任何未提交或已回滾的工作都將丟失。此外,假如正在將其數(shù)據(jù)具體化(externalize)到數(shù)據(jù)庫的已提交事務遭到破壞,該數(shù)據(jù)庫將處于不一致、不可用的狀態(tài)(每當嘗試建立連接時,不一致的數(shù)據(jù)庫將生成返回代碼和錯誤消息)。您無法恢復內(nèi)存中所存儲的事務記錄,但是可以通過執(zhí)行名為崩潰恢復的操作,將不一致的數(shù)據(jù)庫恢復為一致、可用的狀態(tài)。啟動崩潰恢復的最常用方法就是從DB2命令行處理器(DB2 Command Line Processor,CLP)執(zhí)行RESTART命令。該命令的基本語法是:RESTART [DATABASE | DB][DatabaseName]USER [UserName] < USING[Password] > >< DROP PENDING TABLESPACES( [TS_Name] , ... ) >< WRITE RESUME >其中:DatabaseName 指示分配給嘗試進行恢復的數(shù)據(jù)庫的名稱。UserName 指示分配給用戶的名稱,崩潰恢復將在該用戶的權(quán)限下執(zhí)行。 上一頁1234下一頁 Password 指示與用戶名稱相對應的密碼,崩潰恢復將在該用戶的權(quán)限下執(zhí)行。TS_Name 指示分配給一個或多個表空間的名稱,假如在嘗試將表空間恢復為一致狀態(tài)時碰到錯誤,那么這些表空間將被禁用或置為Drop Pending模式。注重:尖括號(< >)中顯示的參數(shù)是可選的;方括號([ ])中顯示的參數(shù)是必需的;逗號后面加省略號(, ...)表示前面的參數(shù)可以重復多次。關(guān)于 RESTART 命令的完整語法,請參閱IBM DB2 Universal Database, Version 8 Command Reference(ftp.software.ibm.com/ps/products/db2/info/vr8/pdf/letter/db2n0e80.pdf)。假如需要在名為SAMPLE的數(shù)據(jù)庫上執(zhí)行崩潰恢復操作,就執(zhí)行RESTART DATABASE SAMPLE命令。您還可以配置數(shù)據(jù)庫,以便每當用戶或應用程序嘗試連接處于不一致狀態(tài)時,它就會自動啟動崩潰恢復。僅僅需要將值ON分配給數(shù)據(jù)庫的AUTORESTART配置參數(shù)(每當激活數(shù)據(jù)庫或嘗試建立連接時,DB2 Database Manager就檢查數(shù)據(jù)庫的狀態(tài)。當autorestart配置參數(shù)設置為ON時,假如數(shù)據(jù)庫處于不一致的狀態(tài),Database Manager就自動執(zhí)行RESTART命令)。在進行崩潰恢復時,將分析數(shù)據(jù)庫事務日志文件中存儲的記錄,并將每條具有相應COMMIT記錄的事務記錄重新應用到數(shù)據(jù)庫。重現(xiàn)然后撤銷沒有相應COMMIT記錄的所有記錄(這就是為何要為所有更新操作記錄前后信息的原因)。因為日志記錄頻繁進行具體化,且由特定事務所做的修改只有當事務本身成功終止時才進行具體化,所以在故障之后將數(shù)據(jù)庫恢復到一致性狀態(tài)的能力總是能得到保證。崩潰恢復只是事務日志所提供的功能中的一種。在處理前滾恢復時,我將展示如何可以使用事務日志文件中所存儲的記錄將數(shù)據(jù)庫恢復到任何指定時間點所處的狀態(tài)。但是您首先需要理解備份映像和版本恢復等概念,我將在下一專欄中介紹這兩個主題。 上一頁1234
主站蜘蛛池模板: 亚洲高清在线视频 | 深夜福利视频在线看免费 | 国产视频手机在线观看 | 亚洲一区二区三区高清 不卡 | 国产美女精品在线 | 欧美日韩一区二区三在线 | 免费的黄视频 | 亚洲精品一区二区三区 | 97精品在线 | 日韩一区二区三区精品 | 国产午夜亚洲精品第一区 | 久久成人综合 | 亚洲精品一区二区综合 | 精品在线免费播放 | 两性毛片 | 国产网曝手机视频在线观看 | 九九热视频免费 | 亚洲综合性| 国产精品欧美视频另类专区 | 一级视频片| 黄色毛片黄色毛片 | 免费看国产精品麻豆 | 欧美大片毛片aaa免费看 | www.日本黄色| 俄罗斯一级毛片免费视频 | 国产younv交在线视频 | 国产成人综合亚洲一区 | 俺去也亚洲色图 | 男人看片网站 | 精品久久不卡 | 五月亭亭六月丁香 | 免费黄色网址在线播放 | 午夜精品福利在线 | 成年美女黄网站色大片免费看 | 欧美视频免费在线播放 | 99热国产这里只有精品免费 | 青青视频免费 | 久久99精品一级毛片 | 97精品高清一区二区三区 | 国产亚洲3p一区二区三区 | 草操影院|