バックアップ・リカバリ

バックアップ・リカバリの基本

DB2 UDBは、書き込み優先ログ方式を採用したDBMSとして、以下のような多彩なバックアップ・リカバリ方式をサポートする。

ログファイル運用方式

循環ログ方式
ログファイルを循環使用することで、簡便な運用を行える。反面、部分バックアップやオンラインバックアップは行えず、リカバリはバージョン回復しか行えない。Oracleで言うNOARCHIVELOGモード。
保存ログ方式
使用済みのログファイルを保存することで、全てのバックアップ・リカバリ方式を採用できる。Oracleで言うARCHIVELOGモード。

バックアップ方式

全体オフラインバックアップ
データベース全体を停止した上でバックアップを行う。循環ログモードで行える唯一のバックアップ。
全体オンラインバックアップ
データベースへのアクセスを許しながらバックアップを行う。
表スペースオフラインバックアップ
データベース全体を停止した上で特定の表スペースのバックアップを行う。
表スペースオフラインバックアップ
データベースへのアクセスを許しながら特定の表領域のバックアップを行う。

なお、DB2 UDBのバックアップは、データベースまたは表スペースの内容をBACKUPユーティリティで吐き出すと言うものであり、コンテナは関連しない。この点、データファイルがバックアップの単位となるOracleとは異なる。

リカバリ方式

バージョン回復
全体オフラインバックアップを行った時点への回復。RESTOREコマンドで実行する。
ロールフォワード回復
バージョン回復を行った後、保存ログを適用していく回復。ROLLFORWARDコマンドを発行して行う。その種類には以下のようなものがある。
完全回復
適用すべき全てのログを適用し、障害の直前の状態まで戻す
不完全回復
過去の特定の時点までの回復を、時間を使用して行う。Oracleとは違い、ログ番号を指定した不完全回復を行うモードは無い。
部分不完全回復(最小表スペース時刻ポイント回復)
特定の表スペースに対し、不完全回復を行う。参照制約などが複数の表スペースにまたがって存在する場合、検査保留状態が発生する可能性がある。

ログ管理構成パラメータ

DB2 UDBでは、ログ運用方式に関するパラメータのほとんどは、データベース構成ファイルレベルで指定される。それらのうち主なものは以下の通り。

LOGRETAIN
保存ログ方式を適用する場合にはONをセットする。デフォルトはOFF。また、変更した時点で、データベースはバックアップ保留状態となる
USEREXIT
保存ログ方式で、アクティブで無くなったログを自動的に退避する場合にONをセットする。その場合、db2uexitというユーザ作成プログラムを、ログの退避のために実行する。
NEWLOGPATH
ログファイルの保存先パス。この変更は、データベースが非活動状態になったときに適用される。
LOGBUFSZ
ログバッファに割り当てるメモリ量
LOGFILESZ
各ログファイルのサイズ(ページ数)。Oracleと違い、全てのログファイルは同じサイズとなる。
LOGPRIMARY
1次ログファイルの個数。なお、1次ログファイルとは通常のログファイルの個数であり、コミットされていないなトランザクションがこれらを全て使い切ってしまった場合には、臨時に2次ログファイル(最大数はLOGSECOND)が作成される。
OVERFLOWLOGPATH
ロールフォワード時に検索される保存ログの所在パス。
AUTORESTART
インスタンス障害から再起動したときに、自動的にロールフォワード処理を行って回復する場合にON(デフォルト)をセットする。

BACKUPコマンド

BACKUPコマンドの基本的な書式は以下の通り。基本的には、Oracle(8以降)のRMANを用いたバックアップセット方式に近い。

BACKUP DATABASE database-alias
    [USER username [USING password]]
    [TABLESPACE (tablespace-name, ...)]
    [ONLINE]
    TO target-area (directory/device), ...
    [WITH num-buff BUFFERS] 
    [BUFFER buffer-size]
    [PARALLELISM degree-of-parallel]
    [WITHOUT PROMPTING]
DATABASE database-alias
バックアップするデータベースの別名
USER username USING password
バックアップを行うユーザ名とパスワード
TABLESPACE (tablespace-name, ...)
バックアップの対象となる表スペース。指定しなければデータベース全体が対象。
ONLINE
オンラインバックアップを行う。デフォルトではオフラインバックアップ。オンラインバックアップを行うには保存ログモードであることが必須。
TO target-area (directory/device), ...
バックアップイメージが書き出されるディレクトリやテープなどのデバイス
WITH num-buff BUFFERS BUFFER buffer-size
使用するバッファ数と、各バッファに割り当てるページ数
PARALLELISM degree-of-parallel
バックアップ処理をパラレル化する場合に指定
WITHOUT PROMPTING
媒体変更を要求するプロンプトを表示しない

