青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Prayer

在一般中尋求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

DB2 rollforward 命令使用詳解

Posted on 2010-03-23 21:30 Prayer 閱讀(1481) 評論(0)  編輯 收藏 引用 所屬分類: DB2
http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-1003wucx/

引言

在數據庫成為存儲企業數據的載體時,如何恢復數據成為大家比較關心的話題。在 DB2 中恢復數據的種類很多,本文主要介紹數據 DB2 rollforward 的使用說明,并使用 DB2 V97 做了一些實例分析,使讀者更好的了解和掌握 rollforward 的使用。


Recovery 介紹

DB2 中有四種恢復數據庫的方式,以下對其進行介紹說明:

  • Crash Recovery 是指在事務處理過程中被中斷,從而可能造成數據不一致,不可用。這時 Crash Recovery 就會保護數據庫,避免造成數據不一致,不可用的情況。
  • High Availability Disaster Recovery 是指高可用性災難恢復(HADR),其通過將數據從源數據庫復制到目標數據庫來防止災難性的數據丟失。
  • Version Recovery 是對備份介質的恢復,主要是 restore 命令。
  • Rollforward Recovery,一般是當數據庫備份后,又執行了一些新事務,如果這時發生了存儲故障或誤操作,在 restore 之后使用 rollforward 就可以對這些新事務進行修復,本文主要介紹這種恢復方式。

rollforward 準備工作

rollforward 只能在數據庫 recoverable 狀態下使用,即采用歸檔日志,參數 logarchmeth1 或者 logarchmeth2 為非 OFF 的狀態。

首先需要修改參數,使得數據庫在 recoverable 狀態下。


清單 1. 修改參數 LOGARCHMETH1
            db2 "update db cfg for $db using logfilsiz 4 LOGARCHMETH1 disk:$archivePath"
            

如果修改參數前 logarchmeth1 為 OFF,修改參數后,數據庫處于 backup pending 狀態,需要進行 offline backup 來使數據庫可用。


清單 2. 備份數據庫
            db2 "backup db $db to $backupPath"
            

備份好數據庫后執行一些事務,例如簡單事務操作 create table,insert,update,delete 等等。然后 Restore 數據庫,如果是 tablespace 級別的 rollforward,還可以用其他方式來使表空間處于 rollforward-pending 狀態。


清單 3. 恢復數據庫
            db2 "restore db $db from $backdir without prompting"
            

如果使用 restore db 時指定 WITHOUT ROLLING FORWARD 參數,則不能使數據庫處于 rollforward-pending 狀態,從而不能使用 rollforward。這里不指定 WITHOUT ROLLING FORWARD 參數,當數據庫或表空間處于 rollforward-pending 狀態,就可以對其進行 rollforward 操作了。


Rollforward 使用介紹

在數據庫日志中,記錄了對該數據庫的所有操作,用 rollforward 可以通過前滾日志把數據庫恢復到備份后有日志記錄的某一時間點,或者活動日志的末尾。

常用的 rollforward 參數有以下幾個:

  • QUERY STATUS,主要查詢數據庫當前狀態。
  • STOP,特指 rollforward 完成,這樣就不能在執行任何別的 rollforward 操作了,除非重新 restore 然后 rollforward。
  • CANCEL,取消 rollforward 操作,使進行 rollforward 中的數據庫退出 rollforward pending 狀態。
  • POINT IN TIME,rollforward 到某一特定時間點。
  • END OF LOGS,rollforward 到活動日志的末尾。
  • ONLINE,使表空間級的 rollforward 在執行時處于 online 狀態,允許其他指向數據庫的連接。

在分區數據環境中,rollforward 操作必須執行在某個分區上,以下簡單進行介紹:

  • point-in-time rollforward 會在所有的 partition 上執行。
  • END OF LOGS rollforward,如果有 ON DATABASE PARTITION 參數,rollforward 只在指定 partition 上運行,如果沒有指定 partition,那么會在所有 partition 上生效。
  • end of backup 會影響所有的 partition。

綜合上述參數,可以把 rollforward 分為兩種類型,數據庫級別的 rollforward 和表空間級的 rollforward。數據庫級的 rollforward 需要數據庫首先 restore,從而使數據庫處于 rollforward pending 狀態。而表空間級的 rolllforward 并不是只有 restore 才能成為 rollforward pending 狀態,比如突然斷電或者其他情況等等也可能使表空間進行 rollforward 操作。

