バックアップ処理では、第9回で説明したようにハードウェアの増強など時間短縮できるバックアップ方法を選択することが一番効果的な方法です。しかしRMANでのバックアップを考えた場合、CPUやメモリなど実行するシステム環境のリソースに余裕があれば、RMANのパフォーマンスをさらに向上できる要素があります。それぞれの具体的なポイントについて説明するに当たり、まず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スレーブ・プロセスによるテープデバイスへの書き込み処理を非同期に実行することができ、処理パフォーマンスが向上する可能性があります。
注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」の調整が必要になります。
以下にそれぞれの初期化パラメータの一般的な見積もり方法を記述します。
書き込みバッファサイズについては、テープチャネルを使用している場合には256Kbytesが規定値となりますが、この値を変更することにより、さらにバックアップの処理が向上する場合もあります。変更方法や推奨値については、バックアップソフトから提供されているマニュアルなどを確認してください。
チャネルを並列化させる
先ほどの図2のように、RMANではバックアップの処理を行うのはチャネルになります。このため、チャネルを複数起動し、処理を並列実行することでパフォーマンスを向上できます。
ただし、複数のチャネルの効果を発揮するためには、CPUやメモリといったリソースに余裕があり、バックアップ先のデバイスの性能(ディスクI/Oや複数のテープドライブ構成など)も十分である必要がありますので、システム構成を十分考慮して並列度を決定する必要があります。
チャネルを複数使用するにはCONFIGUREコマンドで事前に設定する方法と、バックアップの都度、ALLOCATE CHANNELコマンドで必要なチャネルを生成する方法があります。
RMAN> configure device type disk parallelism 3; |
リスト5 自動構成によるチャネルの並列化 |
RMAN> run { |
リスト6 手動によるチャネルの並列化 |
複数のチャネル間でバックアップファイルへの書き込みが競合しないように、保存先がディスクデバイスの場合はディスク数(RAID化されているときはストライプ数)、テープデバイスの場合はドライブ数を目安にチャネル数を設定するとよいでしょう。
RMANでは、データが入っていない空のデータファイルについても読み込みが行われます。このため、実際のデータ量は少なくても、大きなデータファイルや、数多くのデータファイルが作成されている環境では、バックアップに時間がかかってしまいます。
バックアップ/リストアの性能テストであれば、実際に想定されるサイズで行うことが望ましいのですが、事前の機能確認や、バックアップスクリプトのテストフェイズであれば、各データファイルの空きサイズを小さくすることで、テストに必要な時間を節約することができます。
1つのチャネルで一度に複数のファイルをバックアップする
図2のようにチャネルは、バックアップ時に複数のファイルを一度にオープンして、1つのバックアップ・セットを作成しています。同時にオープンするファイル数は、BACKUPコマンド時に指定する「filesperset」オプションで調整することも可能です。ファイルの読み込み量に対して書き込み量が少ない(例えば、ブロック・チェンジ・トラッキング機能を使用しない増分バックアップなど)環境では、多重度を上げることにより読み取りのパフォーマンスが向上し、バックアップ時間を短縮できます。
RMAN> backup
database filesperset = 64; |
リスト7 バックアップの多重度を変更する例 |
ただし、このオプションを指定する場合は以下の3つの注意点があります。
次回からは、リカバリ方法について説明します。
Copyright © ITmedia, Inc. All Rights Reserved.