連載
» 2005年08月19日 00時00分 UPDATE

ORACLE MASTER Bronze DBA講座(4):Oracleのネットワークを構成する

Oracleデータベースエンジニアとしての実力を証明するORACLE MASTER資格。その入り口であるBronze資格の取得は難しくない。本連載と、同時掲載中の連載「Bronze SQL基礎I 講座」で合格を目指そう!(参考記事:「Oracle 10g対応のORACLE MASTERとは?」)

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

 前回「Oracleデータベースの管理ツールを使う」で、ツールを利用したデータベースの管理方法を学びました。今回は、Oracleのネットワーク環境の構成を紹介します。

ネットワーク環境の構成

理解しておきたいこと

1.確認しておきたい内容

  • Oracleのネットワーク構成
  • ネットサービス管理ページを利用したネットワーク構成
  • リスナー制御ユーティリティの使用
  • Oracleデータベースにアクセスするクライアント構成

2.Oracleのネットワーク構成

 Oracleデータベースでは、ネットワーク接続にOracle Netを使用します。これによってアプリケーションはネットワークを意識することなく動作できます。Oracle Netはクライアントとサーバの双方に配置、設定され、標準プロトコル上で動作します。

図1 Oracle Net 図1 Oracle Net

 アプリケーションサーバなどの中間層を使用する場合は、中間層サーバにOracle Netをインストールします(中間層がOracleデータベースから見たクライアント)。クライアントPCからはWebブラウザでアクセスします。

3.リスナーの構成

 Oracle Netのサーバ側プロセスはリスナーと呼ばれ、デフォルトではサーバの$ORACLE_HOME/network/admin/listener.oraファイルで構成します。構成には、次のツールを使用することができます。

ツール 説明
Oracle Enterprise Manager(OEM)の「ネットサービス管理」ページ Database Controlページから構成を行う。
Database Controlのホームページにて「一般」リージョンの「リスナー」→「関連リンク」リージョンの「ネットサービス管理」
Oracle Net Manager GUIのJavaアプリケーションにて構成を行う。
UNIX環境の場合、「$ netmgr」で起動
Oracle Net Configuration Assistant GUIのJavaアプリケーションにて構成を行う。
UNIX環境の場合、「$ netca」で起動

 Oracleソフトウェアのインストール時に、Oracle Universal Installer(OUI)でデータベース作成も行っている場合、リスナーはそのデータベースに接続できるように構成されています。デフォルトで構成されているリスナーには次の特徴があります。

  • リスナー名:LISTENER
  • ポート:1521

 OEMの「ネットサービス管理」ページを使用する場合は、リスナー構成だけでなく、リスナー起動を行うことができます。

 コマンドラインからリスナーを起動するには、リスナー制御ユーティリティ(lsnrctl)を使用します。

$ lsnrctl start [リスナー名]

 デフォルトのリスナー名は「LISTENER」です。startだけでなく、stop(停止)やstatus(ステータス確認)などもリスナー制御ユーティリティで実行できます。

問題

問題1

リスナー制御ユーティリティを使用してできることを2つ選択しなさい。

a.リスナープロセスが使用するアドレスの構成
b.リスナーの起動
c.ローカルネーミングの構成
d.クライアントの名前解決方法の構成
e.リスナーの停止

正解:b、e

解説

 リスナープロセスの起動/停止はDatabase Controlからもできますが、コマンドラインとしては、リスナー制御ユーティリティ(lsnrctl)が用意されています。

正解b:lsnrctl start

正解e:lsnrctl stop

 デフォルトのリスナー名(LISTENER)でない場合は、リスナー名も指定してください。

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

選択肢a:listener.oraファイルで行います。

選択肢c:tnsnames.oraファイルで行います。

選択肢d:sqlnet.oraファイルで行います。

4.クライアントの構成

 クライアントからOracleデータベースに接続するには、クライアント側のOracle Netを構成し、リスナーと接続できるようにします。Oracle Netの構成では、ネーミングメソッドによってOracleデータベースの識別方法を設定します。

ネーミングメソッド 説明
ローカルネーミング クライアント側のローカル構成ファイル(tnsnames.ora)を使用する
簡易接続ネーミング TCP/IP接続にて、ホスト名、リスナーポート、データベースサービス名を使用する
ディレクトリネーミング LDAP対応のディレクトリサーバで管理された情報を使用する
外部ネーミング Network Information Service(NIS)などで提供される外部ネーミングサービスで管理された情報を使用する

 どのネーミングメソッドが有効になっているかは、$ORACLE_HOME/network/sqlnet.oraファイルで確認できます。

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

 上記ではローカルネーミング(TNSNAMES)と簡易接続(EZCONNECT)が使用可能になっています。

 ネーミングメソッドによって管理方法は変わりますが、クライアントからサーバへの接続では次のように情報の取得が行われます。

図2 クライアントからOracleデータベースへの接続 図2 クライアントからOracleデータベースへの接続

 クライアントからは、ユーザー名とパスワード、接続識別名で構成される接続文字列を送信します。接続識別名はネットサービス名とも呼ばれ、ネーミングメソッドに従って、実際の接続に必要な情報を持つ接続記述子を取得します。

 クライアントはその接続記述子に従い、リスナープロセスに接続要求を送ります。

 接続記述子で使用している「SERVICE_NAME」には、データベース側のservice_names初期化パラメータで指定された値を使用します。

 ローカルネーミングメソッドを使用している場合は、クライアント側の$ORACLE_HOME/network/admin/tnsnames.oraファイルにて、接続識別名(ネットサービス名)と接続記述子の対応付けを行います。

 簡易接続ネーミングメソッドを使用している場合は、ファイルの構成は必要ありません。次の構文にて接続することができます。

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

 リスナーポートは、デフォルトの1521を使用している場合は省略できます。サービス名には、データベースのservice_names初期化パラメータで指定された値を使用します。

