TOPサーバ構築・運用> 稼動しているサーバを意識せずに接続可能
最大限の可用性とスケーラビリティを実現するOracle RAC
最大限の可用性とスケーラビリティを実現するOracle RAC

第6回:サーバダウン時のOracle RACの可用性
著者:日立システムアンドサービス  竹村 浩二   2006/10/6
前のページ  1  2  3
稼動しているサーバを意識せずに接続可能

   Oracle RACは一部のサーバがダウンした場合、動作を続けているサーバがあれば稼動し続けることができます。

   もしこのようなケースのときに、残りのサーバの動作状況を手作業で確認し、さらに接続定義を変更する必要があったとしたら、可用性があるとはいえるでしょうか。確かに継続した作業はできますが、運用上においては非常に手間がかかる作業であると思います。

   しかしOracle RACの場合は、どのサーバが稼動しているかを意識せずに使用することができます。厳密にはOracle RAC自体の機能ではなく、Oracle Net Servicesの「接続時フェイルオーバー」で提供されているものです。複数のサーバで構成されたクラスタシステム全体を1つのサーバとみなして稼動させるこの機能はOracle RACと同時に使用されることが多いので、ここで紹介します。

   この機能を使用するには、Oracleクライアント側のローカルネーミングパラメータファイル(tnsnames.ora)で設定を行います。例えば、以下の例のように定義する場合、デフォルトで「接続時フェイルオーバー」機能が有効化されます。

ローカルネーミングパラメータの設定
Oracle Clusterwareログファイル
(画像をクリックすると別ウィンドウに拡大図を表示します)

   ここで、サーバ「pe26501」の電源ボタンを押して強制停止させ、接続を実行してみました。次の実行例では「Copyright (c) 1982, 2005, Oracle. All Rights Reserved.」が出力された状態で少し待たされますが、問題なく接続できることを確認できました。

   この環境では、SQL*Plusのプロンプトにインスタンス名を表示するように設定しており、動き続けているサーバ「pe26502」にあるインスタンス「ThinkIT2」に接続できたことが確認できます。

サーバ片系ダウン時の接続
D:\>sqlplus takemura/takemura@ThinkIT

SQL*Plus: Release 10.2.0.2.0 - Production on 土 5月 27 12:19:51 2006

Copyright (c) 1982, 2005, Oracle. All Rights Reserved.

※ここで少し待たされる

Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
に接続されました。
ThinkIT2>


サーバ障害においても、データの一貫性は保たれる

   ここまでの内容で、動作を続けているサーバがあれば、そちら側に接続して業務を実行できることがおわかりいただけたと思います。しかし、SQLを実行中にサーバがダウンした場合、データは大丈夫なのか不安に感じるでしょう。

   次のような更新処理をサーバ「pe26501」で実行し、3行目を実行中にサーバ「pe26501」の電源ボタンを押して強制停止させてみました。

SQL> UPDATE EMP SET JOB = ‘SE’ ;
SQL> COMMIT ;
SQL> UPDATE EMP SET JOB = ‘MANAGER’ ;

   その後、サーバ「pe26501」を停止させたまま、サーバ「pe26502」でデータの内容を確認しました。

サーバ「pe26502」でのデータ内容を確認
ThinkIT2> SELECT COUNT(*) FROM EMP WHERE JOB = 'SE' ;

  COUNT(*)
----------
   1000000

ThinkIT2> SELECT COUNT(*) FROM EMP WHERE JOB = 'MANAGER' ;

  COUNT(*)
----------
         0

   このように、COMMITされた更新についてはデータが反映され、COMMITされていないデータについてはデータが反映されず、一貫性を保ったデータ状態になります。

   これはインスタンス「ThinkIT1」で実行されていた処理のリカバリをインスタンス「ThinkIT2」が実行するからです。その様子はインスタンス「ThinkIT2」のアラートログファイルを見れば確認することができます。

インスタンス「ThinkIT2」のアラートログファイル
インスタンス「ThinkIT2」のアラートログファイル
(画像をクリックすると別ウィンドウに拡大図を表示します)

前のページ  1  2  3


日立システムアンドサービス 竹村 浩二氏
著者プロフィール
株式会社日立システムアンドサービス
オープンソリューション本部
プロフェッショナルサービス部   竹村 浩二

日立システムに転職し、8年目。Oracle Databaseの設計/構築/移行/技術支援などに携わっている。Oracle RACを使った高い信頼性と高可用性を備えたデータベース構築も手がける。2004年には、新資格でのORACLE MASTER Platinum Oracle9i Databaseを国内第一号にて取得したほか、本年、同Oracle Database 10g を同じく国内第一号にて取得している。


INDEX
第6回:サーバダウン時のOracle RACの可用性
  はじめに
  インスタンスダウン時の自動再起動
稼動しているサーバを意識せずに接続可能