當執行 rollforward 時,如果是數據庫在 rollforward pending 狀態,則進行數據庫級 rollforward。如果執行完后某些表空間還是 rollforward pending 狀態,則要執行表空間級的 rollforward 來使這些表空間恢復。在表空間級的 rollforward 中,可以指定表空間來進行 rollforward,如果未指定,則所有處于此狀態的表空間都會進行 rollforward。如果在 backup 后,更改了一個表空間的名字,那么在 rollforward 該表空間時需要使用新的表空間名字。

數據庫級 rollforward 和表空間級還有一點不同就是,數據庫級進行 rollforward 時該數據庫不能進行其他連接操作,也就是必須斷開其他連接才能進行數據庫級的 rollforward。而表空間級的可以選擇其他操作能否進行。

不能取消正在進行的 rollfoward 操作,只能在 rollfoward 完成后,使用 rollforward cancel 來取消還沒有 stop 的 rollforward,如果已經有 stop 了,就不能 cancel 了。


rollforward 案例分析

Tablespace rollforward 實例

當數據庫的數據量較大時,數據庫的全備份和恢復都非常消耗時間,這時通過表空間備份可以快速恢復數據庫。

在這個例子中,Restore 三個表空間,使用 rollforward to the end of the logs 前滾一個表空間到活動日志的末尾,然后使用 to the end of the logs and stop 前滾另外兩個表空間到活動日志的末尾。

作為 restore 和 rollforward 的先決條件,首先需要 backup 每一個表空間,如清單 4 所示。


清單 4. Backup 表空間
            db2 "update db cfg for test using logfilsiz 4 LOGARCHMETH1 disk:$archivePath"
            db2 "backup db test to $backupPath"
            db2 "connect to test"
            db2 "create tablespace tbs1"
            db2 "create tablespace tbs2"
            db2 "create tablespace tbs3"
            db2 "backup db test tablespace(tbs1) to $backupPath/tbs1"
            db2 "backup db test tablespace(tbs2) to $backupPath/tbs2"
            db2 "backup db test tablespace(tbs3) to $backupPath/tbs3"
            

圖 1 顯示了備份結果。


圖 1. Backup tablespace
圖 1. Backup tablespace

備份之后可以在指定的目錄中看到相應的備份影像。

清單 5 顯示了對三個表空間創建表和插入數據的操作清單。


清單 5. 操作表空間
            db2 "connect to test"
            db2 "create table t1(a int) in tbs1"
            db2 "create table t2(a int) in tbs2"
            db2 "create table t3(a int) in tbs3"
            db2 "insert int t1 values(1)"
            db2 "insert int t2 values(2)"
            db2 "insert int t3 values(3)"
            

操作完成后,可以通過剛才的備份影象對三個表空間進行 restore。要注意恢復的備份影像一定要和所恢復的表空間對應,不然就會恢復失敗,如清單 6 所示。


清單 6. Restore 三個表空間
            db2 "restore db test tablespace(tbs1) from $backupPath/tbs1 without prompting"
            db2 "restore db test tablespace(tbs2) from $backupPath/tbs2 without prompting"
            db2 "restore db test tablespace(tbs3) from $backupPath/tbs3 without prompting"
            

圖 2 顯示了操作表空間和恢復表空間的結果。


圖 2. 插入數據后恢復表空間
圖 2. 插入數據后恢復表空間

恢復成功之后,三個表空間都處于 rollforward pending 狀態,用戶無法訪問,狀態如圖 3 所示。


圖 3. 驗證表空間 rollforward-pending 狀態
圖 3. 驗證表空間 rollforward-pending 狀態

清單 7 顯示了訪問表空間的命令。


清單 7. 訪問表空間
            db2 "connect to test"
            db2 "select * from t1"
            db2 "select * from t2"
            db2 "select * from t3"
            

此時需要做前滾操作使表空間回到可用狀態,如清單 8 所示。


清單 8. 前滾表空間并驗證結果
            db2 "rollforward db test to end of logs tablespace(tbs1) online"
            db2 "rollforward db test to end of logs and stop tablespace(tbs2, tbs3) online"
            db2 "connect to test"
            db2 "select * from t1"
            db2 "select * from t2"
            db2 "select * from t3"
            

圖 4 正確返回對表的操作結果,說明 rollforward 成功。


圖 4. 驗證結果
圖 4. 驗證結果

rollforward query status 實例

