程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2 日常維護技巧,第 2 部分:實例和常用備份策略

DB2 日常維護技巧,第 2 部分:實例和常用備份策略

編輯:DB2教程

創建數據庫前沒有調整好系統時間的處理

在數據庫創建好之後,調整系統時間會造成數據庫內部時間戳的異常。數據庫中一些對象和時間相關,一旦時間不准確要調整需要很小心。錯誤的時間調整可能會造成很多問題,如:

某些對象失效,例如 :
SQL0440N,找不到具有兼容自變量的類型為 “ < 例程類型 > ” 的名為 “ < 例程名 > ” 的已授權例程。

數據庫日志邏輯錯誤 -> 宕機。

常見錯誤 – 只調整時間,未調整時區。

正確的做法是在數據庫創建之前,調整好時間和時區。如果在數據庫創建好之後,確實需要調整時間,時區的,建議撥打 IBM 技術支持中心的電話:8008101818 。

使用實例用戶無法使用 DB2 命令的情況下如何處理

DB2 系統的安全性采用雙層認證的機制,在認證(authentication)階段,驗證登錄用戶的用戶名和密碼,看用戶是否是合法用戶,在授權(authorization)階段,驗證用戶是否有足夠的權限進行相應的操作。關於這兩個階段的介紹如下:

認證(authentication)
在這個階段驗證登錄用戶的用戶名和密碼,看用戶是否是合法用戶,具體分為客戶端認證和服務器端認證,密碼輸入錯誤的次數由 LOGINRETRIES 參數確定。需要注意的是,DB2 對用戶名和密碼的維護是交給 DB2 所在的操作系統管理的。

授權(authorization)
驗證用戶的授權信息,看其是否有權限進行相關操作。

在實例和數據庫創建好以後,操作系統中會有相應的 DB2 用戶和組,如果這些用戶和組被刪除後,將使 DB2 無法正常使用。另外,在實例目錄下執行“ chown(chmod) – R ”命令會造成在服務器上無法連接數據庫。如果遇到這種情況,正確的做法是把刪除的用戶和組添加回來,如果更改了權限,還要把權限改回來。

但是如果使用 chown(chmod) – R 更改了實例目錄下的權限,由於涉及的文件很多,如果不記得改了哪些權限,想改回來是十分困難的。建議,在平時制定嚴格的維護規范,讓所有的系統管理員和 DBA 都嚴格執行,特別是要告知系統管理員哪些目錄下的文件不能刪除,哪些目錄下的文件權限是不能更改的,在實際維護的過程中,經常發生系統管理員在不知道危害的情況下進行了誤操作。

如果在把刪除的用戶和組添加回來,或者把改了的權限改回來時遇上困難,請撥打 800 技術支持電話獲得支持。

歸檔日志模式下聯機備份時最好同時備份日志

在歸檔日志管理模式下,如果使用聯機備份,由於只使用聯機備份映像文件進行恢復,恢復後的數據庫會處於 Roll Forward Pending 狀態,需要使用歸檔日志(歸檔日志最少也需要聯機備份期間所產生的歸檔日志)進行前滾恢復後才能正常使用。建議在聯機備份時,使用 INCLUDE LOGS 選項同時在備份映像文件中備份一下聯機備份期間必須的日志文件。這樣在恢復數據庫時,如果找不到相應的歸檔日志,則可以從備份映像文件中提取相應的歸檔日志文件。

DB2 使用聯機備份的備份映像還原數據庫,還原完成時需要進行前滾恢復,如果前滾所需的日志文件損壞或者被刪除,將不能完成前滾恢復,數據庫將不可用。 DB2   V9(實際上從 DB2 V8.2.2 就開始了)在做聯機備份時新增了 INCLUDE LOGS 選項,當指定此選項時,BACKUP 實用程序將截斷當前活動日志文件並將必要的日志擴展數據塊集合復制到備份映像中。也就是說,備份映像中包含復原和恢復數據庫所需的日志文件,不再需要單獨的日志文件。數據庫自己決定需要哪些日志文件來保證聯機備份的一致性,並放到備份映像中,這為成功恢復提供了保證,以防止所需的日志文件損壞或被誤刪除。

還原時,通過使用 RESTORE   DATABASE 命令的 LOGTARGET 選項,可以指定把備份映像中的日志文件放到什麼位置。如果指定了 LOGTARGET 選項,在執行 RESTORE   DATABASE 命令時,DB2 將把日志文件放到指定的路徑中,如果目標路徑中已經存在同名的日志文件,復原操作將失敗並返回一個錯誤。如果未指定 LOGTARGET 選項,則不會從備份映像中還原任何日志文件。

