連載
» 2006年12月23日 00時00分 公開

Oracleバックアップ/リカバリ講座(10):Recovery Managerのチューニング・ポイント集 (4/4)

[渡辺学,株式会社アゲハ]
前のページへ 1|2|3|4       

RMANでのバックアップにおけるチューニング・ポイント

 バックアップ処理では、第9回で説明したようにハードウェアの増強など時間短縮できるバックアップ方法を選択することが一番効果的な方法です。しかしRMANでのバックアップを考えた場合、CPUやメモリなど実行するシステム環境のリソースに余裕があれば、RMANのパフォーマンスをさらに向上できる要素があります。それぞれの具体的なポイントについて説明するに当たり、まずRMANでのバックアップ処理の流れについて見ておきましょう。

図2 RMANによるバックアップ処理の流れ 図2 RMANによるバックアップ処理の流れ

 図2から確認できるように、RMANでのバックアップ処理は大きく3つのステップに分けられます。通常RMANによるバックアップが遅いという場合は、メモリ上で行われている(2)の処理よりも、メモリより低速なディスクやテープといったデバイスで行われている(1)や(3)の処理がボトルネックになる可能性が高くなります。そのため、前述したパフォーマンスの妥当性の判断では、上記の(1)や(3)の処理のボトルネックを確認することで、問題点の特定や対処を効率的に行うことができます。

 図2の(1)や(3)の処理におけるチューニングポイントとしては、以下のような点を挙げることができます。

  • 初期化パラメータの調整
  • チャネル数(並列性)の調整
  • バックアップ・セットの多重化

 これ以降では、それぞれの具体的なチューニング方法について説明していきます。

データベースの初期化パラメータの調整

 データベースからデータを読み取る部分でのパフォーマンス向上の方法として、そのデータベースの初期化パラメータを調整することがあります。バックアップの対象となるターゲットのデータベースが非同期I/O、同期I/Oのどちらを使用しているかによって、初期化パラメータの設定方法が異なります。

非同期I/O環境での初期化パラメータ設定値
 OSが非同期I/Oをサポートしている場合には、非同期I/Oに関する以下の初期化パラメータの設定を検討します。これにより、I/Oスレーブ・プロセスによるテープデバイスへの書き込み処理を非同期に実行することができ、処理パフォーマンスが向上する可能性があります。

  • BACKUP_TAPE_IO_SLAVES=TRUE
  • DISK_ASYNCH_IO=TRUE注1
  • TAPE_ASYNCH_IO=TRUE注1

注1 この初期化パラメータはデフォルトにて「TRUE」となっています。


 また、チャネルはPGAのメモリ領域を使用していますので、初期化パラメータ「PGA_AGGREGATE_TARGET」の設定値もパフォーマンスに影響します。

同期I/O環境での初期化パラメータ設定値
 OSが非同期I/Oをサポートしていない場合、バックアップ先がテープデバイスであれば、「BACKUP_TAPE_IO_SLAVES=TRUE」に設定することで、RMANがテープへの処理にI/Oサーバ・プロセスを使用できるようになります。

 また、複数のチャネルで処理(詳細は後述します)を行うためにチャネルはラージプール(ラージプールが設定されていない場合は共有プール)を使用するため、「PGA_AGGREGATE_TARGET」に加えて「DBWR_IO_SLAVES」「LARGE_POOL_SIZE」の調整が必要になります。

 以下にそれぞれの初期化パラメータの一般的な見積もり方法を記述します。

  • DBWR_IO_SLAVES
    「0」以上の値を設定すると、バックアップ用にディスクI/Oスレーブが使用されることにより、非同期I/Oがシミュレートされます。

  • LARGE_POOL_SIZE
    既存の処理で使用している値に、次の式で算出される値を追加します。
    バックアップ時に使用するチャネル数×(16Mbytes+(4×書き込みバッファサイズ))

 書き込みバッファサイズについては、テープチャネルを使用している場合には256Kbytesが規定値となりますが、この値を変更することにより、さらにバックアップの処理が向上する場合もあります。変更方法や推奨値については、バックアップソフトから提供されているマニュアルなどを確認してください。

チャネルのチューニング

チャネルを並列化させる
 先ほどの図2のように、RMANではバックアップの処理を行うのはチャネルになります。このため、チャネルを複数起動し、処理を並列実行することでパフォーマンスを向上できます。

 ただし、複数のチャネルの効果を発揮するためには、CPUやメモリといったリソースに余裕があり、バックアップ先のデバイスの性能(ディスクI/Oや複数のテープドライブ構成など)も十分である必要がありますので、システム構成を十分考慮して並列度を決定する必要があります。

 チャネルを複数使用するにはCONFIGUREコマンドで事前に設定する方法と、バックアップの都度、ALLOCATE CHANNELコマンドで必要なチャネルを生成する方法があります。

RMAN> configure device type disk parallelism 3;
RMAN> backup datafile 10,11,12,13,14,15
リスト5 自動構成によるチャネルの並列化

RMAN> run {
2> allocate channel c1 device type disk;
3> allocate channel c2 device type disk;
4> allocate channel c3 device type disk;
5> backup datafile 10,11,12,13,14,15;
6> }
リスト6 手動によるチャネルの並列化

 複数のチャネル間でバックアップファイルへの書き込みが競合しないように、保存先がディスクデバイスの場合はディスク数(RAID化されているときはストライプ数)、テープデバイスの場合はドライブ数を目安にチャネル数を設定するとよいでしょう。

【TOPIC】

空のデータファイルのバックアップについて

RMANでは、データが入っていない空のデータファイルについても読み込みが行われます。このため、実際のデータ量は少なくても、大きなデータファイルや、数多くのデータファイルが作成されている環境では、バックアップに時間がかかってしまいます。

バックアップ/リストアの性能テストであれば、実際に想定されるサイズで行うことが望ましいのですが、事前の機能確認や、バックアップスクリプトのテストフェイズであれば、各データファイルの空きサイズを小さくすることで、テストに必要な時間を節約することができます。


バックアップ・セットの多重化

1つのチャネルで一度に複数のファイルをバックアップする
 図2のようにチャネルは、バックアップ時に複数のファイルを一度にオープンして、1つのバックアップ・セットを作成しています。同時にオープンするファイル数は、BACKUPコマンド時に指定する「filesperset」オプションで調整することも可能です。ファイルの読み込み量に対して書き込み量が少ない(例えば、ブロック・チェンジ・トラッキング機能を使用しない増分バックアップなど)環境では、多重度を上げることにより読み取りのパフォーマンスが向上し、バックアップ時間を短縮できます。

RMAN> backup database filesperset = 64;
リスト7 バックアップの多重度を変更する例

 ただし、このオプションを指定する場合は以下の3つの注意点があります。

  1. 多重化の指定はバックアップ方法がバックアップ・セットのみ有効です(イメージ・コピーでは多重化不可)。

  2. RMANではバックアップをバックアップ・セット単位で行っているため、何らかの原因でバックアップが失敗した場合、処理が完了していないバックアップ・セットについては再取得が必要になります。よって、多重度が高いと低い場合に比べて再取得の時間が増加することがあります。

  3. バックアップをリストアする場合もRMANではバックアップ・セット単位でリストアを行います。バックアップ・セット内の1つのデータファイルだけリストアしたいような場合は、多重度が低い場合と比べてリストアに時間を要します。

 次回からは、リカバリ方法について説明します。

著者紹介

渡辺 学

株式会社アゲハ



前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。