Oracle Enterprise Managerをなぜ使うのか 
第4回 定期的バックアップと迅速な復旧作業

データベースエンジニアという立場から、業務のさまざまな場面でOracle Enterprise Manager(EM)を活用している渡部亮太氏。最終回の今回は、EMを用いたバックアップと迅速なリカバリ方法について説明していただいた。(編集部)
 
■Oracle DatabaseのバックアップをEnterprise Managerで取得
 
 Oracle Databaseのデータベース構成ファイル(データファイル、制御ファイル)は、ディスク破損やファイル破損などの予期しない障害に備えて、定期的にバックアップする必要があります。
 
 バックアップ作業は手動で実行することもできますが、システムの負荷が低い時間帯やデータベースの再起動が可能な時間帯に自動で実行するほうが望ましいでしょう。
 
 Enterprise Managerには、データベースをバックアップするためのジョブ定義があらかじめ用意されています。画面の指示に従い実行頻度を入力してバックアップジョブをスケジュールするだけでバックアップジョブが登録可能なため、定期的なバックアップが容易に行えます。
 
 バックアップ処理の種類には、データベースのOPEN状態(通常のデータアクセス可)で取得する「非一貫性バックアップ(ホットバックアップ)」と、データベースのMOUNT状態またはCLOSE状態(通常のデータアクセス不可)で取得する「一貫性バックアップ(コールドバックアップ)」の2つがあります。もちろんEnterprise Managerは、どちらのバックアップ処理にも対応しています。
 
 たとえば、可用性の要件がさほど厳しくない環境の場合は、仕組みがシンプルで、かつ安心して利用できる一貫性バックアップのほうを選択するお客様が多いようです。
 
 ただし、RMAN(Oracle Recovery Manager)形式を用いて一貫性バックアップを取得するためには以下の手順を踏む必要があり、これまでは自動化するのが若干面倒でした。
 
1)データベースをシャットダウン(shutdown abortは不可)
2)データベースをMOUNT状態で起動
3)RMANを起動して一貫性バックアップを取得
4)データベースをOPEN状態に遷移
 
 このようにジョブコントローラで実行する場合には、上記の手順をバッチスクリプトなどで作りこむ必要があったのです。しかし、Enterprise Managerではこれらの手順がジョブ定義として実装済みのため、スケジューリングするだけで一貫性バックアップを取得することができます。もちろん、非一貫性バックアップも簡単に実行できます。
 
 データベース障害に対処するうえでは、バックアップデータの取得が非常に重要になってきます。このため日々の運用管理において、バックアップジョブの実行結果を必ず確認するようにしてください。
 
 Oracle Diagnostic Packに含まれる通知機能(Oracle Database 11g Release 1(11.1)に搭載)を活用すれば、バックアップジョブの実行結果を確認できます。また、Enterprise Managerの「ジョブ・アクティビティ」画面やRMANの「list backupコマンド」結果からも確認が可能です。
 
 なお、通常のジョブをジョブコントローラで実行する環境において、データベースのバックアップジョブだけをEnterprise Managerで実行すると、バックアップジョブ実行結果のチェックが抜ける場合があります。注意してください。
 
 
■リカバリ時間を短縮できる「推奨バックアップ」
 
 Enterprise ManagerでのバックアップはRMANを用いて処理されているため、RMANの多彩な拡張機能を活用することが可能です。
 
 その中で特に注目していただきたい機能が「増分更新バックアップ」です。復旧に必要な時間やバックアップの取得に要する時間を短縮でき、かつバックアップ保管用領域を削減することが、この機能の特徴です。
 
 増分更新バックアップは、データベース全体ではなく、過去のバックアップ以後に更新されたブロックについてのみバックアップを取得します(増分バックアップ)。そして、過去に取得したバックアップファイルに対して、増分バックアップに含まれる更新後のブロックの情報を反映し、バックアップファイルを最新に近い状態に更新します。
 
 障害発生直前の状態までデータベースを復旧させる場合、データベースをバックアップから復旧させて、アーカイブREDOログファイルやオンラインREDOログファイルに含まれる更新履歴(REDOログ)をデータベースに適用し、バックアップ取得後の更新内容をバックアップに反映させる(リカバリ処理)のが一般的です。しかし、バックアップの取得間隔が空いていると、このリカバリ処理に時間がかかり、迅速に復旧できないことがあります。
 
 このような問題は増分更新バックアップで解決することができます。バックアップファイルが最新に近い状態で保持されるため、適用すべきREDOログの量を削減でき、迅速な障害復旧が可能になるのです。
 
 Enterprise Managerでは、「推奨バックアップ」という名称で増分更新バックアップをパッケージ化して簡単に使用できるため、ぜひ活用することをお勧めします。
 
■迅速な復旧を支援する「データ・リカバリ・アドバイザ」
 
 実際に障害が発生した場合、上記のように取得したバックアップを使用して復旧作業を進めます。このとき最も時間を要するのは、実はREDOログの適用などRMANの処理自体ではなく、障害状態の把握や障害状態に適した実行コマンドの選択といった復旧手順の立案までの作業だと言われています。
 
 復旧手順を迅速に立案するうえで必要なことは、典型的な障害状況をあらかじめ想定して復旧手順を確立してからリハーサルを実施したり、Oracle Databaseのアーキテクチャに関する理解を深めたりすることです。しかし小規模なサイトなどでは、これらに取り組むことは現実的に難しいでしょう。そのため、実際にはサポート窓口と連携して情報をやり取りしつつ、復旧作業を進めることになるはずです。
 
 Oracle Database 11g Release 1から導入された「データ・リカバリ・アドバイザ」は、復旧手順を自動的に提案してくれる機能です。この機能を活用すれば、復旧作業を円滑に進めることが可能になります。同機能はRMANの「list failure」「advise failure」「repair failure」というコマンドから実行できますが、もちろんEnterprise Managerからも活用することができます。
 
 以下の画面は、データファイルの一部が破損した例です。「リカバリの実行」画面から「アドバイスとリカバリ」を選択すると、データ・リカバリ・アドバイザが認識している障害内容を確認し、推奨されたリカバリ方法を適用することができます。
 
img_pickup_101105_01.jpg
「アドバイスとリカバリ」をクリックする
 
 
img_pickup_101105_02.jpg
障害内容を確認し、リカバリを適用する
 
 もちろん、データベースで発生する障害はさまざまです。なかには、推奨されたリカバリ方法が適用できないケースもあり、復旧計画をデータ・リカバリ・アドバイザ任せにするのはお勧めできません。とはいえ、問題が発生した際の対処策の1つとして活用することは可能なはずです。
 
(文:株式会社コーソル 渡部亮太)
■関連資料