2008年10月25日土曜日

[TechDay] 第6回 Amazon Elastic Compute Cloud (Amazon EC2)

第5回で約束したとおり今回はEC2の再起動をしてもOracle Net Serviceが正常に起動するための設定を説明します。


Oracle Net Serviceを起動するために必要な構成ファイル:listener.ora


Oracle Net Serviceの構成ファイルに記述する環境情報にはHOST名があります。
一般的なLinux環境では動的にHOST名を変更することはないためlistener.oraファイルは一度書けばよいことですが、EC2のHOST名は再起動すると以前の名前と変わってしまいます。
そのためlistener.oraに記述するHOST名はインスタンス起動時に動的に設定してあげる必要があります。


Oracleの自動起動シェルの変更


◆Oracleの自動起動シェル
/etc/init.d/oracle-xe
※/etc/init.dはシンボリックリンク

上記の起動シェルの中でOracle Net Serviceを起動する記述がありますがその時にlistener.oraを書き換えるコマンドを追加します。

◆listener.oraを動的に変更する方法
起動シェルでlistener.oraに記述するHOST名を変更してあげましょう。

以下に設定方法を示します。

1)listener.ora.orgファイルの準備
以下のようにHOST名に「%hostname%」など動的に変更するときの識別名を記述した種ファイル(listener.ora.org)を用意します。
****listener.ora抜粋*********************************************
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
(ADDRESS = (PROTOCOL = TCP)(HOST = %hostname%)(PORT = 1521))
)
)
*****************************************************************

2)インストーラで作成されている起動シェルを修正します。
起動シェルの中でコールしている以下のファイルを修正します。

/etc/sysconfig/oracle-xe

このファイルはコメントを読めばわかりますが、システムの起動時にOracleを自動起動させるときの構成を指定するファイルです。


#This is a configuration file for automatic starting of the Oracle
#Database and listener at system startup.It is generated By running
#'/etc/init.d/oracle-xe configure'.Please use that method to modify this
#file

# ORACLE_DBENABLED:'true' means to load the Database at system boot.
ORACLE_DBENABLED=true

# LISTENER_PORT: Database listener
LISTENER_PORT=1521

# HTTP_PORT : HTTP port for Oracle Application Express
HTTP_PORT=8090

# Configuration : Check whether configure has been done or not
CONFIGURE_RUN=true

# 以降が変更部分 ********
# 種ファイルでlistener.oraファイルを上書きする
\cp $ORACLE_HOME/network/admin/listener.ora.org $ORACLE_HOME/network/admin/listener.ora
# hostnameコマンドで取得した文字列で%hostname%を置換
sed -i "s/%hostname%/`hostname`/g" $ORACLE_HOME/network/admin/listener.ora
# リスナー起動には上記まででOK
# ついでにNet Serviceに接続するためのクライアント用構成ファイル
# (TNSサービス名の定義)も修正
\cp $ORACLE_HOME/network/admin/tnsnames.ora.org $ORACLE_HOME/network/admin/tnsnames.ora
sed -i "s/%hostname%/`hostname`/g" $ORACLE_HOME/network/admin/tnsnames.ora
#************************


参考情報

◆Oracleの起動停止
/etc/rc.d/init.d/oracle-xe start
/etc/rc.d/init.d/oracle-xe stop

0 件のコメント:

コメントを投稿