rollforward 命令的 query status 選項可用于列出如下一些當前數據庫的信息。

  1. DB2 已經前滾的日志文件。
  2. 需要的下一個歸檔日志文件。
  3. 自前滾處理開始以來最近提交的事務的時間戳。

下面使用清單 9 來查詢數據庫狀態。


清單 9. 前滾數據庫并查詢狀態
            db2 "rollforward db test query status"
            

圖 5 中顯示 DB pending 狀態的數據庫,實際上是處于 rollforward pending 狀態。需要前滾數據庫,使數據庫回到正常狀態。


圖 5. Check Rollforward Pending Status
圖 5. Check Rollforward Pending Status

rollforward cancel 實例

在進行 cancel 操作前,先執行最基本的操作,db2 rollforward db $db to end of logs,操作完成后所有在數據庫備份后寫的日志文件都會前滾,如圖 6 所示。


圖 6. Rollforward to end of logs
圖 6. Rollforward to end of logs

接下來執行 db2 rollforward db $db cancel 操作,即取消前滾操作。執行之后前面所做的所有前滾操作都將回滾,數據庫重新處于 restore-pending 狀態,此時任何連接都被拒絕。

清單 10 列出了取消前滾并進行 restore 的命令。


清單 10. cancel rollforward and restore
            db2 "rollforward db test cancel"
            db2 "connect to test"
            db2 "restore db test from $backupPath without prompting"
            db2 "connect to test"
            

當剛取消前滾時,由于數據庫處于 restore pending 狀態,無法連接上數據庫,如圖 7 所示。


圖 7. Restore Pending 狀態
圖 7. Restore Pending 狀態

重新執行 restore 操作,db2 restore db $db from $backdir without prompting,

此時數據庫處于 rollforward-pending 狀態,此時任何連接都被拒絕,如圖 8 所示


圖 8. Rollforward Pending 狀態
圖 8. Rollforward Pending 狀態

Rollforward to end of logs and complete 實例

接著上面的實例,執行前滾操作來使數據庫可以恢復正常狀態。執行 db2 rollforward db $db to end of logs and complete 操作,將前滾到日志的最后,這意味著所有歸檔的日志和活動日志都被遍歷。如清單 11 和圖 9 所示。


清單 11. 前滾到活動日志末尾并完成前滾
            db2 "rollforward db test to end of logs and complete"
            


圖 9. Rollforward Completed
圖 9. Rollforward Completed

rollforward interrupted 實例

如果在執行 rollforward to end of logs 中,用戶誤操作或者其他原因不小心中斷了前滾操作,那么再次執行 rollforward to end of logs 時,會接著上次的中斷狀態,繼續執行以至完成。例如:db2 rollforward db $db to end of logs 在執行過程中按 Ctrl+C,使前滾操作執行中斷,此時數據庫仍然處于 rollforward-pending 狀態。清單 12 列出了這個實例的命令。


清單 12. 前滾中斷
            db2 "rollforward db test to end of logs"
            Push Ctrl+C
            db2 "rollforward db test to end of logs and stop"
            db2 "connect to test"
            

圖 10 顯示了中斷 rollfoward 命令的結果。


圖 10. Rollforward Pending 狀態
圖 10. Rollforward Pending 狀態

此時執行前滾操作 db2 rollforward db $db to end of logs and stop,rollforward 繼續執行至完成,這時數據庫連接成功,如圖 11 所示。


圖 11. Rollforward Completed
圖 11. Rollforward Completed

rollforward noretrieve 實例

noretrieve 參數表明不需要取回已經歸檔的日志,所以 rollforward db $db to end of logs and stop noretrieve 成功與否取決與 rollforward 是否需要取回歸檔日志文件。如果需要,因為前滾參數指定 noretrieve,那前滾會因為缺少這些日志文件而失敗。清單 13 和圖 12 列出了這個實例。


清單 13. 不需要取回歸檔日志的前滾
            db2 "rollforward db test to end of logs and stop noretrieve"
            


圖 12. Rollforward With noretrieve
圖 12. Rollforward With noretrieve

rollforward overflow log path 實例

參數 overflow log path 會覆蓋以前設置的 overflow log path,如果先前設置了 db2 update db cfg for test using overflowlogpath $path,那么使用 rollforward db $db to end of logs and complete overflow log path ($overflow) 命令,$overflow 會取代 $path 成為新的 overflow log path。清單 14 和圖 13 顯示了該實例。


清單 14. 覆蓋 logpath 的前滾
            db2 "rollforward db test to end of logs and complete overflow log path ($overflowPath2)"
            