如果指定了 LOGTARGET 選項,但是備份映像中沒有包含任何日志文件,則在嘗試復原操作時會返回一個錯誤。如果指定了無效或只讀的路徑,復原操作會報 SQL2581N 錯誤。在指定 LOGTARGET 選項條件下,復原數據庫或表空間的過程中,如果不能抽取一個或多個日志文件,則復原操作失敗並返回錯誤。還可以選擇只復原保存在備份映像中的日志文件。要執行此操作,可使用 RESTORE DATABASE 命令的 LOGTARGET 選項指定 LOGS 選項。以此方式復原日志文件時,如果復原操作遇到任何問題,則復原操作失敗並返回錯誤。

如果在聯機備份時,沒有同時使用 INCLUDE LOGS 選項同時備份相應的日志文件,在出現誤刪除日志文件等情況下,聯機備份恢復所需的日志文件也被刪除了,使得聯機備份恢復無法最終完成。

使用 INCLUDE LOGS 命令的方法如清單 2 所示:

清單 2. 使用 INCLUDE LOGS 命令的方法

db2 BACKUP DATABASE <dbname> ONLINE … INCLUDE LOGS 

DB2 數據庫出現異常後,如何檢查整個數據庫

當 DB2 數據庫出現異常後,可以使用 DB2DART 或 INSPECT 命令查看整個數據庫。

DB2DART 命令可以用來驗證數據庫以及相關的數據庫對象是否正確,是否存在問題。還可以使用 DB2DART 命令來顯示數據庫控制文件的內容,以便在重建數據庫時從其他情況下無法訪問的表中抽取數據。

如果想查看 DB2DART 的相關語法,可以在當前 DB2CLP 窗口中,發出 DB2DART 命令(不帶任何參數),就可以看到其相關選項了,具體如清單 01-34 所示:

清單 3 . DB2DART 命令的相關選項

C:\> db2dart 
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
 
 
   - - - - - - -  D B 2 D A R T  - - - - - - - - - 
 
        Database Analysis Tool 
 
            IBM 
 
            DB2 NT 
 
 
     The DB2DART Tool is a utility for the analysis of databases, 
      tablespaces, and tables. DART's primary function is to 
     examine databases for their architectural correctness, and to 
             report any encountered errors. 
- - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - 
 
 
- - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - 
            DB2 V9.1 DB2DART HELP 
 db2dart - Database Analysis Tool 
 
  The db2dart command analyses databases , table spaces and tables . 
  The primary function of this command is to examine databases for 
  architectural correctness , and to report any encountered errors . 
 
 Requirements : 
  db2dart must be run with no users connected to the database . 
 
 Syntax: 
  db2dart < database name > [ action ] [ options . . . ] 
 
  ( ' db2dart /H ' for extended help ) 
 
 Command parameters : 
  /H   Displays this help . 
 
( press < enter > for more text ) 
 
 
 Inspect actions : 
  /DB  (default) Inspects entire database . 
  /T   Inspects a single table . ( See notes 1 , 3 , 13 ) 
  /TSF  Inspects only the table space files and containers . 
  /TSC  Inspects a table space's constructs ( but not its tables ) . 
  /TS  Inspects a single table space and its tables . 
      ( /TSC and /TS require a table space id . See notes 1 , 2 ) 
  /ATSC Inspects constructs of all table spaces ( but not their tables ) . 
 
 Data format actions : 
  /DD  Dumps formatted table data . ( See notes 1 , 4 , 13 ) 
  /DM  Dumps formatted block map data . ( See notes 1 , 4 , 13 ) 
  /DI  Dumps formatted index data . ( See notes 1 , 4 , 12 ) 
  /DXA  Dumps formatted xda data in ASCII . ( See notes 1 , 4 , 13 ) 
  /DXH  Dumps formatted xda data in Hex . ( See notes 1 , 4 , 13 ) 
  /DP  Dumps pages in hex format .  ( See notes 1 , 6 , 13 ) 
  /DTSF Dumps formatted table space file information . 
  /DEMP Dumps formatted EMP information for a DMS table . 
      ( See notes 1 , 3 , 13 ) 
  /DDEL Dumps formatted table data in delimited ASCII format . 
      ( See note 13 ) 
  /DHWM Dumps highwater mark information . ( See notes 1 , 2 , 01 ) 
  /LHWM Suggests ways of lowering highwater mark . 
      ( See notes 1 , 7 , 14 ) 
 
