連載
» 2007年05月30日 00時00分 公開

ORACLE MASTER Silver DBA講座(15):Oracleのネットワークのクライアント側構成を知る

ORACLE MASTER資格の中級に位置付けられ、取得すればOracle技術者としてグローバルに認定される「ORACLE MASTER Silver Oracle Database 10g」。例題を利用してポイントを押さえ、確実な合格を目指そう!

[有限会社 G.F.インフィニティ (Project - ∞)]

 前回の「Oracleのネットワークのサーバ側構成とは?」に引き続き、Oracle Net Servicesについて学びます。

Oracle Net Services:Oracle Netサービス名

ポイント

 Oracle Netのクライアント側の構成が対象です。Oracle Netで使用可能なネーミングメソッドの特徴と基本的な構成方法を理解しておきましょう。

ネーミングメソッド

 クライアント側からOracleサーバに接続する場合、Oracle Netを使用してリスナーに接続後、サービス(Oracleサーバ)に接続することになります。その際、リスナーのアドレスと接続先のサービス名を指定しますが、これらの名前をどこで解決するかを表すのが「ネーミングメソッド」です。ネーミングメソッドには次のものがあります。

  • 簡易接続

クライアント側の構成が不要で、デフォルトで使用できる方法です。SSLなしのTCP/IPが使用可能であれば、「@ホスト名:リスナーポート/サービス名」を指定するだけで接続できます。ただし、接続時フェイルオーバー、ソースルーティング、ロードバランシングを使用することはできません。

  • ローカルネーミング

クライアント側にtnsnames.oraファイルを配置し、接続識別子と接続記述子を対応付けておく方法です。実行時に指定されたネットサービス名がtnsnames.oraファイル内のリストと照合され、一致するものが見つかると対応する接続記述子に変換されます。すべてのプロトコルをサポートしており、接続時フェイルオーバー、ソースルーティング、ロードバランシングを使用することもできます。Oracle Net構成が頻繁に変わることのない環境に適したネーミングメソッドです。

  • ディレクトリネーミング

Oracle Netの情報をロードしたディレクトリサーバ(LDAPサーバ)を使用し、接続識別子と接続記述子を対応付ける方法です。実行時に指定されたネットサービス名がディレクトリサーバ内のリストと照合され、一致するものが見つかると対応する接続記述子に変換されます。すべてのプロトコルをサポートしており、接続時フェイルオーバー、ソースルーティング、ロードバランシングを使用することもできます。Oracle Net構成が頻繁に変わってしまう環境に適したネーミングメソッドです。

  • 外部ネーミング

ネットワークインフォメーションサービス(Network Information Service:NIS)や分散コンピューティング環境(Distributed Computing Environment:DCE)、セルディレクトリサービス(Cell Directory Service:CDS)などのサードパーティネーミングサービスを使用して接続識別子と接続記述子を対応付ける方法です。ネーミングサービスが外部であることを除き、ディレクトリネーミングと同様のものです。

Oracle Netの接続テスト

 tnspingユーティリティを使用することで、ネットサービス名のテストを行うことができます。このテストでは、リスナーまでの接続が行われます。

 簡易接続ネーミングメソッドを使用した場合は、次のようになります。

$ tnsping mars:1521/orcl.oracle.com
TNS Ping Utility for Linux: Version 10.2.0.3.0 - Production on 21-1月 -2007 22:39:05
Copyright (c) 1997, 2006, Oracle.  All rights reserved.
パラメータ・ファイルを使用しました:
/u01/app/oracle/product/10.2.0/db_1/network/admin/sqlnet.ora
エイリアスを解決するためにEZCONNECTアダプタを使用しました。
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=orcl.oracle.com))
(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))
OK (0ミリ秒)

 ローカルネーミングメソッドを使用した場合は、次のようになります。

$ tnsping orcl
TNS Ping Utility for Linux: Version 10.2.0.3.0 - Production on 21-1月 -2007 22:40:25
Copyright (c) 1997, 2006, Oracle.  All rights reserved.
パラメータ・ファイルを使用しました:
/u01/app/oracle/product/10.2.0/db_1/network/admin/sqlnet.ora
エイリアスを解決するためにTNSNAMESアダプタを使用しました。
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = mars)(PORT = 1521))
            (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl.oracle.com)))
OK (0ミリ秒)

 指定されたネットサービス名に対応する接続記述子が見つからない場合、「OK」の代わりにエラーメッセージが表示されます。

$ tnsping orcl0
TNS Ping Utility for Linux: Version 10.2.0.3.0 - Production on 21-1月 -2007 22:44:00
Copyright (c) 1997, 2006, Oracle.  All rights reserved.
パラメータ・ファイルを使用しました:
/u01/app/oracle/product/10.2.0/db_1/network/admin/sqlnet.ora
TNS-03505: 名前の解決に失敗しました。

問題

問題1

IPアドレスなどの変更が多くあります。接続ロードバランスを使用する必要もあります。変更後のIPアドレスを利用する方法として最も簡単な方法を選択しなさい。

