この章では、一般的で単純な構成のTCP/IPネットワークによるクライアント・アプリケーションとデータベース接続について、初心者でも設定およびテストできるように説明します。
この章の内容は、次のとおりです。
このクイック・スタート・ガイドのタスクは、クライアント・コンピュータとデータベース・サーバーとのTCP/IP接続について示します。データベース・サーバーとクライアント・コンピュータは次の条件を満たす必要があります。
データベース・サーバー・コンピュータ
クライアントと同じネットワークで実行中であること。
Oracleデータベースがインストールされていること。
TCP/IPプロトコル・サポートがインストールされていること。
リスナーが構成されていること。
クライアント・コンピュータ
データベース・サーバーと同じネットワークで実行中であること。
Oracleクライアントがインストールされていること。
TCP/IPプロトコル・サポートがインストールされていること。
Oracle Netをクライアント・コンピュータとデータベース・サーバーとの接続に使用する前に、クライアント・コンピュータがデータベース・サーバーのコンピュータと正常に通信できるかどうかを確認します。ネットワークの接続性を評価しておくと、ネットワークに起因するエラーを排除できます。
ネットワークの接続性を確認する手順は次のとおりです。
データベース・サーバーのコンピュータが、ループバック・テストによって自分自身と通信できることを確認します。
ループバック・テストは、データベース・サーバーからそのデータベース・サーバーに戻る接続です。多数のネットワーク・プロトコルが、ネットワーク接続をテストする方法を用意しています。ユーティリティPINGは、TCP/IPネットワークに使用できます。
TCP/IPネットワークでは、各コンピュータは一意のIPアドレスを持ちます。ドメイン・ネーム・システム(DNS)などの名前解決サービスは、そのホスト名を持つコンピュータのIPアドレスをマップするために使用します。名前解決サービスを使用しない場合、マッピングは通常hosts
と呼ばれるファイルに格納されるため、集約化して保守されます。このファイルは、UNIXでは/etc
ディレクトリに、Windowsでは\winnt
ディレクトリにあります。たとえば、sales-server
という名前のデータベース・サーバーのコンピュータのエントリは、次のようになります。
#IP address of server host name alias 192.0.2.203 sales-server sales.us.example.com
PINGを使用するには、コマンドラインから次のように入力します。
ping database_server_host
database_server_host
は、データベース・サーバーのコンピュータのホスト名です。たとえば、次のように指定します。
ping sales-server
ループバックに失敗した場合は、そのデータベース・サーバーのIPアドレスでもう一度試してください。たとえば、次のように指定します。
ping 192.0.2.203
クライアント・コンピュータがデータベース・サーバーのコンピュータと正常に通信できることを確認します。
この方法は、ネットワーク・プロトコルによって様々です。TCP/IPでは、PING、FTP、TELNETユーティリティを使用できます。クライアント・コンピュータがサーバーに接続できない場合、ネットワークのケーブル接続やネットワーク・インタフェース・カードが正しく接続されているかを確認します。これらの問題を解消するには、ネットワーク管理者に連絡してください。
Oracle Net ListenerとOracle Databaseサーバーは、データベース・サーバーが接続を受け取る順番で実行している必要があります。
リスナー制御ユーティリティを使用してリスナーを起動します。コマンドラインから、次のように入力します。
lsnrctl LSNRCTL> START [listener_name]
listener_name
は、listener.ora
ファイルで定義したリスナーの名前です。LISTENER
という名前のデフォルトを使用している場合は、リスナーを識別する必要はありません。
リスナーが正常に起動したことを示すステータス・メッセージが表示されます。
データベースを起動します。
データベースに接続せずにSQL*Plusを起動します。
sqlplus /nolog
SYSDBAとしてデータベースに接続します。
SQL> CONNECT username AS SYSDBA
たとえば、SYSTEM
は、SYSDBAユーザーです。パスワードの入力を求めるメッセージが表示されます。
次のように、データベース名とパラメータ・ファイルのフルパスを指定して、STARTUP
コマンドを入力します。
SQL> STARTUP database_name pfile=file
PFILE
オプションを使用しない場合、Oracleデータベースは標準の初期化パラメータ・ファイルを使用します。このファイルは、UNIXプラットフォーム上では$ORACLE_HOME/dbs
ディレクトリ、Windows上では、%ORACLE_HOME%\database
ディレクトリにあります。データベース名を指定しない場合、データベースは、初期化パラメータ・ファイルで指定されているDB_NAME
パラメータの値を使用します。
リスナーへのデータベース・サービス登録が、完了していることを確認します。リスナー制御ユーティリティから、次のように入力します。
LSNRCTL> SERVICES [listener_name]
SERVICES
コマンドは、データベースがサポートするサービスと、1つ以上の使用可能なサービス・ハンドラの一覧を示します。
ネットワークの接続が確認されると、簡易接続ネーミングを使用して、データベースに接続できます。
注意: Oracle Databaseでは、Oracle Database 10gからOracle Namesの使用をサポートしていません。 Oracle Database 11gクライアントおよびデータベースでは、LDAPプロキシを含めて、Oracle Namesで名前を解決することはできません。Oracle8iおよびOracle9iのクライアントでは、引き続きOracle Namesを使用してOracle Database 11gデータベースの名前を解決できますが、Oracle Database 11gの新機能を活用するために、LDAPに移行することをお薦めします。 |
簡易接続ネーミング・メソッドを使用すると、TCP/IP環境でtnsnames.ora
ファイル内をサービス名で検索する必要がなくなります。このネーミング・メソッドを利用することで、データベースへのTCP/IP接続を簡単に行えるようになります。これにより、クライアントは、データベースのホスト名に加え、次に示すようにオプションのポートやサービス名を使用してデータベース・サーバーに接続できるため、ホスト・ネーミング・メソッドの機能を拡張できます。
CONNECT username@host[:port][/service_name][:server][/instance_name]
注意: Oracle Call Interfaceのマニュアルでは、 server はconnect_type と呼ばれています。 |
Oracle Databaseサーバーのインストールを「標準」モードで実行した場合、oracle
インスタンスで使用されるデフォルトのサービス名はORCL
であり、次の簡易接続構文を使用してそのインスタンスに接続できます。
CONNECT username@host/ORCL Enter password: password
Oracle Net Configuration Assistantを使用した代替接続
簡易接続ネーミング・メソッドを使用しない場合は、Oracle Net Configuration Assistantを使用して、データベース・サービスのネット・サービス名、つまり単純な名前を作成できます。ネット・サービス名は、接続記述子に、つまり、データベースのネットワーク・アドレスとデータベース・サービスの名前に解決されます。クライアントはネット・サービス名を使用してデータベースに接続します。
次の例に示すネット・サービス名は、sales
と呼ばれ、sales.us.example.com
と呼ばれるデータベースの接続記述子にマップされます。 クライアントは、sales.us.example.com
への接続にマップされているsales
を使用できます。
sales= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=sales.us.example.com)))
ネット・サービス名でクライアントを構成する手順は次のとおりです。
Oracle Net Configuration Assistantを起動します。
「ようこそ」ページが表示されます。
「ローカル・ネット・サービス名構成」を選択します。
「次へ」をクリックします。
「ネット・サービス名の構成」ページが表示されます。
「追加」をクリックしてから「次へ」をクリックします。
「ネット・サービス名の構成」ページの「データベース・バージョン」が表示されます。
宛先サービスがOracle9iまたはOracle8iのデータベースの場合は、Oracle8i以上のデータベースまたはサービスを選択します。宛先サービスがOracle8リリース8.0データベースの場合は、Oracle8リリース8.0のデータベースまたはサービスを選択します。
「次へ」をクリックします。
「ネット・サービス名の構成」ページの「サービス名」が表示されます。
データベースを識別する名前を入力します。
サービス名は、データベースの作成時に定義されます。サービス名が不明な場合は、データベースを作成したデータベース管理者に問い合せてください。
「次へ」をクリックします。
「ネット・サービス名の構成-プロトコルの選択」ページが表示されます。
リスナーがリスニングするように構成されているプロトコルを選択します。このプロトコルも、クライアント上にインストールする必要があります。デフォルトでは、リスナーはTCP/IPでリスニングを実行するように構成されています。
「次へ」をクリックします。
選択したプロトコルに適切なページが表示されます。
表示されたフィールドで選択したプロトコルに対して適切なプロトコル・パラメータを入力し、「次へ」をクリックします。
「ネット・サービス名の構成」ページの「テスト」が表示されます。
「はい。テストを実行します。」をクリックします。
テスト中、Oracle Net Configuration Assistantは、リモート・データベース・サービスに接続し、接続を確立してから終了します。
テストが成功すると、次のメッセージが表示されます。
Connecting...Test successful.
テストが失敗した場合、原因として考えられることは次のとおりです。
デフォルトのユーザー名(scott
)とパスワード(tiger
)が有効ではない
プロトコル・アドレスの情報がリスナーの情報と一致していない
リスナーが動作していない
接続先データベース・サービスが停止している
問題の診断に基づいて、次のいずれかのタスクを実行します。
「ログインの変更」をクリックして、接続に使用するユーザー名とパスワードを変更します。
「前へ」をクリックして、プロトコル・アドレスの情報を検討します。
「タスク2: Oracle Net ListenerとOracle Databaseサーバーの起動」で説明されているように、サーバー上でリスナーまたはOracle Databaseを起動します。
「次へ」をクリックします。
「ネット・サービス名の構成」ページの「ネット・サービス名」が表示されます。
デフォルトのネット・サービス名を受け入れるか、別のネット・サービス名を「ネット・サービス名」フィールドに入力します。入力する名前は、クライアントを一意に識別できる必要があります。
「次へ」をクリックします。
「ネット・サービス名の構成-別のネット・サービス名」ページが表示されます。
「いいえ」をクリックしてから「次へ」をクリックします。
「ネット・サービス名の構成が終了しました」ページが表示されます。
クライアント・コンピュータから、次のようにデータベース・サーバーに接続します。
SQL*Plusを起動します。
sqlplus
次のようにデータベースに接続します。
CONNECT username@net_service_name Enter password: password
ここで、username
とpassword
は、データベース・ユーザーとパスワードです。また、net_service_name
は「タスク3: データベースに接続するためのクライアントの構成」で作成したネット・サービス名です。