( press < enter > for more text ) 
 
 
 Repair actions : 
 Make sure the database is offline for these actions . 
  /MI  Marks index as invalid . 
      ( Database must be offline . See notes 1 , 5 ) 
  /ETS  Extends the table limit in a 4K DMS table space , if possible . 
      ( This action requires a table space id . See notes 1 , 2 ) 
  /RHWM Reduces highwater mark through empty SMP extents . 
      ( See notes 1 , 2 ) 
 
 Change state actions : 
 Make sure the database is offline for this action . 
  /CHST Change a state of the database . 
 
( press < enter > for more text ) 
 
 Input value options : 
  /OI object-id    SpecifIEs the object ID . 
  /TN table-name    SpecifIEs the table name . 
  /TSI tablespace-id  SpecifIEs the table space ID . 
  /ROW sum       IdentifIEs whether L/F descriptors , LOB descriptors 
             and control information should be checked . 
             ( 1 ) Checks control information in rows . 
             ( 2 ) Checks long fIEld and LOB descriptors . 
             ( see note 8 ) 
  /PS number      SpecifIEs the page number to start with . 
             ( Suffix page number with ' p ' for pool relative . ) 
  /NP number      SpecifIEs the number of pages . 
  /V Y/N        SpecifIEs whether or not to use verbose option . 
             ( Y ) Verbose . 
             ( N ) No verbose . 
  /RPT path      The path to place report output file ( optional ) . 
  /RPTN file-name   The name of the report file ( optional ) . 
  /SCR Y/M/N      SpecifIEs the type of screen output , if any . 
             ( Y ) Produces normal screen output . 
             ( M ) Produces minimal screen output . 
             ( N ) Produces no screen output . 
  /RPTF Y/E/N     SpecifIEs the type of report file output , if any . 
             ( Y ) Produces normal output . 
             ( E ) Sends only error information to report file . 
             ( N ) Produces no report file output . 
  /ERR Y/N/E      SpecifIEs the type of log to produce in DART .INF , 
             if any . 
             ( Y ) Produces a normal log in DART . INF file . 
               ( default ) 
             ( N ) Minimizes output to log DART . INF file . 
             ( E ) Minimizes DART . INF file and screen output . 
               Only error information is logged . 
  /WHAT DBBP OFF/ON  SpecifIEs the database backup pending state . 
             ( OFF ) Off state . 
             ( ON ) On state . 
  /QCK         Quick option . Only applIEs to /DB , /T , and /TS 
             Actions . Only inspects page 0 of the DAT 
             objects and partially inspects the index 
             objects ( does not inspect BMP , LOB , LF objects 
             and does not traverse the entirety of the DAT 
             or INX objects ) . 
  /TYP         SpecifIEs the type of object . Valid values are : 
             ( DAT ) Object type is DAT . 
             ( INX ) Object type is INDEX . 
             ( BKM ) Object type is BMP . 
 
( press < enter > for more text ) 
 
Notes : 
1 - For actions that require additional input values for identifying the data 
  to act on , the input values can be specifIEd as arguments along with the 
  action . If values are not specifIEd you will be prompted for input values . 
  This does not apply for actions /DDEL . For this , you will be prompted for 
  the required input values . 
2 - Actions /TSC , /TS , /ETS , /DHWM and /RHWM require 1 input value - the 
  table space ID . 
3 - Actions /T and /DEMP require two input values consisting of 
  table space ID , and either of table object ID or table name . 
4 - Actions /DD , /DM , /DXA , DXH and /DI require five input values consisting of 
  either table object ID or table name, table space ID , page number to start 
  with, number of pages , and verbose choice . 
5 - Action /MI requires two input values consisting of table space ID and 
  index object ID . 
6 - For DMS table spaces , action /DP requires three input values consisting of 
  table space ID , page number to start with , and number of pages . 
  For SMS table spaces , action /DP requires five input values consisting of 
  table space ID , object ID , page number to start with , number of pages , 
  and object type . 
7 - Action /LHWM requires a table space ID and the number of pages for the 
  desired highwater mark after lowering it . 
8 - For value options where unique values identify different choices for 
  the option , sum up the values to get the combination of choices . 
