バックアップ・リカバリ
バックアップ・リカバリの基本
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コマンドで獲得したロックを解除する
このコマンドが実行されると、該当する表領域を利用するアプリケーションが全て終了した後、指定した静止状態が獲得される。
回復履歴ファイル
回復履歴ファイルは、データベースの活動記録情報を含むファイルである。データベース・レベルで維持され、データベース構成ファイルと同じディレクトリに保存される。記録される内容は以下の通り。
- データベース全体の、バックアップ/リストア
- 単一または複数の表スペースの、バックアップ/リストア
- 表のロード
- 表スペースの静止(QUINCE)
- 表スペースの最小回復時刻ポイントの変更
また、以下のようなバックアップ情報も記録される。
- バックアップ、ロード、コピー操作の対象となったデータベースの部分
- データベースがコピーされた時刻
- コピーの場所
- 前回の復元の時刻
これらの情報は、LIST HISTORYコマンドで表示することが出来る。また、PRUNE HISTORYコマンドで、内容のメンテナンスを行うことが出来る(メンテナンスには、SYSADM, SYSCTRL, SYSMAINT、DBADMのいずれかの権限が必要)
トップページに
Last modified: Mon Nov 22 12:41:33 +0900 2021