圖 13. Rollforward With overflow log path
圖 13. Rollforward With overflow log path

在 rollforward 執行過程中可以看到在新的目錄 $overflow 中的日志文件,可見參數生效,如圖 14 所示。


圖 14. Overflow 日志列表
圖 14. Overflow 日志列表

rollforward backup 實例

數據庫還可以進行 rollforward backup 操作,如清單 15 所示。


清單 15. 前滾備份
            db2 "backup db test online to $backupPath include logs"
            db2 "restore db test from $backupPath taken at 20091101125919 without prompting"
            db2 "rollforward db test to end of backup"
            

圖 15 顯示了 online backup 的結果。


圖 15. Online backup
圖 15. Online backup

然后執行

 db2 restore db $db from $backupPath taken at $backupNum without prompting 

 db2 rollforward db $db to end of backup 

就可以進行恢復。Rollforward to the end of backup 可以前滾分區數據庫中所有的分區到最近的恢復點。要人工的定位這個恢復點很難,特別是對分區數據庫難上加難了,而使用 end of backup 卻很容易定位。圖 16 顯示了最終結果。


圖 16. Rollforward to end of backup
圖 16. Rollforward to end of backup

結束語

本文簡單的對 rollforward 的使用進行了介紹,并使用 DB2 V97 做了簡單的實例說明,從而能根據需要使用相應的參數,更好的運用 rollforward。


參考資料

學習

獲得產品和技術

  • 使用可直接從 developerWorks 下載的 IBM 產品評估試用軟件 構建您的下一個開發項目。

  • 現在可以免費使用 DB2。下載 DB2 Express-C,這是為社區提供的 DB2 Express Edition 的免費版本,它提供了與 DB2 Express Edition 相同的核心數據特性,為構建和部署應用程序奠定了堅實的基礎。

討論

作者簡介

武翠霞的照片

武翠霞,IBM 中國軟件開發中心軟件工程師,Business Intelligence 項目組,兩年商業智能項目經驗,目前從事 DB2 產品的測試。

李茂嘉的照片