9 - Default location for report output file is the current directory in a 
  non-MPP environment , and in the diagnostic directory in a MPP environment . 
10 - The scope of db2dart is single node . 
11 - In a MPP environment , you can use db2_all to invoke db2dart at all DB2 
  logical nodes in a single invocation . 
12 - For partitioned tables, the /DI action uses index_objectid and tbspaceid 
  from syscat . indexes as the first two inputs to /OI and /TSI options . 
  The table name ( /TN ) option is not supported for the action . 
13 - For partitioned tables , the /DD , /DM , /DEMP , /DDEL , /DP , /DXA , /DXH 
  actions use partitionobjectid and tbspaceid from syscat.datapartitions 
  as the input to the table object ID ( /OI ) and table space ID ( /TSI ) 
  for a specific partition . The table name option ( /TN ) is not supported 
  for these actions . The /T action supports the table name or global table 
  object ID when use with global table space ID to check the entire table , 
  and also supports using partitionobjectid and tbspaceid from 
  syscat.datapartitions as the input to /OI and /TSI to check a specific 
  partition . 
14 - In general , db2dart requests to be run when the database is offline . 
  However for /DHWM and /LHWM actions , this request is not strict . 
  The report can be generated without database being offline , but results 
  will vary depending on how much write/update activity has occurred 
  recently ( less activity implIEs more reliable results ) . 
 
- - - - -  D A R T  P R O C E S S I N G  C O M P L E T E  - - - - - - - 

命令成功完成。如同清單 3 中所述,DB2DART 的基本語法是“ db2dart < database name > [ action ] [ options . . . ] ”,缺省情況下,DB2DART 實用程序將創建一個“數據庫名 .RPT ”的報告文件。 DB2DART 實用程序通過直接從磁盤中讀取數據庫中的數據和元數據來訪問它們。使用 DB2DART 實用程序時,需要注意,要保證該數據庫上沒有活動的數據庫連接(也就是如果不取消激活數據庫,則 DB2DART 將產生不可靠的結果)。

下面我們繼續在當前 DB2CLP 窗口中,連上示例數據庫 SAMPLE,再發出“ db2dart sample /db ”命令,這個時候,會有 FYI 提示信息,告訴你現在 SAMPLE 數據庫上有一個活動的連接,請停掉所有的連接後再次執行 DB2DART 命令,具體如清單 01-35 所示:

清單 4. 展示 DB2DART 命令在數據庫上存在活動連接時的出錯提示

C:\> db2 connect to sample 數據庫連接信息 
 
數據庫服務器 = DB2 / NT 9.1.0 
 SQL 授權標識 = RHETTE 
本地數據庫別名 = SAMPLE 
 
 
 C:\> db2dart sample /db 
 
 FYI: An active connection to the database has been detected . 
 False errors may be reported . 
 Deactivate all connections and re-run to verify . 
 
 Warning : The database state is not consistent . 
 
 Warning : Errors reported about reorg rows may 
         be due to the inconsistent state of the database . 
 DB2DART Processing completed with warning ( s ) ! 
 Complete DB2DART report found in : 
 
 C:\DOCUME~1\ALLUSE~1\APPLIC~1\IBM\DB2\DB2COPY1\DB2\DART0000\SAMPLE.RPT 

正確的做法是在當前 DB2CLP 窗口中,發出 “ FORCE APPLICATIONS ALL ”命令,斷開所有的數據庫連接,再發出 “ db2dart sample /db ”命令,具體如清單 01-36 所示:

清單 5. 展示 DB2DART 命令如何使用

C:\> db2 force applications all 
 DB20000I FORCE APPLICATION 命令成功完成。 
 DB21024I 此命令為異步的,可能未能立即生效。 
 
 
 C:\> db2 list applications 
 SQL1611W “數據庫系統監視器”沒有返回任何數據。 
 
 C:\> db2dart sample /db The requested DB2DART processing has completed successfully! 
Complete DB2DART report found in: 
 C:\DOCUME~1\ALLUSE~1\APPLIC~1\IBM\DB2\DB2COPY1\DB2\DART0000\SAMPLE.RPT 
 

命令成功完成。 DB2DART 執行結果顯示正常,如果有錯誤,會提示有 ERROR 存在,所有的結果都會存儲在 SAMPLE.RPT 中。打開 SAMPLE.RPT 文件,可以看到數據庫診斷的詳細的信息,由於篇幅有限,本書只列示了部分信息,具體如清單 01-37 所示:

