成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

DB2數據庫崩潰之后,用事務日志恢復的原因是什么?

數據庫
以下的文章主要向大家講述的是DB2數據庫崩潰之后,用事務日志恢復的主要原因與正確的操作技巧,以下就是正文的主要內容描述。

文章介紹的是DB2數據庫崩潰之后,用事務日志恢復的主要原因與正確的操作技巧,如果你對DB2數據庫崩潰后用事務日志恢復的原與正確的操作技巧心存好奇的話,以下的文章將會揭開它的神秘面紗。

日志, 事務, 技巧, 原理日志, 事務, 技巧, 原理

 

在系統崩潰之后,使用DB2的事務日志恢復數據庫。 您曾多少次碰到過錯誤消息“SQL0946C The transaction log for the database is full?”

 

在盡力解決該問題時,您是否停下來思考如下兩個問題:1. 為何存在事務日志;2. 事務日志記錄服務的目的是什么呢?

 

若沒有事務,多個用戶和應用程序同時與一個數據庫進行交互時就必然會破壞數據。而如果沒有事務日志記錄,DB2 UDB中的一些據庫恢復方法就不會存在。

 

如果您還沒有完全理解這些概念,也不必擔憂。我將解釋事務是什么以及事務日志記錄背后的機制。然后,我將展示在系統DB2數據庫崩潰或程序故障之后,如何使用數據庫事務日志文件中所存儲的信息來使數據庫回歸到一致、可用的狀態。您還可以通過這些重要的日志做更多事情。

 

事務

 

事務(也稱作工作單元)是指一個或多個SQL操作的序列,這些操作組合成一個單元且通常位于一個應用程序進程內。該單元通常稱作是“原子的”,因為它是不可分的——它的所有工作要么全都執行,要么全都不執行。一個給定的事務可以執行任何數目的SQL操作(從一個到幾千個,取決于業務邏輯里對于“一步”的定義)。

 

一個事務的開始和終止定義了數據庫里數據一致性的點;要么將事務里所執行的所有操作的結果應用到數據庫上,并使之成為***的(已提交),要么將之都撤銷(回滾),使數據庫返回到啟動該事務之前的狀態。

 

事務是在建立到數據庫的連接之后***次執行SQL語句時或在現有事務終止時立即啟動。一旦啟動,就可以使用名為原子提交的功能隱式地終止該事務。通過原子提交,會將每條可執行的SQL語句當作一個事務。如果該語句執行成功,那它所做的任何修改都將應用到數據庫上,但如果語句失敗,那修改將被丟棄。

 

還可以通過執行COMMIT或ROLLBACK SQL語句顯式地終止事務。

 

這些語句的基本語法是:

 

  1. COMMIT <WORK> 
  2. ROLLBACK <WORK>  

在COMMIT終止事務時,會將該事務從開始時對數據庫所做的所有修改變成***性的。使用ROLLBACK,所有修改都將撤銷。

事務所做的未提交的修改對其他用戶和應用程序來說是無法訪問的,除非那些用戶和應用程序使用的是未提交讀(UR)隔離。然而,一旦提交了事務所做的修改,它們對于所有其他用戶和應用程序來說就都是可以訪問的了,并且只能通過執行新事務中的新SQL語句來刪除。

 

事務日志記錄

 

在向一個基表進行INSERT時,首先在緩沖池中創建一條記錄,該緩沖池與指定該表的數據存儲于何處的表空間相關聯。每次更新或刪除一條記錄時,就從存儲器中檢索包含該記錄的頁面,并復制到適當的緩沖池中,然后由UPDATE/DELETE進行修改。

一旦進行了這一修改,就會向日志緩沖器寫入一條反映該動作的記錄,日志緩沖器是內存中的另一指定存儲區(為日志緩沖器預留的真正存儲大小是由logbufsiz數據庫配置參數控制的)。如果執行INSERT,就會寫入一條包含了新行數據值的記錄。當出現刪除時,就寫入一條包含了該行原始值的記錄。

如果執行UPDATE,就寫入一條包含了該行原始值和新值的記錄(在大多數情況下,通過用該行的更新值在原始值上執行EXCLUSIVE OR,為更新操作生成日志記錄)。最終,當執行INSERT、UPDATE或DELETE的事務終止時,就將相應的COMMIT或ROLLBACK記錄寫入日志緩沖器。

 

每當激活緩沖池I/O頁面清理器,日志緩沖器本身已滿,或者提交或回滾事務時,就立即將日志緩沖器中存儲的所有記錄寫入磁盤上所存儲的一個或多個事務日志文件中。如果發生系統故障,日志緩沖器的不斷刷新將最小化可能丟失的日志記錄數目。

一旦將與特定事務相關聯的所有日志記錄(包括相應的COMMIT或ROLLBACK記錄)成功具體化(externalize)為一個或多個日志文件,就會將事務本身的結果復制到適當的表空間容器以***存儲(已修改的數據頁本身仍保留在內存中,在必要時可以快速進行訪問;它們最終將被改寫)。該過程稱作寫前日志記錄(write-ahead logging),保證對數據所做的修改在記錄到數據庫之前,總是被具體化為日志文件。

 

因為多個事務可以在任何時候使用一個數據庫,所以一個日志文件可能包含屬于幾個不同事務的日志記錄。為了追蹤一條日志記錄屬于哪個事務,要給每條日志記錄分配一個特殊的事務ID,將之綁定到創建它的事務。

通過使用事務ID,可以隨時將與特定事務相關聯的日志記錄寫入一個或多個日志文件,而不影響數據一致性——最終,對于終止該事務的操作的COMMIT或ROLLBACK記錄也將進行日志記錄。

 