李茂嘉,IBM 中國軟件開發中心軟件工程師,Business Intelligence 項目組,兩年來一直從事 IBM 數據庫,數據倉庫系列產品的測試工作。

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久综合伊人77777尤物| 免费在线一区二区| 久久全球大尺度高清视频| 亚洲精华国产欧美| 永久久久久久| 精品成人在线观看| 亚洲国产精品va在线看黑人动漫 | 午夜性色一区二区三区免费视频| 国产精品综合网站| 国产伦精品一区二区三区在线观看| 欧美激情精品久久久久久蜜臀 | 久久xxxx| 欧美视频在线观看 亚洲欧| 欧美成人精品在线视频| 欧美了一区在线观看| 欧美日韩国产区一| 欧美日韩精品久久久| 国产精品久久久久久久久免费桃花 | 在线综合视频| 亚洲午夜视频| 香蕉精品999视频一区二区| 欧美一区二区视频在线观看2020| 欧美一区中文字幕| 牛夜精品久久久久久久99黑人 | 亚洲午夜日本在线观看| 亚欧美中日韩视频| 免费欧美网站| 国产欧美一区二区三区久久人妖 | 久久精品国亚洲| 欧美日韩国产综合视频在线观看中文| 国产精品久久久久久亚洲毛片| 激情五月婷婷综合| 亚洲女人天堂成人av在线| 欧美18av| 久久久噜噜噜| 国内精品美女在线观看| 欧美在线高清| 西瓜成人精品人成网站| 欧美日韩极品在线观看一区| 国产偷久久久精品专区| 亚洲一区二区三区中文字幕在线| 欧美国产在线观看| 久久国产直播| 影音先锋一区| 亚洲国产mv| 久久资源在线| 亚洲成人在线视频播放| 久久夜色精品国产| 久久久999精品| 亚洲片在线资源| 亚洲全部视频| 国产精品黄页免费高清在线观看| 亚洲少妇自拍| 亚洲在线电影| 国产字幕视频一区二区| 嫩草影视亚洲| 欧美日韩国产高清视频| 亚洲一区在线免费| 午夜在线成人av| 亚洲日韩成人| 99精品热视频只有精品10| 欧美三级电影精品| 毛片av中文字幕一区二区| 欧美精品粉嫩高潮一区二区| 亚洲一级影院| 模特精品裸拍一区| 欧美一区二区三区的| 美日韩在线观看| 久久精品国产亚洲一区二区| 你懂的国产精品永久在线| 亚洲欧美国产精品桃花| 裸体一区二区三区| 国产精品福利在线观看| 欧美www视频在线观看| 国产精品欧美久久久久无广告| 美女性感视频久久久| 狠狠色丁香久久婷婷综合_中| 亚洲国产一区二区视频| 一区在线视频| 久久成人综合视频| 久久久久久久久久久久久女国产乱| 欧美福利视频在线| 免费观看国产成人| 亚洲国产一成人久久精品| 亚洲欧美精品在线观看| 午夜亚洲福利| 国产欧美日韩综合一区在线播放 | 国产精品国产亚洲精品看不卡15 | 亚洲精品综合| 亚洲综合三区| 99精品国产一区二区青青牛奶| 久久久五月天| 国产精品久久久久久久久免费樱桃| 香蕉成人久久| 日韩一本二本av| 欧美日韩国产大片| 日韩香蕉视频| 欧美一区二区在线看| 国产精品天天看| 亚洲女爱视频在线| 午夜一区二区三区不卡视频| 一本久久a久久精品亚洲| 亚洲一区久久久| 亚洲国产天堂久久国产91| 亚洲午夜激情| 亚洲视频中文字幕| 亚洲欧美国内爽妇网| 国产一区在线免费观看| 老司机午夜免费精品视频| 亚洲国产精品久久91精品| 在线视频欧美日韩| 黄网动漫久久久| 欧美性色视频在线| 欧美国产精品中文字幕| 亚洲欧美一区二区激情| 亚洲人成在线播放| 久久福利视频导航| 一区二区三区四区精品| 亚洲电影免费观看高清完整版在线观看 | 欧美一级片久久久久久久| 亚洲国产免费看| 国产有码一区二区| 国产欧美亚洲日本| 国产精品一区视频| 国产精品自在线| 国产亚洲aⅴaaaaaa毛片| 国产欧美日韩| 国产精品日韩一区二区| 欧美日韩免费观看一区二区三区 | 午夜国产精品视频免费体验区| 狠狠网亚洲精品| 国语自产精品视频在线看一大j8 | 9l视频自拍蝌蚪9l视频成人| 亚洲第一毛片| 一本色道久久综合| 欧美一区二区视频在线观看| 欧美综合国产精品久久丁香| 久久久国产精品亚洲一区 | 蜜桃久久精品乱码一区二区| 老司机成人网| 亚洲国语精品自产拍在线观看| 午夜精品久久久久久久| 欧美专区在线观看| 久久亚洲精品伦理| 久久久久九九九九| 麻豆国产精品va在线观看不卡| 久久福利一区| 欧美电影免费观看| 亚洲开发第一视频在线播放| 亚洲午夜在线| 久久精品国产亚洲aⅴ| 免费观看日韩av| 欧美日韩第一页| 在线观看av不卡| 国产日韩一区二区三区在线播放| 国模精品一区二区三区色天香| 1024成人网色www| 激情自拍一区| 欧美性猛交xxxx免费看久久久| 国产精品综合不卡av| 亚洲高清在线视频| 久久久女女女女999久久| 夜夜爽av福利精品导航| 久久天天躁夜夜躁狠狠躁2022| 欧美午夜理伦三级在线观看| 亚洲欧美另类在线观看| 欧美日韩国产123| 亚洲第一福利社区| 久久精品国产v日韩v亚洲| 日韩天堂在线观看| 欧美丰满高潮xxxx喷水动漫| 国内精品福利| 久久久久久久一区二区| 亚洲欧美日本国产专区一区| 欧美激情偷拍| 一本一本久久a久久精品牛牛影视| 久久精品在这里| 欧美一级理论片| 欧美一级专区| 极品少妇一区二区| 免费在线观看精品| 欧美成人精品不卡视频在线观看| 亚洲欧洲一级| 日韩亚洲精品视频| 国产日产亚洲精品系列| 狼狼综合久久久久综合网 | 中日韩视频在线观看| 99成人在线| 精品成人一区二区三区| 亚洲精品在线一区二区| 国产伦理一区| 欧美国产日韩一区二区在线观看| 欧美精品在线播放| 日韩亚洲视频| 美日韩精品免费| 中文欧美字幕免费| 亚洲天堂成人在线视频| 国模大胆一区二区三区| 一区二区三区欧美日韩| 老司机久久99久久精品播放免费|