第 4章. データベースサービス

この章では、データベースサービスのアベイラビリティ(可用性)を高めるためのRed Hat Enterprise Linuxの設定方法について説明します。

注意注記
 

ここでは、データベース設定手順の1つの例を示します。設定手順は、データベース製品のバージョンごとに異なることに注意してください。このため、ここで説明している内容が使用しているデータベースに該当しないこともあります。

4.1. Oracleサービスの設定

データベースサービスは、アベイラビリティの高いデータをデータベースアプリケーションに提供できます。その後、アプリケーションは、ネットワークアクセスをWebサーバなどのデータベースクライアントシステムに提供できます。サービスがフェイルオーバーすると、アプリケーションは新しいクラスタシステムを通じて共有データベースのデータにアクセスします。ネットワークアクセス可能なデータベースサービスには、通常、1つのIPアドレスが割り当てられていて、クライアントの透過的なアクセスを維持できるようにサービスとともにフェイルオーバーされます。

ここでは、Oracleデータベースのクラスタサービスの設定例について説明します。サービススクリプトの変数はOracleの構成によって異なりますが、ここで説明している例は個別の環境でサービスを設定するのに役立ちます。サービスのパフォーマンスを向上させる方法については、項4.2 を参照してください。

例では、以下のように仮定しています。

各クラスタシステムの Oracleサービスに早急にアクセスできる一貫したユーザー/グループ設定を作成します。 例は次の通りです。

mkdir /users
groupadd -g 900 dba
groupadd -g 901 oinstall
useradd -u 901 -g 901 -d /users/oracle -m oracle
usermod -G 900 oracle

Oracleサービスの例では、/users/oracleに配置し、Oracle管理者アカウントが所有する必要がある3つのスクリプトを使用します。oracleスクリプトは、Oracleサービスを起動/停止するのに使用します。このスクリプトはサービスを追加するときに指定します。このスクリプトは、Oracleの他のサンプルスクリプトを呼び出します。startdbstopdbスクリプトは、データベースを起動/停止します。アプリケーションは数多くの方法でOracleデータベースとやりとりすることができます。

Oracleの起動、停止、状態の確認に使用されるoracleスクリプトの例は次の通りです。

#!/bin/sh
#
# Cluster service script to start, stop, and check status of oracle
#

cd /users/oracle

case $1 in
start)
    su - oracle -c ./startdb
    ;;
stop)
    su - oracle -c ./stopdb
    ;;
status)
    status oracle
    ;; 
esac

Oracle Database Serverインスタンスを起動するためのstartdbスクリプトの例を以下に示します。

#!/bin/sh
#

#
# Script to start the Oracle Database Server instance.
#
########################################################################
#
# ORACLE_RELEASE
#
# Specifies the Oracle product release.
#
########################################################################

ORACLE_RELEASE=9.2.0

########################################################################
#
# ORACLE_SID
#
# Specifies the Oracle system identifier or "sid", which is the name of
# the Oracle Server instance.
#
########################################################################

export ORACLE_SID=TEST

########################################################################
#
# ORACLE_BASE
#
# Specifies the directory at the top of the Oracle software product and
# administrative file structure.
#
########################################################################

export ORACLE_BASE=/u01/app/oracle

########################################################################
#
# ORACLE_HOME
#
# Specifies the directory containing the software for a given release.
# The Oracle recommended value is $ORACLE_BASE/product/<release>
#
########################################################################

export ORACLE_HOME=/u01/app/oracle/product/${ORACLE_RELEASE}

########################################################################
#
# LD_LIBRARY_PATH
#
# Required when using Oracle products that use shared libraries.
#
########################################################################

export LD_LIBRARY_PATH=${ORACLE_HOME}/lib:$LD_LIBRARY_PATH

########################################################################
#
# PATH
#
# Verify that the users search path includes $ORACLE_HOME/bin 
#
########################################################################

export PATH=$PATH:${ORACLE_HOME}/bin

########################################################################
#
# This does the actual work.
#
# Start the Oracle Server instance based on the initSID.ora
# initialization parameters file specified.
# 
########################################################################

/u01/app/oracle/product/9.2.0/bin/sqlplus << EOF
sys as sysdba
spool /home/oracle/startdb.log
startup pfile = /u01/app/oracle/product/9.2.0/admin/test/scripts/init.ora open;
spool off
quit;
EOF

exit

Oracle Database Serverインスタンスを停止するためのstopdbスクリプトの例を以下に示します。