清單 6 . SAMPLE.RPT 文件部分輸出結果

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 - - - - - - - - -        DART          - - - - - - - - - - -  
 
  D a t a b a s e  A n a l y s i s  a n d  R e p o r t i n g  T o o l 
 
              IBM  DB2  NT  
 
 
 
 
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
DART ( V9.1 ) Report : 
2008-04-02-23.28.24.531000 
 
      Database Name : SAMPLE 
      Report name : SAMPLE.RPT 
      Old report back-up : SAMPLE.BAK 
      Database Subdirectory : C:\DB2\NODE0000\SQL00002 
      Operational Mode : Database Inspection Only ( INSPECT ) 
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
Action option : DB 
 
Connecting to Buffer Pool Services . . . 
 
  Database inspection phase start . 
 
   Tablespace file inspection phase start . 
   Loading tablespace files . 
   Inspecting next tablespace and associated containers . 
   Inspecting next tablespace and associated containers . 
   Inspecting next tablespace and associated containers . 
   Inspecting next tablespace and associated containers . 
   Inspecting next tablespace and associated containers . 
   Inspecting next tablespace and associated containers . 
   Inspecting next tablespace and associated containers . 
   7 tablespaces were identifIEd and their containers checked . 
   Tablespace file inspection phase end . 
 
 
   SYSBOOT inspection phase start . 
 
     Data inspection phase start . Data obj : 1 In pool : 0 
     Data inspection phase end . 
 
   SYSBOOT inspection phase end . 
 
 
   SYSTABLES inspection phase start . 
 
     Data inspection phase start . Data obj : 5 In pool : 0 
     Data inspection phase end . 
 
   SYSTABLES inspection phase end . 
 
 
   Bufferpool file report phase start . 
   1 bufferpools were identifIEd . 
   Bufferpool file report phase end . 
 
 
   Tablespace inspection phase start . Pool : 0 
 
     Tablespace-info inspection phase start . 
      Checking Table space ID : 0 
      Name      =  SYSCATSPACE 
      Extent size   =  4 
      # of containers =  1 
 
      Container names : 
        C:\DB2\NODE0000\SAMPLE\T0000000\C0000000.CAT 
     
      Traversing extent map for object type : 0 
 
      Data inspection phase start . Data obj : 65535 In pool : 0 
      Data inspection phase end . 
 
 
      Traversing extent map for : 
       OTR ID : 4 
        Parent object ID = 1 pool ID = 0 
       For all table objects in tablespace : 0 
 
        DAT extent anchor : 12 , in pool : 0 
        Traversing extent map for object type : 0 
      Extent Map traversal complete . 
 
 
. . . . . . . . . . . . 
. . . . . . . . . . . . 
. . . . . . . . . . . . 
 
   Table inspection end . 
 
   Tablespace inspection phase end . 
 
 
   Tablespace inspection phase start . Pool : 6 
   This is a temporary table space . Nothing to inspect . 
   Tablespace inspection phase end . 
 
  Database inspection phase end . 
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 
 
     The requested DB2DART processing has completed successfully ! 
           All Operation completed without error ; 
          no problems were detected in the database . 
- - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - 
 
            Complete DB2DART report found in : 
C:\DOCUME~1\ALLUSE~1\APPLIC~1\IBM\DB2\DB2COPY1\DB2\DART0000\SAMPLE.RPT 
 
- - - - -  D A R T P R O C E S S I N G C O M P L E T E  - - - - - 
 

我們在日常維護數據庫過程中,經常使用的 DB2DART 命令的選項主要有:

/DB ( 默認值 ) 檢查整個數據庫。

/T 檢查單個表。

/TSF 只檢查表空間文件和容器。

/TSC 檢查一個表空間的結構,但不包含它所屬的那些表。

/TS 檢查一個單獨的表空間和它所屬的那些表。

而 INSPECT 命令類似於 DB2DART 命令,INSPECT 命令同樣可以用來檢查數據庫、表空間和表。 INSPECT 命令和 DB2DART 命令的主要區別是,INSPECT 命令需要與數據庫連接,並且可以在該數據庫上同時有多個活動的數據庫連接時執行,而 DB2DART 命令需要在執行之前取消激活數據庫,數據庫上不能有活動的數據庫連接。關於這兩個命令的具體區別,大家請參見 IBM 白皮書或查看 DB2 信息中心。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved