Oracle Real Application Clusters(以下"Oracle RAC"と表記します) を使用したシステム構成、TROの設定、およびデータベースの設定について説明します。なお、Oracle Databaseのバージョンは11gR2を前提に説明します。
Oracle RACの構築方法については、Oracleのマニュアルを参照してください。
DBサーバ側には、Oracle DatabaseおよびOracle Database Grid Infrastructureをインストールします。
連携することができるバージョンについては、インストールガイドを参照してください。
DBクライアント側には、Oracle Database Clientをインストールします。インストールタイプは、Instant Client、管理者、ランタイムが使用できます。
Oracle Database Clientのバージョンに合わせて、本製品の"Oracleのバージョンレベルのエントリ操作"を行う必要があります。Oracle Database Clientのバージョンが11gR2の場合の例を以下に示します。
/opt/FJSVlnktr/bin/lxrtmoralnk.sh 11.2.0 |
lxrtmoralnk 1120 |
バージョンエントリの詳細については、ソフトゥエア説明書を参照してください。
DBクライアント側のバージョンは、DBサーバ側のデータベースへの接続をサポートしているものにする必要があります。詳細はOracleのマニュアルを参照してください。
認証の種類は以下のとおりです。ローカル接続と同じです。
データベースの認証機構
システム構成を以下に示します。
Oracle RACは複数のノード(サーバ)から構成されます。個々のノードでは、リスナーおよびインスタンスが動作し、共用ディスク上のデータにアクセスします。
DBクライアントからの接続要求は、SCAN(Single Client Access Name)が受け付けます。SCANは3個のSCANリスナーから構成されており、個々のSCANリスナーはIPアドレスを持っています。DBクライアントからは、SCANを代表する名前(SCAN名)をホスト名とする1台のDBサーバとして見えます。
1個の接続要求はいずれかのSCANリスナーが受け付け、いずれかのノードに振り分けます。たとえば、SCAN2が要求を受け付けて、1番目のノードに振り分けます。別の接続要求に対しては、別のルートで振り分けられる可能性があります。
また、名前解決を行うためのGNS(Grid Naming Service)が動作しており、SCAN名から実際に要求を受け付けるSCANのIPアドレスに変換します。
SCANおよびGNSについては、Oracleのマニュアルを参照してください。
DNSサーバのIPアドレスをOS(例:hostsファイル)に登録しておきます。
ネット・サービスなどによりネット・サービス名(SCAN名/ポート番号/サービス名の組み合わせ)を定義しておきます。
TROのDBサービス定義にネット・サービス名を指定することにより、Oracleクライアントを通してDBサーバにデータを格納します。
DNSおよびDHCPの役割を持つサーバを用意します。
DNSには、DNSのネットワークドメイン配下となるGNSサブドメインを登録します。DBクライアントからSCAN名について名前解決の要求を受けると、GNSからIPアドレスを取得してDBクライアントに返却します。
また、DHCPとして割り当てる範囲のIPアドレス(DBサーバ内で使用する仮想IPアドレス)を用意します。
2ノード、GNSを使用するネットワークの構成例を以下に示します。なお、ここでは、各ノードをそれぞれ"ノード1"、"ノード2"と表現します。
ノード/サーバ | タイプ | 名前 | IPアドレス | 名前解決 |
---|---|---|---|---|
ノード1 | パブリック | lrac1.linktro.com | 192.168.0.11 | DNS |
仮想 | - | DHCP割り当て | GNS | |
プライベート | lrac1priv.linktro.com | 192.168.1.11 | DNS | |
ノード2 | パブリック | lrac2.linktro.com | 192.168.0.12 | DNS |
仮想 | - | DHCP割り当て | GNS | |
プライベート | lrac2priv.linktro.com | 192.168.1.12 | DNS | |
SCAN | 仮想 | scan.grid.linktro.com | DHCP割り当て | GNS |
GNS | - | gns-vip.linktro.com | 192.168.0.3 | DNS |
DNS/DHCP | - | dns.linktro.com | 192.168.0.2 | - |
DNSサーバのIPアドレスを、DBサーバを構成する各ノードおよびDBクライアントに登録します。SCANおよび各IPアドレスの名前解決はGNSにより行われます。
ネットワークとしてパブリックネットワークとプライベートネットワークが必要です。詳細については、Oracleのマニュアルを参照してください。
なお、GNSやSCANリスナーを使用しない運用もできます。詳細については、Oracleのマニュアルを参照してください。
DNSサーバおよびDHCPサーバを構築します。DNSサーバおよびDHCPサーバを同一サーバに構築する例を以下に説明します。
固定IPアドレスを登録します。DNSのホスト名が"dns.linktro.com"、DNSのIPアドレスが"192.168.0.2"の場合の例を以下に示します。
サーバ | 名前 | IPアドレス |
---|---|---|
GNS | gns-vip.linktro.com | 192.168.0.3 |
ノード1(パブリック) | lrac1.linktro.com | 192.168.0.11 |
ノード1(プライベート) | lrac1priv.linktro.com | 192.168.1.11 |
ノード2(パブリック) | lrac2.linktro.com | 192.168.0.12 |
ノード2(プライベート) | lrac2priv.linktro.com | 192.168.1.12 |
DNSのネットワークドメイン配下となるGNSサブドメインを登録します。
DNSのネットワークドメインが"linktro.com"の場合の例を以下に示します。
grid.linktro.com |
GNSサブドメイン配下の名前に対してGNSサーバに名前解決を依頼するように設定します。
DNSの構築方法の詳細については、各OSのマニュアルを参照してください。
DHCPサーバから動的に割り当てるIPアドレスの範囲を登録します。
登録するIPアドレスの範囲の例を以下に示します。
192.168.0.21~192.168.0.254 |
DHCPサーバの構築方法の詳細については、各OSのマニュアルを参照してください。
Oracle RACを構築する前に、各ノードにDNSサーバを登録します。
その後、Oracle RACを構築し、Oracle RACを構成する各プロセスを起動します。
デフォルトでは、Oracle RACが構築された状態で各ノードを起動すると、各プロセスが自動的に起動します。詳細については、Oracleのマニュアルを参照してください。
Database Configuration Assistantで入力するおもな情報の例を以下に示します。その他の情報については、Oracleのマニュアルを参照してください。
画面 | 入力/選択内容 |
---|---|
インストールオプション | クラスタ用のGrid Infrastructureのインストールおよび構成 |
インストールタイプ | 拡張インストール |
Gridプラグ・アンド・プレイの情報 | |
クラスタノードの構成 | ホスト名:lrac1.linktro.com、lrac2.linktro.com |
ネットワーク・インタフェースの使用方法の指定 | eth0/192.168.0.0/パブリック |
項目 | 入力/選択内容 |
---|---|
クラスタ名 | lrac-cluster |
SCAN名 | scan.grid.linktro.com |
SCANポート | 1521 |
GNSの構成 | チェックする |
GNSサブドメイン | grid.linktro.com |
GNS VIPアドレス | 192.168.0.3 |
プロファイル・パラメータ(sqlnet.oraファイル)を設定してください。
SQLNET.EXPIRE_TIMEの例を以下に示します。
SQLNET.EXPIRE_TIME=10 |
ネットワークの切断などによってデータベースから切断されたあとに再接続が完了すると、RT14203メッセージが出力されます。しかし、Oracleの内部で接続情報が残っていると、再接続が完了したにもかかわらず、逐次差分反映処理が進まないことがあります。
SQLNET.EXPIRE_TIMEを指定することにより、この現象を軽減できます。この値を設定しているにも関わらず現象が頻発する場合は、値を小さくすることを推奨します。また、データベースを再起動すると、内部の接続情報は初期化されるため、データベースを再起動することを推奨します。
DBクライアント側のデータベースの設定を行います。詳細については、Oracleのマニュアルを参照してください。
ローカル・ネット・サービスなど(例:Net Configuration Assistant)により、ネット・サービス名を設定します。設定した内容はローカル・ネーミング・パラメータ(tnsnames.oraファイル)に反映されます。
tnsnames.oraファイルの例を以下に示します。ここでは"DB1"がネット・サービス名となります。
DB1 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = scan.grid.linktro.com)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = ORCL) ) ) |
また、ネット・サービス名の定義で指定されているホスト名を解決するため、DNSサーバを登録します。DNSサーバの登録方法については、各OSのマニュアルを参照してください。
Oracleのコマンドなど(例:sqlplusコマンド)により、目的のデータベースに接続できることを確認してください。
FAILOVER_MODEパラメータを設定しないでください。
FAILOVER_MODEパラメータを設定した場合、逐次差分反映処理が異常終了することがあります。また、DB動作環境定義キーワードで指定した再接続のリトライが、データベースから切断されたときに行われません。
他のアプリケーションでFAILOVER_MODEパラメータが必要な場合は、ネット・サービス名を分けてください。(例:"DB1"ではFAILOVER_MODEなし、"DB2"ではFAILOVER_MODEあり、DATABASEオペランドには"DB1"を指定、他のアプリケーションでは"DB2"を指定)
FAILOVER_MODEパラメータについては、Oracleのマニュアルを参照してください。
プロファイル・パラメータ(sqlnet.oraファイル)を設定してください。
SQLNET.RECV_TIMEOUTの例を以下に示します。
SQLNET.RECV_TIMEOUT=3 |
RT14102メッセージでのデータベースシステムのメッセージとしてORA-12535またはORA-12609が頻発する場合は、この値を大きくしてください。
Oracle Database ClientのインストールタイプがInstantClientの場合、tnsnames.oraファイルおよびsqlnet.oraファイルを作成し、そのファイルが存在するディレクトリを、環境変数TNS_ADMINに指定する必要があります。
Oracle Database Clientのインストールタイプが管理者またはランタイムの場合、それぞれのファイルはデフォルトのディレクトリに存在します。デフォルトのディレクトリに存在するファイルを使用する場合、環境変数TNS_ADMINは不要です。
DBクライアント側でTROに必要な環境変数を設定します。詳細については、"4.3.1 環境変数の設定"を参照してください。
DBクライアント側でDB動作環境定義キーワードを指定します。
リモート接続に関するDB動作環境定義キーワードは以下のとおりです。
キーワード | 概要 |
---|---|
接続方式を指定します。 | |
Oracleデータベースのロックの獲得の待機時間を指定します。 | |
切断された場合の、再接続のリトライを行う回数を指定します。 | |
再接続のリトライを行う間隔を指定します。 |
例を以下に示します。
CONNECT_TYPE:REMOTE |
また、他のDB動作環境定義キーワードも必要に応じて指定してください。
詳細については、"4.3.2 DB動作環境定義の作成"を参照してください。
DBクライアント側でDBサービス定義を作成します。
DBサービス定義を設定します。DBサービス定義の文法については、"第8章 DBサービス定義"を参照してください。
ローカル接続とリモート接続では、STOREGROUP定義文のDATABASEオペランドに指定する内容が異なります。
ローカル接続の場合は、Oracleインスタンス識別子を指定します。
例を以下に示します。
DATABASE = ORCL |
指定方法は2種類あります。
DBクライアントの設定により作成したtnsnames.oraファイルで示すネット・サービス名を指定します。
例を以下に示します。
DATABASE = DB1 |
DBサーバのホスト名、ポート番号、サービス名を直接指定します。
例を以下に示します。
DATABASE = scan.grid.linktro.com:1521/ORCL |
なお、DBサーバのホスト名やサービス名にドメイン名(".~.com"など)を含むことにより128バイトを超える場合、この指定は使えません。ネット・サービス名を使用してください。
DBクライアント側で逐次差分反映を開始します。
逐次差分反映の開始は、lxrtmdbコマンドにより行います。詳細については、"7.3.4 lxrtmdbコマンド"を参照してください。
リモート接続では、データベースの認証機構のみ使用可能であるため、lxrtmdbコマンドには-uオプションを指定する必要があります。
例を以下に示します。
lxrtmdb -s DBSVC1 -r STRGRP1 -o -u user1/passwd1 |
GNSを使用せずにSCANを使用する場合の構成について説明します。
GNSを使用する場合との違いは、以下のとおりです。
すべてのIPアドレスは固定。
名前解決はDNSまたはhostsファイルによって行う。
tnsnames.oraファイルにてネット・サービス名を定義する際、Oracle RACを構成する各ノードを指定する。
逐次差分反映を開始する前に、以下が動作することを確認してください。
sqlplus ユーザ/パスワード@ネット・サービス名 |
DBサービス定義のDATABASEオペランドには、ネット・サービス名を指定します。
Oracle RACの構築方法については、Oracleのマニュアルを参照してください。
SCANを使用しない構成について説明します。
この構成は、以下の場合に使います。
Oracle Databaseのバージョンが11gR1以前
Oracle Databaseのバージョンが11gR2以降でSCANを使わない
GNSおよびSCANを使用する場合との違いは、以下のとおりです。
すべてのIPアドレスは固定。
名前解決はDNSまたはhostsファイルによって行う。
tnsnames.oraファイルにてネット・サービス名を定義する際、Oracle RACを構成する各ノードを指定する。
逐次差分反映を開始する前に、以下が動作することを確認してください。
sqlplus ユーザ/パスワード@ネット・サービス名 |
DBサービス定義のDATABASEオペランドには、ネット・サービス名を指定します。
Oracle RACの構築方法については、Oracleのマニュアルを参照してください。
"第6部 クラスタシステム"で示す運用待機型クラスタシステムとOracle RACの組み合わせについて説明します。
この構成の概要は今のとおりです。
運用待機型クラスタシステムを構築します。
ローカルデータベースを使用するクラスタ構成(詳細は"第6部 クラスタシステム"を参照)と比較すると、データベースがDBサーバに移動した形になります。
DBクライアント側ではいずれかのノードが運用中となります。
PRIMECLUSTERとの組み合わせ
DBクライアント側をPRIMECLUSTERで構築します。
ローカルデータベースへ接続するPRIMECLUSTERの構成との違いは、以下のとおりです。
クラスタアプリケーションに、TNSリスナーおよびOracleインスタンスを登録しません。
Oracleクライアント(ネット・サービス名など)の設定を行います。
その他の設定(DBサービス定義、DB動作環境定義など)は、"30.2.1 Oracle RAC"で説明している内容となります。
ローカルデータベースでの構成については、"28.2.1.8.5 クラスタアプリケーションの設定"を参照してください。
フェールオーバー クラスタリングとの組み合わせ
DBクライアント側をフェールオーバー クラスタリングで構築します。
ローカルデータベースへ接続するフェールオーバー クラスタリングの構成との違いは、以下のとおりです。
TRO用の"サービスまたはアプリケーション"に、Oracle TNS ListenerおよびOracle Databaseを登録しません。TRMサービスの依存先は、クライアント アクセス ポイントとなります。
Oracleクライアント(ネット・サービス名など)の設定を行います。
その他の設定(DBサービス定義、DB動作環境定義など)は、"30.2.1 Oracle RAC"で説明している内容となります。
ローカルデータベースでの構成については、"28.4.1.6.2 リソースの登録"を参照してください。