#!/bin/sh
#
#
# Script to STOP the Oracle Database Server instance.
#
######################################################################
#
# ORACLE_RELEASE
#
# Specifies the Oracle product release.
#
######################################################################

ORACLE_RELEASE=9.2.0

######################################################################
#
# ORACLE_SID
#
# Specifies the Oracle system identifier or "sid", which is the name 
# of the Oracle Server instance.
#
######################################################################

export ORACLE_SID=TEST

######################################################################
#
# ORACLE_BASE
#
# Specifies the directory at the top of the Oracle software product
# and administrative file structure.
#
######################################################################

export ORACLE_BASE=/u01/app/oracle

######################################################################
#
# ORACLE_HOME
#
# Specifies the directory containing the software for a given release.
# The Oracle recommended value is $ORACLE_BASE/product/<release>
#
######################################################################

export ORACLE_HOME=/u01/app/oracle/product/${ORACLE_RELEASE}

######################################################################
#
# LD_LIBRARY_PATH
#
# Required when using Oracle products that use shared libraries.
#
######################################################################

export LD_LIBRARY_PATH=${ORACLE_HOME}/lib:$LD_LIBRARY_PATH

######################################################################
#
# PATH
#
# Verify that the users search path includes $ORACLE_HOME/bin 
#
######################################################################

export PATH=$PATH:${ORACLE_HOME}/bin

######################################################################
#
# This does the actual work.
#
# STOP the Oracle Server instance in a tidy fashion.
# 
######################################################################

/u01/app/oracle/product/9.2.0/bin/sqlplus << EOF
sys as sysdba
spool /home/oracle/stopdb.log
shutdown abort;
spool off
quit;
EOF

exit

4.1.1. Oracle と クラスタ設定ツール

クラスタ設定ツールを使用して Oracleサービスを追加するには、次を実行してください。

  1. メイン メニュー => システム設定 => サーバー設定 => クラスタ と進んで選択するか、redhat-config-clusterをシェルプロンプトで入力してクラスタ設定ツール を起動してください。デフォルトではクラスタステータスツール が表示されます。

  2. クラスタステータスツールメニューからクラスタ => 設定を選択し、クラスタ設定ツールを起動してください。

  3. サービスタブをクリックしてください。

  4. Oracle サービスの追加

    • 新規をクリックすると サービスダイアログが表示されます。

      図 4-1. Oracle サービスの追加

    • Oracle サービスの サービス名 を入力してください。

    • フェイル オーバー ドメインを 選択するか、Noneのままにしてください。

    • 数字(秒単位)を入力し、 init スクリプトのstatus機能で Oracle サービスの健康状態を調べます。

    • /home/oracle/oracleのような ユーザー スクリプト を入力してください。

    • OKをクリックしてください。

  5. OracleサービスのIPアドレスを追加します。

    • Oracleサービスを選択して Add Childをクリックします。

    • サービス IPアドレスを選択して、 OKをクリックするとサービス IPアドレスダイアログが表示されます。

    • IP アドレスを入力してください。

    • ネットマスクを入力するか Noneのままにしてください。

    • ブロードキャスト アドレスを入力するか、Noneのままにしてください。

    • OKをクリックします。

  6. Oracleサービスと管理ファイルのデバイスを追加します。

    • Oracleサービスを選択して Add Childをクリックします。

    • デバイスを追加を選択し OKをクリックするとデバイス ダイアログが表示されます。

    • デバイス 特別 ファイル (例:/dev/sdb5) を入力してください。

    • マウント ポイントフィールドに /u01を入力してください。

    • FS タイプでファイル システム タイプを選択するか 空欄のままにしておいてください。

    • rw (読み書き)などのマウント ポイントオプションを入力してください。

    • 強制アンマウントに チェックを付けるか外してください。

    • OKをクリックします。

  7. Oracleデータベースファイルのデバイスを追加してください。

    • Oracleサービスを選択して Add Childをクリックします。

    • デバイスを追加を選択し OKをクリックするとデバイス ダイアログが表示されます。

    • デバイス 特別 ファイル (例: /dev/sdb6) を入力してください。

    • マウント ポイントフィールドに /u02を入力します。

    • FS タイプでファイル システム タイプを選択するか 空欄のままにしておいてください。

    • rw (読み書き)などのマウント ポイントオプションを入力してください。

    • 強制アンマウントに チェックを付けるか外してください。

    • OKをクリックします。

  8. ファイル => 保存と選択し、 Oracleサービスを保存します。