| Oracle Real Application Clustersインストレーション・ガイド 11gリリース1(11.1)for Linux and UNIX Systems E05832-04 |
|
![]() 戻る |
![]() 次へ |
この章では、Oracle Real Application Clusters(Oracle RAC)用にインストールされた構成について説明します。
この章の内容は次のとおりです。
Oracle Net Configuration Assistant(NetCA)およびDatabase Configuration Assistant(DBCA)は、Oracle RACデータベースの作成およびOracle Enterprise Manager検出に必要な要件を満たすように環境を構成します。
|
注意: 構成ファイルは、クラスタ・データベースの各ノードに作成されます。 |
Oracle RACのインストールの完了後は、ホスト名を変更しないようにしてください(ドメイン修飾の追加または削除を含む)。ホスト名はOracle Clusterwareのインストールで作成され、データベース・プロセスで広範に使用されます。ホスト名が変更されているノードは、クラスタから削除して新しい名前で追加しなおす必要があります。
DBCAは、作成するクラスタ・データベースの構成情報を格納するために、Oracle Cluster Registry(OCR)を使用します。OCRは、クラスタ・ファイル・システム環境内で共有されます。クラスタ・ファイル・システムを使用していない場合は、このファイルを共有ディスク・デバイス・ファイルにする必要があります。OCRは、Oracle Universal Installer(OUI)によって、Oracle Clusterwareのインストール時に自動的に初期化されます。
Oracleは、oratab構成ファイルに各Oracle RACデータベースのエントリを作成します。oratabファイルは、インストール時にroot.shスクリプトによって作成され、データベースの作成時または削除時にDatabase Configuration Assistantによって更新されます。Oracle Enterprise Managerは、サービス検出時に、このファイルを使用してOracle RACデータベースの名前を確認します。また、再起動時にそのデータベースを自動的に起動するかどうかも確認します。
データベースのエントリの構文は、次のとおりです。
$DB_UNIQUE_NAME:$ORACLE_HOME:N
コロン(:)はフィールドの終了記号として使用されます。改行は、エントリの終了を示します。シャープ記号(#)で始まる行はコメントです。環境変数$DB_UNIQUE_NAMEは、Oracle RACデータベースのOracleシステム識別子(SID)です。RACデータベースの$DB_UNIQUE_NAME識別子は企業内で一意である必要があります。$ORACLE_HOMEは、データベースへのディレクトリ・パス、Nは、システムの再起動時にデータベースを起動しないことを示します。たとえば、データベース名salesのエントリは、次のとおりです。
sales:u01/app/oracle/sales:N
この項では、DBCAによって作成されたデータベース・コンポーネントについて説明します。内容は次のとおりです。
シングル・インスタンスおよびクラスタ・データベースの両方の環境では、Oracle Databaseは表領域という小さな論理領域に分割されています。各表領域は、ディスクに格納されている1つ以上のデータ・ファイルに対応しています。表7-1に、Oracle RACデータベースで使用する表領域名、およびその表領域に含まれるデータの種類を示します。
表7-1 Real Application Clustersデータベースで使用する表領域名
| 表領域名 | 内容 |
|---|---|
|
データベースに必要な表、ビューおよびストアド・プロシージャの定義を含む、データ・ディクショナリで構成されます。この表領域内の情報は自動的にメンテナンスされます。 |
|
|
|
補助システム表領域で、 |
|
アプリケーション・データで構成されます。表を作成しデータを入力するにつれて、この領域にデータが書き込まれます。 |
|
|
SQL文の処理時に作成された一時表および索引が含まれます。非常に大規模な表に対する |
|
|
DBCAが自動UNDO管理用に作成する、インスタンスごとのUNDO表領域です。 |
|
|
自動UNDO管理を使用しない場合、Oracle Databaseはロールバック・セグメント用に |
OUIで事前構成済データベース構成オプションを使用する場合、これらの表領域名は変更できません。ただし、詳細なデータベース作成方法を使用する場合は、表領域名を変更できます。
前述のとおり、各表領域には1つ以上のデータ・ファイルがあります。事前定義済データベース構成オプションによって作成されるデータ・ファイル名は、記憶域タイプ(ASM、OFS、ブロック・デバイス、RAWデバイスなど)によって異なります。
各インスタンスは、共有記憶域に格納されている2つ以上のREDOログ・ファイルを使用して設定されています。クラスタ・ファイル・システムを使用する場合、これらのファイルは共有ファイル・システムのファイルです。クラスタ・ファイル・システムを使用しない場合、これらのファイルはブロック・デバイスまたはRAWデバイスです。ASMを使用する場合、これらのファイルは、ASMディスク・グループに格納されます。
事前構成済データベース構成オプションによって作成されるREDOログ・ファイルのファイル名は、記憶域タイプによって異なります。クラスタ・ファイル・システムを使用していない場合は、ブロック・デバイス名またはRAWデバイス名を入力する必要があります。
ブロック・デバイスまたはRAWデバイスを使用している場合に詳細なデータベース作成を行うには、「データベース記憶域」ページでREDOログ・ファイルを指定し、デフォルトのファイル名を正しいブロック・デバイス名、RAWデバイス名またはシンボリック・リンク名に置き換えます。
Oracle Databaseは、UNDO表領域に、ロールバック情報やUNDO情報を格納します。UNDO表領域を管理するには、自動UNDO管理を使用することをお薦めします。自動UNDO管理は、手動UNDO管理より簡単に管理できる、自動化されたUNDO表領域管理モードです。
|
参照: UNDO表領域の管理については、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。 |
サーバー・パラメータ・ファイル(SPFILE)を使用することをお薦めします。このファイルは、共有ディスクのサーバーにあり、クラスタ・データベースのすべてのインスタンスは、このパラメータ・ファイルにアクセスできます。
Oracle Database Vaultでは、ベースラインとなるデータベース監査方針がインストールされます。この方針は、Oracle Database Vaultデータベースの表に格納されているアクセス制御構成情報、Oracle Catalogに格納されている情報(ロールバック・セグメント、表領域など)、システム権限の使用、およびOracle Label Securityの構成に適用されます。
|
参照: データベース監査方針の詳細は、『Oracle Database Vault管理者ガイド』を参照してください。 |
Oracle RACの主要な2つのメリットは、接続時ロード・バランシング機能とフェイルオーバー機能です。
Oracle RACでは、シングル・インスタンスのOracle Databaseのロード・バランシング機能(接続がローカル・ディスパッチャ間で分散される)が拡張され、1つのクラスタ・データベース内のすべてのインスタンス間で接続数が平衡化されます。
Oracle RACのフェイルオーバー機能は、複数のノード上で複数のリスナーを構成し、同じデータベース・サービスに対するクライアント接続要求を管理します。Oracle RACでは、ノードまたはインターコネクトに障害が発生すると、関連付けられている仮想IPアドレス(VIP)が動作可能なノードに割り当てられ、そのVIPを介して接続しているクライアントに、障害が迅速に通知されます。アプリケーションおよびクライアントが透過的アプリケーション・フェイルオーバー・オプションを使用して構成されている場合、そのクライアントは動作可能なノードに再接続されます。
接続時ロード・バランシング機能とフェイルオーバー機能では、クラスタ・データベース内の冗長なリソースが活用できるため、可用性が向上します。ただし、これらの機能にはインスタンス間登録が必要です。
Oracle RACでのインスタンス間登録が発生するのは、インスタンスのプロセス・モニター(PMON)がローカル・リスナーおよび他のすべてのリスナーに登録された場合です。この場合、クラスタ・データベース内のすべてのインスタンスが、クラスタ・データベースのインスタンスが実行されているノードで動作しているすべてのリスナーに登録されます。これによって、すべてのリスナーがすべてのインスタンス間で接続を管理でき、ロード・バランシングとフェイルオーバーの両方が可能となります。
インスタンス間登録では、LOCAL_LISTENER初期化パラメータとREMOTE_LISTENER初期化パラメータの構成が必要です。LOCAL_LISTENERパラメータはローカル・リスナーを識別し、REMOTE_LISTENERパラメータはリスナーのグローバル・リストを識別します。REMOTE_LISTENERパラメータは動的です。インスタンスの追加や削除などクラスタ・データベースを再構成すると、Oracle Databaseは、REMOTE_LISTENERの設定を動的に変更します。
DBCAがデフォルトで構成するのは、専用サーバーを使用する環境のみです。ただし、DBCAの使用時に共有サーバー・オプションを選択すると、Oracleは共有サーバーを構成します。この場合、Oracle Databaseは専用サーバーと共有サーバーの両方のプロセスを使用します。共有サーバーが構成されると、DISPATCHERSパラメータは、次の例に示すように指定されます。
DISPATCHERS="(protocol=tcp)"
DISPATCHERS初期化パラメータのLISTENER属性が前述の例のように指定されていない場合、PMONプロセスは、すべてのディスパッチャに関する情報を、LOCAL_LISTENERパラメータとREMOTE_LISTENERパラメータで指定されているリスナーに登録します。
ただし、LISTENER属性が指定されている場合、PMONプロセスはディスパッチャ情報を、そのLISTENER属性に指定されているリスナーに登録します。この場合は、LISTENER属性の設定によって、指定したディスパッチャのREMOTE_LISTENERの設定値が、次の例に示すように変更されます。
DISPATCHERS="(protocol=tcp)(listener=listeners_db_name)"
|
注意: 前述の例およびこの章で使用しているdb_nameという表記は、DBCAのプロンプトで入力したデータベース名(またはOracle SID)、またはCREATE DATABASE文のDATABASEキーワードに対して作成したエントリを表します。 |
|
参照: インスタンス間登録、共有サーバーと専用サーバーの構成、および接続時ロード・バランシングの詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。 |
次の項で説明するとおり、listener.oraファイルの2種類のリスナーを構成できます。
DBCAの「初期化パラメータ」ページの「接続モード」タブを使用して専用サーバー・モードを構成した場合、リスナーでデフォルト以外のアドレス・ポートを使用すると、DBCAによってLOCAL_LISTENERパラメータが自動的に構成されます。
REMOTE_LISTENER初期化パラメータを設定して専用サーバー・モードを構成している場合は、インスタンス固有のLOCAL_LISTENER初期化パラメータも構成する必要があります。
たとえば、LOCAL_LISTENERパラメータを構成するには、次のエントリを初期化パラメータ・ファイルに追加します。この例では、listener_sidは、tnsnames.oraファイルまたはOracle Names Serverを通じてリスナー・アドレスに変換されます。
sid.local_listener=listener_sid
tnsnames.oraファイルには、次のエントリが必要です。
listener_sid=(address=(protocol=tcp)(host=node1-vip)(port=1522))
DBCAがノードで複数のリスナーを検出した場合、リスナーのリストが表示されます。データベースに登録するリスナーを1つまたはすべて選択できます。
サービスは、クライアント・アプリケーションのかわりに接続要求を受信するサーバー上でプロセスを実行し、リスナー・ファイルのエントリを使用して、セッションを調整します。このプロセスは、データベース構成時の選択に応じて、専用プロセスまたは共有サーバー・プロセスのいずれかになります。リスナーは、データベース・サービスまたはデータベース以外のサービスのプロトコル・アドレスに送信された接続要求に応答するように構成されています。
データベース・サービスまたはデータベース以外のサービスのプロトコル・アドレスは、リスナー構成ファイルlistener.ora内に構成されます。同じアドレスで構成されたクライアントは、リスナーを通じてサービスに接続できます。
事前構成済データベース構成のインストール中に、Oracle Net Configuration AssistantはLISTENER NODENAMEというデフォルトのリスナーを作成して起動します。リスナーは、データベース用のデフォルトのプロトコル・リスニング・アドレスで構成されます。「拡張インストール」では、Oracle Net Configuration Assistantから1つ以上のリスナーの作成を求めるプロンプトが表示されます。このリスナーは、指定した1つのプロトコル・アドレスに送信された接続要求に応答するように構成されます。
両方のインストール・モードでは、Oracle RACデータベースについてのサービス情報が構成されます。Oracle Database 11gリリース1(11.1)では、データベース・サービスによって、サービス名、インスタンス名、負荷情報などがリスナーに自動的に登録されます。
この機能はサービス登録と呼ばれ、listener.oraファイルの構成は必要ありません。リスナーを作成すると、Oracle Net Configuration Assistantがリスナーを起動します。node1という名前のノードのエントリを持つlistener.oraファイルの例を次に示します。
LISTENER_NODE1=
(DESCRIPTION_LIST =
(DESCRIPTION=
(ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 1521)(IP = FIRST))
(ADDRESS = (PROTOCOL = TCP)(HOST = 140.87.25.116)(PORT = 1521)(IP = FIRST)))
SID_LIST_LISTENER_NODE1=
(SID_LIST=
(SID_DESC=
(SID_NAME=)
(ORACLE_HOME=/u01/app/oracle/11/db_1)
Oracleインスタンスの起動後にリスナーが起動し、リスナーがサービス登録用に表示されると、次のOracle Databaseプロセス・モニター(PMON)検出ルーチンが起動されるまで登録は行われません。デフォルトでは、PMON検出ルーチンは60秒間隔で実行されます。
60秒の遅延を変更するには、SQL文ALTER SYSTEM REGISTERを使用します。この文によって、PMONプロセスはすぐにサービスを登録します。
リスナーの起動直後にこの文を実行するスクリプトを作成することをお薦めします。リスナーが起動され、インスタンスがすでに登録されている場合、またはリスナーが停止している場合にこの文を実行しても、何も処理されません。
|
参照: リスナーおよびlistener.oraファイルの詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。 |
tnsnames.oraファイルは、ネット・サービス名を持つ各ノードに作成されます。接続識別子は、接続記述子にマップされる識別子です。接続記述子には、次の情報が含まれます。
プロトコル・アドレスを介するリスナーの位置を含む、サービスへのネットワーク・ルート
Oracle8iリリース8.1以上のSERVICE_NAMEまたはOracle8iリリース8.1より前のsid
|
注意: 指定できるサービス名は1つのみであるため、tnsnames.oraファイルで使用するSERVICE_NAMEパラメータは1つです。 |
DBCAは、接続用のネット・サービス名を表7-2に示すように作成します。
表7-2 ネット・サービス名の接続
| ネット・サービス名のタイプ | 説明 |
|---|---|
|
データベース接続 |
データベースのインスタンスに接続するクライアントは、そのデータベースのネット・サービス名のエントリを使用します。このエントリによって、Oracle Enterprise Managerは、Oracle RACデータベースを検出できます。 リスナー・アドレスは、データベースのインスタンスを実行する各ノードに構成されます。 次の例では、クライアントは
db.example.com=
(description=
(load_balance=on)
(address=(protocol=tcp)(host=node1-vip)(port=1521)
(address=(protocol=tcp)(host=node2-vip)(port=1521)
(connect_data=
(service_name=db.example.com)))
注意: 8文字(
mydatabase.example.com=
(description =
(address = (protocol = tcp)(host = node1-vip)(port = 1521))
(address = (protocol = tcp)(host = node2-vip)(port = 1521))
(load_balance = yes)
(connect_data =
(server = dedicated)
(service_name = mydatabase.example.com)
)
)
|
|
インスタンス接続 |
データベースの特定のインスタンスに接続するクライアントは、そのインスタンスのネット・サービス名のエントリを使用します。このエントリを使用すると、たとえば、Oracle Enterprise Managerでは、クラスタ内のインスタンスを検出できます。これらのエントリは、インスタンスの起動および停止にも使用されます。 次の例では、Oracle Enterprise Managerは
db1.example.com=
(description=
(address=(protocol=tcp)(host=node1-vip)(port=1521))
(connect_data=
(service_name=db.example.com)
(instance_name=db1)))
|
|
リモート・リスナー |
「サービス登録関連パラメータの構成」で説明したように、 使用中のサーバーが共有か専用かに関係なく、リモート・リスナーのリストは、
REMOTE_LISTENER=listeners_db_unique_name
これによって、インスタンスは、他のノード上のリモート・リスナーに登録でき、 次の例では、 listeners_db.example.com= (address_list= (address=(protocol=tcp)(host=node1-vip)(port=1521)) (address=(protocol=tcp)(host=node2-vip)(port=1521))) インスタンスでは、このリストを使用して、情報を登録するリモート・リスナーのアドレスを確認します。 |
|
デフォルト以外のリスナー |
「ローカル・リスナー」および「複数のリスナー」で説明したように、デフォルト以外のリスナーが構成される場合、 sid.local_listener=listener_sid
次の例では、 listener_db1.example.com= (address=(protocol=tcp)(host=node1-vip)(port=1522)) |
|
サービスのエントリ |
DBCAの「サービス」ページを使用して高可用性サービスを構成すると、次のようなネット・サービス・エントリが作成されます。次の例に示す3つのサービス
db_svc1.example.com=
(description =
(address=(protocol=tcp)(host=node1-vip)(port=1521))
(address=(protocol=tcp)(host=node2-vip)(port=1521))
(load_balance=yes)
(connect_data=
(server = dedicated)
(service_name = db_svc1.example.com)
)
)
db_svc2.example.com=
(description=
(address=(protocol=tcp)(host=node1-vip)(port=1521))
(address=(protocol=tcp)(host=node2-vip)(port=1521))
(load_balance=yes)
(connect_data =
(server = dedicated)
(service_name=db_svc2.example.com)
(failover_mode =
(type=select)
(method=basic)
(retries=180)
(delay=5)
)
)
)
db_svc3.example.com=
(description=
(address=(protocol=tcp)(host=node1-vip)(port=1521))
(address=(protocol=tcp)(host=node2-vip)(port=1521))
(load_balance=yes)
(connect_data=
(server=dedicated)
(service_name=db_svc3.example.com)
(failover_mode=
(backup=db_svc3_preconnect.example.com)
(type=select)
(method=preconnect)
(retries=180)
(delay=5)
)
)
)
|
|
サービスのエントリ(続き) |
サービスに
db_svc3_preconnect.example.com =
(description =
(address = (protocol = tcp)(host = node1-vip)(port = 1521))
(address = (protocol = tcp)(host = node2-vip)(port = 1521))
(load_balance = yes)
(connect_data =
(server = dedicated)
(service_name = db_svc3_preconnect.example.com)
(failover_mode =
(backup = db_svc3.example.com)
(type = select)
(method = basic)
(retries = 180)
(delay = 5)
)
)
)
|
例7-1 tnsnames.oraファイルの例
この例は、事前構成済データベース構成のインストール時に作成されるサンプルのtnsnames.oraファイルです。
db.example.com=
(description=
(load_balance=on)
(address=(protocol=tcp)(host=node1-vip)(port=1521))
(address=(protocol=tcp)(host=node2-vip)(port=1521))
(connect_data=
(service_name=db.example.com)))
db1.example.com=
(description=
(address=(protocol=tcp)(host=node1-vip)(port=1521))
(connect_data=
(service_name=db.example.com)
(instance_name=db1)))
db2.example.com=
(description=
(address=(protocol=tcp)(host=node2-vip)(port=1521))
(connect_data=
(service_name=db.example.com)
(instance_name=db2)))
listeners_db.example.com=
(address_list=
(address=(protocol=tcp)(host=node1-vip)(port=1521))
(address=(protocol=tcp)(host=node2-vip)(port=1521)))
|
参照: tnsnames.oraファイルの詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。 |
Oracle Universal Installerによって、データベースのインストール後にOracle Net Configuration Assistantが起動され、Net Servicesプロファイル(sqlnet.oraファイル)が構成されます。
デフォルトでは、sqlnet.oraファイルは次のディレクトリに格納されます。
$ORACLE_HOME/network/admin
このディレクトリには、インストール時に生成されるデフォルトのsqlnet.oraファイルの他に、sampleディレクトリにサンプルsqlnet.oraファイルも格納されています。
インストール時に、Oracle Net Configuration Assistantによって次のエントリがsqlnet.oraファイルに作成されます。
NAMES.DIRECTORY_PATH=(TNSNAMES, EZCONNECT)
NAMES.DIRECTORY_PATHパラメータは、接続識別子を接続記述子に解決するために使用するネーミング・メソッドの優先順序を指定します。
ネーミング・メソッドの順序は、ディレクトリ・ネーミング(カスタム・インストールまたはアドバンスト・データベース構成オプションの場合のみ)、tnsnames.oraファイル、簡易接続、ホスト・ネーミングになります。
簡易接続ネーミング・メソッドを使用すると、TCP/IP環境でtnsnames.oraファイル内をサービス名で検索する必要がなくなります。簡易接続では、クライアントはホスト名と、オプションのポートおよびサービス名で構成される単純なTCP/IPアドレスの接続文字列を使用します。このメソッドを使用する場合、ネーミングまたはディレクトリ・システムは必要ありません。
|
参照: sqlnet.oraファイルの詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。 |