BACKUP DATABASEコマンドの実行のためには、SYSADM, SYSCTRL, SYSMAINTのいずれかの権限が必要である。また、対象となるデータベースは、ローカル・リモートのいずれでも構わない。

RESTOREコマンド

RESTOREコマンドは、バックアップ・イメージをデータベースに復元する。ログの適用はROLLFOWARDコマンドで別途実施する。このコマンドでは、新しいデータベースを作成してそこに復元したり、テーブルスペースのコンテナのレイアウトを変更して復元したり(リダイレクト復元)することが可能である。その基本的な書式は以下の通り。

RESTORE DATABASE database-alias
    [USER username 
        [USING password]]
    [TABLESPACE 
        [(tablespace-name, ...)]]
    [ONLINE]
    FROM target-area 
        (directory/device), ...
    [WITH num-buff BUFFERS] 
    [BUFFER buffer-size]
    [PARALLELISM degree-of-parallel]
    [REDIRECT]
    [WITHOUT PROMPTING]
    [WITHOUT ROLLING FORWARD]
DATABASE database-alias
レストアするデータベースの別名
USER username USING password
レストアを行うユーザ名とパスワード
TABLESPACE (tablespace-name, ...)
レストアの対象となる表スペース。指定しなければバックアップイメージ中の全ての表スペースが対象となる。
ONLINE
オンラインレストアを行う。これを指定した場合、レストア中で無い表スペースへのアクセスが可能となる。データベース全体の回復を行う場合には使用できず、使用のためには保存ログモードが必要となる。
FROM target-area (directory/device), ...
バックアップイメージを読みこむディレクトリやテープなどのデバイス
WITH num-buff BUFFERS BUFFER buffer-size
使用するバッファ数と、各バッファに割り当てるページ数
PARALLELISM degree-of-parallel
レストアをパラレル化する場合に指定
REDIRECT
リダイレクト復元を指定する。これにより、テーブルスペースとコンテナの定義付けを変更することが出来る(SMSとDMSの変換は行えない)。リダイレクト復元を完了するには、このコマンド終了後、RESOTORE DATABASE CONTINUEコマンドを再度使用する必要がある。
WITHOUT ROLLING FORWARD
コールドバックアップのデータを使用した場合、レストア終了時にROLL FORWARD PENDING状態としない。これにより、レストア終了時に即座に使用可能となる。
WITHOUT PROMPTING
媒体変更を要求するプロンプトを表示しない

RESTORE DATABASEコマンドの実行のためには、SYSADM, SYSCTRL, SYSMAINTのいずれかの権限が必要である(新規データベースへの復元の場合にはSYSMAINT権限では不可)。

ROLLFORWARDコマンド

ROLLFORWARDコマンドは、保存ログををデータベースに適用する。その基本的な書式は以下の通り。

ROLLFORWARD DATABASE database-alias
    [USER username 
        [USING password]]
    [TO {isotime | END OF LOGS} 
        AND COMPLETE}]
    [TABLESPACE 
        [(tablespace-name, ...)]]
    [ONLINE]
    [OVERLFOW LOG PATH log directory]
DATABASE database-alias
ロールフォワードするデータベースの別名
USER username USING password
ロールフォワードを行うユーザ名とパスワード
TO isotime
指定した時刻までのコミット済みトランザクションをロールフォワードする。時刻はCUT形式で指定される。
TO END OF LOGS
すべてのコミット済みトランザクションをロールフォワードする
TABLESPACE (tablespace-name, ...)
ロールフォワードの対象となる表スペース。指定しなければデータベース全体が対象。
ONLINE
オンラインロールフォワードを行う。
OVERLFOW LOG PATH log directory
保存ログファイルが含まれるログ・パスを指定する。

その他コマンド

QUINCEコマンド

特定モードで表スペースを明示的にロックするコマンドとして、QUINCEが用意されている。その構文は以下の通り。

QUINCE TABLESPACE 
    FOR TABLE tablename
    (lock-mode | RESET)
FOR TABLE tablename
指定したテーブルが含まれる表スペースをロックの対象とする
lock-mode
排他・共用などのロックのモードを指定する
RESET
QUINCEコマンドで獲得したロックを解除する

このコマンドが実行されると、該当する表領域を利用するアプリケーションが全て終了した後、指定した静止状態が獲得される。

回復履歴ファイル

回復履歴ファイルは、データベースの活動記録情報を含むファイルである。データベース・レベルで維持され、データベース構成ファイルと同じディレクトリに保存される。記録される内容は以下の通り。

また、以下のようなバックアップ情報も記録される。

これらの情報は、LIST HISTORYコマンドで表示することが出来る。また、PRUNE HISTORYコマンドで、内容のメンテナンスを行うことが出来る(メンテナンスには、SYSADM, SYSCTRL, SYSMAINT、DBADMのいずれかの権限が必要)

トップページに
Last modified: Mon Nov 22 12:41:33 +0900 2021