問題

問題1

クライアントからデータベースにOracle Netを使用して接続する場合の流れとして正しいものを選択しなさい。

a.リスナープロセスが、ネットサービス名から接続記述子を取得する
b.クライアントに設定したネーミングメソッドに従い、ネットサービス名から接続記述子を取得する
c.リスナープロセスが、識別可能なデータベースへの接続記述子を作成する
d.リスナープロセスが、クライアントに接続するための接続記述子を作成する

正解:b

解説

 クライアントからOracleリスナーに接続するには、接続記述子を使用する必要があります。この接続記述子をどこから取得するかは、クライアント側のネーミングメソッドに依存します(正解b)。

 不正解となる選択肢のように、Oracleリスナーが接続記述子を取得したり、作成したりすることはありません。Oracleリスナーが認識しているのは、自分自身のアドレスと接続先となるデータベースです。

問題2

クライアントからデータベースにOracle Netを使用して接続する場合の説明として正しいものを2つ選択しなさい。

a.簡易接続を使用するとローカルなファイルを使用して接続する
b.ローカルネーミングは、tnsnames.oraファイルを使用して接続する
c.ディレクトリネーミングは、LDAPサーバで管理されている情報を使用して接続する
d.ディレクトリネーミングは、tnsnames.oraファイルを使用して接続する
e.ローカルネーミングは、外部のOracle以外のサービスを使用して接続する

正解:b、c

解説

 前回、宿題とした問題です。正解となるものは選択肢どおりですので、不正解となるものを解説しましょう。

選択肢a:簡易接続を使用する場合は、ローカルファイルの構成は不要です。Oracleサーバのホスト名、Oracleリスナーのポート番号、Oracleサーバのサービス名が分かれば接続できます。

選択肢d:ディレクトリネーミングは、正解cのとおり、LDAPサーバ(ディレクトリサーバ)を使用して管理されています。tnsnames.oraファイルを使用するのは、正解bのとおり、ローカルネーミングです。

選択肢e:ローカルネーミングは、正解bのとおり、tnsnames.oraファイルを使用します。外部のOracle以外のサービスを使用して接続するのは、外部ネーミングの特徴です。

問題3

次の資料を確認してください。

r5zu3.gif

データベースサーバではデフォルトポートによるリスナーが起動しています。この設定後、次のようにデータベースに接続するとどうなりますか。

connect username/password@orcl

a.tnsnames.oraファイルから接続記述子を取得して接続する
b.リスナーのポートが不明なため接続できない
c.データベース名が不明なため接続できない
d.ホスト名が不明なため接続できない

正解:a

解説

 資料は、Database Controlの「ホーム」タブ→「一般」リージョンの「リスナー」リンク→「関連リンク」リージョンの「ネットサービス管理」→「管理」リストの「ローカルネーミング」のようにアクセスしたページです。

 このページではローカルネーミングを構成しているので、問題文中の接続文字列では、tnsnames.oraファイルから接続記述子を取得します(正解a)。

 不正解となる選択肢の要素は、tnsnames.oraファイル内の接続記述子で指定されます。これらがすべてファイル内で正しく記述されていれば接続できます。

問題4

次の接続文字列の説明として正しいものを3つ選択しなさい。

connect hr/hr@hr_db/hr.us.oracle.com

a.ホスト名はhr.us.oracle.comである
b.データベース名はhr_dbである
c.簡易接続ネーミングメソッドを使用している
d.デフォルトのリスナーポートを使用している
e.TCP/IPプロトコルがクライアントとサーバで有効である

正解:c、d、e

解説

 簡易接続ネーミングメソッドの例です。簡易接続ネーミングメソッドでは、「ホスト名:リスナーポート/データベースサービス名」で接続できます(正解c)。ただしTCP/IPプロトコルで接続できること(正解e)、OracleサーバとクライアントでOracle Netが有効であることが必要です。リスナーポートがデフォルト(1521)であれば、ポート番号は省略できます(正解d)。

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

選択肢a:ホスト名はhr_dbです。hr.us.oracle.comはデータベース名(データベースサービス名)です。

選択肢b:データベース名(データベースサービス名)はhr.us.oracle.comです。hr_dbはホスト名です。

まとめ

 次の内容をチェックしておきましょう。

  • リスナー制御ユーティリティ(lsnrctl)の使用方法
  • Oracle Netによるネーミングメソッドの特徴(ローカルネーミング、簡易接続ネーミングなど)
  • ローカルネーミングはtnsnames.oraファイルで構成する
  • 簡易接続ネーミングは「ホスト名:リスナーポート/データベースサービス名」で接続する

宿題

 次回は、「Oracleインスタンスの管理」を確認します。次の宿題を解いておいてください。

問題

一般ユーザーに接続させず、管理したいときに使用するデータベースの状態を選択しなさい。

a.MOUNT
b.SHUTDOWN
c.OPEN
d.STARTUP

IT資格試験の模擬問題をWebベースで学習できる@IT自分戦略研究所の新サービス「@IT資格攻略」では、Oracle関連の資格をテーマとして取り上げています。Bronze SQL 基礎 I、Bronze DBA 10gも近日中に追加予定です。「無料お試し版」もありますので、記事と併せてご覧ください。



Copyright© 2017 ITmedia, Inc. All Rights Reserved.

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

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

メールマガジン登録

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