検証2:リアルタイム適用のフェイルオーバー時間への影響
Oracle9iでは、LGWRプロセスによるREDOの同期転送機能が実装され、障害発生時のデータ損失を極力抑えられるようになったが、スタンバイデータベースへの適用までにタイムラグがあった。Oracle Database 10gからは、スタンバイデータベース側でREDOデータを受信した時点ですぐに変更を適用する「リアルタイム適用機能」が実装されている。DataGuardは災害対策用の構成であり、障害発生時にプライマリデータベースからスタンバイデータベースに切り替わるフェイルオーバー時間は重要な要件となる。このリアルタイム適用機能により、障害発生時のフェイルオーバー時間の大幅短縮が期待できる。
実際に障害発生時にフェイルオーバー時間は短縮されるか、またREDOログを適用する役割を担うプロセスをパラレル化(フィジカルの場合はMRPプロセス、ロジカルの場合はSQLに変換する部分のプロセス)することでフェイルオーバー時間の短縮が図れるかを検証した。
フィジカル・スタンバイ構成でもロジカル・スタンバイ構成でも、リアルタイム適用をおこなった場合は従来とくらべフェイルオーバー時間が短縮された。ただし、パラレル化の効果はフィジカル・スタンバイ構成とロジカル・スタンバイ構成で異なる結果となった。
フィジカル・スタンバイ構成では、リアルタイム適用をおこなわずに処理を最大8までパラレル化したところ、並列度が増すにしたがってフェイルオーバー時間が短縮されたが、リアルタイム適用の場合パラレル化による差異はみられなかった。リアルタイム適用によりフェイルオーバー時に適用しなければならない変更履歴が最小化されているため、パラレル化の効果が得られなかったと思われる。ロジカル・スタンバイ構成でリアルタイム適用をおこなわずパラレル化にすると、あまり効果はなかったが、リアルタイム適用をおこなった場合はパラレル化の効果は高かった。リアルタイム適用をおこなわない場合、アーカイブ済みREDOログから情報を読み込む役割のプロセスがパラレル化の対象とならないためだと思われる(表1)。
さらに、フィジカル・スタンバイ、ロジカル・スタンバイでリアルタイム適用を採用した場合の、プライマリ側のトランザクションスループットに与える影響について検証した。その結果、リアルタイム適用により若干のオーバーヘッドが確認できた。ただし、リアルタイム適用によりフェイルオーバー時間の短縮効果が大きいため、システム要件に見合った選択をお勧めする。
| 表1 リアルタイム適用のフェイルオーバー時間への影響 |
![[表1]](image/20_21_01_04.gif) |
|
|