a.ホストネーミング
b.ローカルネーミング
c.簡易接続
d.ディレクトリネーミング

正解:d

解説

 前回、宿題とした問題です。

 Oracle Netの接続における名前解決方法(ネーミングメソッド)には、次のものがあります。

  • 簡易接続
    接続に必要な情報を接続識別子にすべて指定する方法です。
  • ローカルネーミング
    クライアント側に名前解決ファイル(tnsnames.ora)を配置し、接続識別子と接続記述子を対応付けておく方法です。
  • ディレクトリネーミング
    ディレクトリサーバを使用して接続識別子と接続記述子を対応付けておく方法です。
  • 外部ネーミング
    NIS(Network Information Service)やDCE(Distributed Computing Environment)、CDS(Cell Directory Services)などのサードパーティ製のネーミングサービスを使用して接続識別子と接続記述子を対応付けておく方法です。

 最も簡単なのは簡易接続ですが、接続ロードバランスは提供されません。接続ロードバランスもサポートしつつ、問題にあるようなIPアドレスの変更や、サーバの追加/削除などネットワーク環境の変更にも対応の必要がある場合、ディレクトリネーミングを使用するのが適切です(正解d)。

 そのほかの選択肢の不正解の理由は次のとおりです。

選択肢a:簡易接続以前に使用されていたネーミングメソッドです。接続識別子としてホスト名のみを使用します。クライアント側の構成は必要ありませんが、リスナー側でホスト名と同じサービス名を登録しておく必要があります。ホストネーミングではTCP/IPしかサポートされず、問題にあるようなロードバランス、さらに接続時フェイルオーバーやConnection Managerを使用することができません。

選択肢b:ローカルネーミングでは、ロードバランス、接続時フェイルオーバーやConnection Managerを使用することができます。しかしサーバのIPアドレスの変更時などは、すべてのクライアントのtnsnames.oraファイルを修正する必要があることから、最も簡単な方法を聞くこの問題では不正解としています。

選択肢c:ホストネーミング同様にクライアント側の構成は必要ありませんが、TCP/IPしかサポートされず、問題にあるようなロードバランス、さらに接続時フェイルオーバーやConnection Managerを使用することはできません。

問題2

次の文の説明として正しいものを2つ選択しなさい。

CONNECT hr/oracle@db.oracle.com:1561/sales

a.クライアント側で使用するポートは1561である
b.hrはユーザー名である
c.サービス名はsalesである
d.db.oracle.comはサービス名である

正解:b、c

解説

 ネーミングメソッドとして簡易接続を使用する場合の構文は、次のようになります。

ユーザー名/パスワード@ホスト名[:リスナーポート][/サービス名]

 よってhrはユーザー名(正解b)、サービス名はsalesとなります(正解c)。

 そのほかの選択肢の不正解の理由は次のとおりです。

選択肢a:簡易接続で指定するポート番号は、リスナーのポート番号です。クライアント側で使用されるポートは、OSにより自動割り当てされます。

選択肢d:「db.oracle.com」はサーバのホスト名です。

問題3

次の設定を確認してください。

(クリックで全体を表示します) (クリックで全体を表示します)

この設定で使用できる機能を選択しなさい。

a.接続時フェイルオーバー
b.インスタンスフェイルオーバー
c.データベースフェイルオーバー
d.ロードバランス

正解:a

解説

 接続時フェイルオーバーとクライアントロードバランシング画面では、次の設定ができるようになっています。

 
接続時フェイルオーバー
(FAILOVER=ON)
ロードバランス
(LOAD_BALANCE=ON)
接続に成功するまで
各アドレスを順番に試行
×
接続に成功するまで
各アドレスをランダムに試行
ランダムに選択した1つの
アドレスを試行
×
各アドレスを接続先に
達するまで順番に使用
Connection Managerに接続するためのルーティング
(SOURCE_ROUTE=ON)
最初のアドレスのみを使用
×
×

 「接続に成功するまで各アドレスを順番に試行」ができるのは、接続時フェイルオーバーです(正解a)。

 「データベースフェイルオーバー」や「インスタンスフェイルオーバー」という機能はありません。

宿題

 次回は、「Oracle共有サーバ」を確認します。次の宿題を解いておいてください。

問題

共有サーバの構成に関する説明として正しいものを2つ選択しなさい。

a.カーソル領域とセッション情報は共有プールまたはラージプールに割り当てられる
b.カーソル領域とセッション情報はSGAの外に割り当てられる
c.スタック空間は共有プールに割り当てられる
d.スタック空間はラージプールに割り当てられる
e.スタック空間はSGAの外に割り当てられる

IT資格試験の模擬問題をWebベースで学習できる@IT自分戦略研究所の新サービス「@IT資格攻略」では、「Silver DBA(Oracle10g)」をはじめOracle関連の資格をテーマとして取り上げています。「無料お試し版」もありますので、記事と併せてご覧ください。



Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。