RAC環境におけるサービスの管理

RAC構成でのサービスの概念

サービスの特徴
  • グリッドコンピューティングを提供するための重要な概念である。
  • 高可用性:クライアントがサービスに接続するのであれば、サービスを構成するいずれかのインスタンスに接続することになり、可用性が向上する。
  • パフォーマンス:異なるサービスを異なるインスタンスで動作させるのであれば、インスタンス間で発生するキャッシュフュージョンが減少し、ブロック転送を最小限にすることができる。
優先インスタンスと使用可能インスタンス

優先インスタンス(Preference)
サービスを提供するインスタンスである。
使用可能インスタンス(Available)
通常はサービスを提供せず、優先インスタンスが停止した時にサービスを提供するインスタンスである。

サービスの作成

作成ツールと作業内容
作業内容 DBCA EM SRVCTL
クラスタリソース登録
tnsnames.ora(サーバー側)の修正 × ×
サービス作成後の初期起動 ×
DBCAによるサービス作成
service_0.png

 
サービス管理を選択
 

service_1.png

 
RACデータベースの選択
 

service_2.png

 
サービスOLTPとBATCHを追加
 

service_3.png

 
OLTPの構成
 

service_4.png

 
BATCHの構成
 

service_5.png

 
サービスの設定
 

service_6.png

 
crs_statでのサービスの確認

  • 末尾がcsのものはサービス管理に使用するリソースである。
  • 末尾がsrvのものは優先インスタンスで指定したインスタンス毎に作成されたサービスである。
[oracle oracle(RACDB1)] crs_stat
...

NAME=ora.racdb.BATCH.RACDB2.srv
TYPE=application
TARGET=ONLINE
STATE=ONLINE on rac-node02

NAME=ora.racdb.BATCH.cs
TYPE=application
TARGET=ONLINE
STATE=ONLINE on rac-node02

NAME=ora.racdb.OLTP.RACDB1.srv
TYPE=application
TARGET=ONLINE
STATE=ONLINE on rac-node01

NAME=ora.racdb.OLTP.RACDB2.srv
TYPE=application
TARGET=ONLINE
STATE=ONLINE on rac-node02

NAME=ora.racdb.OLTP.cs
TYPE=application
TARGET=ONLINE
STATE=ONLINE on rac-node01
...
[oracle oracle(RACDB1)]

tnsnames.ora(サーバー側)に下記の記述を追加された。
BATCH =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac-node01-vip)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac-node02-vip)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = BATCH)
    )
  )

OLTP =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac-node01-vip)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac-node02-vip)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = OLTP)
    )
  )

サービスの管理

サービスの起動と停止

サービスの確認

[rac-node01 oracle(RACDB1)] srvctl status service -d racdb -s OLTP
Service OLTP is running on instance(s) RACDB1, RACDB2
[rac-node01 oracle(RACDB1)] srvctl status service -d racdb -s BATCH
Service BATCH is running on instance(s) RACDB2
[rac-node01 oracle(RACDB1)]

RACDB2のBATCHを停止する
[rac-node01 oracle(RACDB1)] srvctl stop service -d racdb -s BATCH -i RACDB2
[rac-node01 oracle(RACDB1)] srvctl status service -d racdb -s BATCH
Service BATCH is running on instance(s)
[rac-node01 oracle(RACDB1)]

RACDB2のBATCHを起動する
[rac-node01 oracle(RACDB1)] srvctl start service -d racdb -s BATCH -i RACDB2
[rac-node01 oracle(RACDB1)] srvctl status service -d racdb -s BATCH
Service BATCH is running on instance(s) RACDB2
[rac-node01 oracle(RACDB1)]
サービスの再配置

サービス定義の確認

[rac-node01 oracle(RACDB1)] srvctl config service -d racdb -s BATCH
BATCH PREF: RACDB2 AVAIL: RACDB1

BATCHサービス再配置
[rac-node01 oracle(RACDB1)] srvctl relocate service -d racdb -s BATCH -i RACDB2 -t RACDB1
[rac-node01 oracle(RACDB1)] srvctl status service -d racdb -s BATCH
Service BATCH is running on instance(s) RACDB1
[rac-node01 oracle(RACDB1)]
サービス定義の変更

BATCHサービス定義の確認

[rac-node01 oracle(RACDB1)] srvctl config service -d racdb -s BATCH
BATCH PREF: RACDB2 AVAIL: RACDB1

BATCHサービス構成の完全な変更
[rac-node01 oracle(RACDB1)] srvctl modify service -d racdb -s BATCH -n -i RACDB1 -a RACDB2
[rac-node01 oracle(RACDB1)] srvctl config service -d racdb -s BATCH
BATCH PREF: RACDB1 AVAIL: RACDB2
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License