崩潰恢復

 

在還未提交事務的修改之前,如果發生問題——例如,發生停電或應用程序異常終止——會發生什么事情呢?事務所做的任何未提交或已回滾的工作都將丟失。此外,如果正在將其數據具體化(externalize)到數據庫的已提交事務遭到破壞,該數據庫將處于不一致、不可用的狀態(每當嘗試建立連接時,不一致的數據庫將生成返回代碼和錯誤消息)。您無法恢復內存中所存儲的事務記錄,但是可以通過執行名為DB2數據庫崩潰恢復的操作,將不一致的數據庫恢復為一致、可用的狀態。

 

啟動崩潰恢復的最常用方法就是從DB2命令行處理器(DB2 Command Line Processor,CLP)執行RESTART命令。該命令的基本語法是:

 

  1. RESTART [DATABASE | DB]   
  2. [DatabaseName]   
  3. USER [UserName] < USING   
  4. [Password] > >   
  5. < DROP PENDING TABLESPACES   
  6. ( [TS_Name] , ... ) >   
  7. < WRITE RESUME >  

其中: DatabaseName 指示分配給嘗試進行恢復的數據庫的名稱。

UserName 指示分配給用戶的名稱,崩潰恢復將在該用戶的權限下執行。

 

Password 指示與用戶名稱相對應的密碼,崩潰恢復將在該用戶的權限下執行。

 

TS_Name 指示分配給一個或多個表空間的名稱,如果在嘗試將表空間恢復為一致狀態時碰到錯誤,那么這些表空間將被禁用或置為Drop Pending模式。

 

注意:尖括號(< >)中顯示的參數是可選的;方括號([ ])中顯示的參數是必需的;逗號后面加省略號(, ...)表示前面的參數可以重復多次。關于 RESTART 命令的完整語法,請參閱IBM DB2 Universal Database, Version 8 Command Reference(ftp.software.ibm.com/ps/products/db2/info/vr8/pdf/letter/db2n0e80.pdf)。

 

如果需要在名為SAMPLE的數據庫上執行DB2數據庫崩潰恢復操作,就執行RESTART DATABASE SAMPLE命令。

 

您還可以配置數據庫,以便每當用戶或應用程序嘗試連接處于不一致狀態時,它就會自動啟動崩潰恢復。僅僅需要將值ON分配給數據庫的AUTORESTART配置參數(每當激活數據庫或嘗試建立連接時,DB2 Database Manager就檢查數據庫的狀態。當autorestart配置參數設置為ON時,如果數據庫處于不一致的狀態,Database Manager就自動執行RESTART命令)。

 

在進行崩潰恢復時,將分析數據庫事務日志文件中存儲的記錄,并將每條具有相應COMMIT記錄的事務記錄重新應用到數據庫。重現然后撤銷沒有相應COMMIT記錄的所有記錄(這就是為何要為所有更新操作記錄前后信息的原因)。

因為日志記錄頻繁進行具體化,且由特定事務所做的修改只有當事務本身成功終止時才進行具體化,所以在故障之后將數據庫恢復到一致性狀態的能力總是能得到保證。DB2數據庫崩潰恢復只是事務日志所提供的功能中的一種。

 

本主題由 hchao 于 2010-3-12 18:12 分類

責任編輯:佚名 來源: 新華網
相關推薦

2010-08-12 11:20:19

DB2數據庫崩潰

2010-08-02 18:09:15

DB2實例無法啟動

2010-07-29 17:20:27

2010-07-27 14:12:01

DB2實例

2010-08-05 15:32:44

重定向恢復DB2數據庫

2011-03-03 14:52:40

DB2數據庫恢復

2010-09-01 10:17:14

DB2日志

2010-08-18 15:31:30

DB2數據庫恢復

2010-08-25 14:12:47

DB2備份恢復

2009-03-25 17:43:09

備份DB2IBM

2010-08-12 10:54:21

IBM DB2數據庫

2010-08-12 11:38:21

DB2數據庫

2011-03-11 16:02:03

DB2數據庫安裝

2010-07-28 13:38:34

DB2數據庫

2010-08-31 13:35:53

DB2備份恢復

2010-08-27 13:27:50

DB2備份恢復

2010-08-25 10:16:48

DB2備份Linux

2010-11-03 16:32:10

DB2創建數據庫

2010-08-31 17:34:46

DB2

2010-11-01 13:45:16

DB2數據庫的優勢
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品综合色区在线观看 | 国产精品久久久久久中文字 | 亚洲福利网 | 免费一区二区三区 | 久久av一区二区三区 | www.xxxx欧美 | 免费看色 | 精区3d动漫一品二品精区 | 午夜久久久久久久久久一区二区 | 日韩av大片免费看 | 国产精品一级 | 亚洲人成人一区二区在线观看 | 久久精品国产亚洲夜色av网站 | 一区二区三区四区在线视频 | 天天干在线播放 | 99久久精品国产毛片 | 色婷婷综合久久久中文字幕 | 亚洲精品久久久久久一区二区 | 亚洲一区二区三区四区视频 | 盗摄精品av一区二区三区 | 色黄视频在线 | 免费久久精品视频 | 天堂三级 | 精品影院| 国产精品免费高清 | 久久国际精品 | 国内精品免费久久久久软件老师 | 久久久123 | 成人一级视频在线观看 | 日韩一区二区在线视频 | 一本岛道一二三不卡区 | av一级久久| 欧美激情综合 | 在线欧美激情 | 国产成人免费观看 | 久久久国产视频 | 亚洲美女天堂网 | 日本一区二区高清视频 | 自拍偷拍欧美 | 亚洲精品天堂 | 国产一级片在线观看视频 |