ネットワークの構成が終了すると、接続を確立して各コンポーネントをテストし、ネットワークが正しく機能しているかどうかを確認する必要があります。Oracle Net Servicesには、リスナーおよびOracle Connection Managerを容易に起動し、テストおよび制御できる各種のツールがあります。
この章では、接続を確立してネットワーク・コンポーネントをテストする手順を説明します。この章の内容は、次のとおりです。
データベースに接続するには、ネットワーク・コンポーネントを起動し、ネット・サービス名を指定した接続文字列を入力する必要があります。たとえば次のように入力します。
CONNECT username@connect_identifier Enter password: password
この項で説明する項目は、次のとおりです。
クライアント・ワークステーションとその他のサーバーは、Oracleデータベース・サーバーにログインするときにネット・サービス名を使用してリスナーに接続します。
すべてのネットワーク・コンポーネントをインストールし、構成した後は、それを起動してネットワークを機能させる必要があります。起動に必要な作業は、次のとおりです。
タスク3: Oracle Connection Managerの起動
Oracle Netがデータベース・サーバーで接続を受け入れるように、リスナー制御ユーティリティを使用してサーバーでリスナーを起動します。
リスナーの状態を判断します。コマンドラインから、次のように入力します。
lsnrctl
LSNRCTL> STATUS [listener_name]
listener_name
は、listener.ora
ファイルで定義したリスナーの名前です。LISTENER
という名前のデフォルトのリスナーを使用している場合は、リスナーを識別する必要はありません。
STATUS
コマンドでリスナーが実行されていることが示された場合、次のようにリスナーを停止します。
LSNRCTL> SET PASSWORD password LSNRCTL> STOP [listener_name]
SET PASSWORD
が必要となるのは、listener.ora
ファイルにパスワードが設定されている場合のみです。デフォルトのパスワードは、ORACLE
です。
リスナーを起動します。次のように入力します。
LSNRCTL> START [listener_name]
リスナー制御ユーティリティが、リスナーが正常に起動されたことを示すステータス・メッセージを表示します。そのリスナーで期待されるすべてのサービスがステータス・メッセージ内のサービス・サマリーの中に記述されていることを確認します。
リスナー制御ユーティリティを終了します。次のように入力します。
LSNRCTL> EXIT
Windowsの場合、リスナーは「コントロール パネル」からも起動できます。
SQL*Plusなどのツールを使用して、データベースを起動します。
データベースに接続せずにSQL*Plusを起動します。
sqlplus /nolog
SYSDBA
としてOracleに接続します。
SQL> CONNECT username as sysdba Enter password: password
STARTUP
コマンドを入力するときに、データベース名とパラメータ・ファイルのフルパスを指定します。
SQL> STARTUP database_name pfile=file
PFILE
オプションを使用しない場合、Oracleデータベースは標準の初期化パラメータ・ファイルを使用します。このファイルは、UNIXプラットフォーム上では$ORACLE_BASE/admin/
db_name
/pfile/
sid
ディレクトリ、Windows上では、ORACLE_BASE
\admin\
db_name
\pfile\
sid
ディレクトリにあります。データベース名を指定しない場合、データベースは、初期化パラメータ・ファイルで指定されているDB_NAME
パラメータの値を使用します。
Oracle Connection Managerがインストールされ構成されている場合は、次の順序でコマンドを入力して、Oracle Connection ManagerをOracle Connection Manager制御ユーティリティ(CMCTL)で起動します。
コマンドラインから、次のように入力します。
CMCTL
CMCTL> ADMINISTER [instance_name]
instance_name
は、管理対象のOracle Connection Managerの名前です。Oracle Connection Manager構成ファイルであるcman.ora
を表示させることによって、その名前を知ることができます。そのファイルは、Oracle Connection Managerを搭載したコンピュータの次の場所にあります。
UNIX:
$ORACLE_HOME/network/admin
Windows:
ORACLE_HOME\network\admin
Oracle Connection Managerは、インスタンス名を示すステータス・メッセージを表示し、まだインスタンスが起動していないことを知らせます。
注意: 引数にインスタンス名を設定しない場合は、完全修飾ホスト名を持つOracle Connection Managerが管理されます。これはデフォルトです。ADMINISTER コマンドを発行すると、CMCTLにより次のようにインスタンス名が表示されます。
|
次を管理対象として選択し、Oracle Connection Managerを起動します。
CMCTL> STARTUP
インスタンスが起動したことがOracle Connection Managerでわかります。さらにインスタンスのステータス・レポートが提供されます。
Oracle Connection Manager制御ユーティリティを終了します。次のように入力します。
CMCTL> EXIT
Windowsの場合、Oracle Connection Managerは「コントロール パネル」からも起動できます。
「コントロール パネル」ウィンドウの「サービス」アイコンを選択します。
Oracle Connection Managerを起動するために「Oracle
HOME_NAME
CMan
」サービスを選択し、「Start」をクリックします。
「サービス」ウィンドウの「閉じる」をクリックします。
ネットワーク・コンポーネントを起動すると、「データベースへの接続」に従ってネットワーク経由の接続を確立できます。接続の確立方法は、第8章「ネーミング・メソッドの構成」で構成したネーミング・メソッドと、接続に使用するツールによって異なります。
接続文字列は基本的に次のような形式になります。
CONNECT username@connect_identifier
ほとんどのオペレーティング・システムで、デフォルトの接続識別子を定義できます。これにより、接続文字列で接続識別子を指定する必要がなくなります。デフォルトの接続識別子を定義するには、UNIXプラットフォームの場合は環境変数TWO_TASK
を、Windowsの場合は環境変数LOCAL
またはレジストリ・エントリを使用します。
たとえば、環境変数TWO_TASK
がsales
に設定されている場合は、SQL*Plusから、CONNECT
username
@sales
ではなくCONNECT
username
を使用してデータベースに接続できます。Oracle NetはTWO_TASK
が設定されているかどうかを確認し、接続識別子として値sales
を使用します。設定されている場合、Oracle Netはデータベースに接続します。
関連項目: TWO_TASK およびLOCAL の設定方法については、Oracleオペレーティング・システム固有のマニュアルを参照してください。 |
接続文字列の書式の詳細は、次の項目を参照してください。
接続文字列で使用される接続識別子には、引用符(')または二重引用符(")で囲む場合を除いて、空白を含めることはできません。次の例では、空白を含む接続識別子および接続記述子が引用符で囲まれています。
CONNECT scott@'(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server) (PORT=1521))(CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)))' Enter password: password CONNECT scott'cn=sales, cn=OracleContext, dc=us, dc=example, dc=com' Enter password: password
接続識別子の中で二重引用符(")が使用されている場合は、引用符(')で囲みます。たとえば、次のように指定します。
CONNECT scott@'sales@"good"example.com'
Enter password: password
接続識別子の中で引用符(')が使用されている場合は、二重引用符(")で囲みます。たとえば、次のように指定します。
CONNECT scott@"cn=sales, cn=OracleContext, ou=Mary's Dept, o=example"
Enter password: password
注意: JDBC OCIドライバは、絶対ネーミングをサポートしています。JDBCシン・ドライバは、完全なDNが使用される場合にのみ、絶対ネーミングをサポートします。詳細は、『Oracle Database JDBC開発者ガイドおよびリファレンス』を参照してください。 |
この項では、次のネームスペースの絶対名の構成方法を説明します。
X.500ネームスペースの絶対名
X.500ネームスペースの場合、クライアントに定義されたデフォルトのディレクトリ・エントリは、必ず次のいずれかの形式にする必要があります。
[ou],o
[ou],o,c
[ou]
は、オプションの組織単位名を表しています。
クライアントが接続識別子として使用する絶対名は、必ず次のいずれかの形式である必要があります。
cn[.ou].o
cn[.ou].o.c
[cn]
は、Oracle Netエントリを表しています。
たとえば、cn=OracleContext,ou=acctg,o=example,c=us
というデフォルトのOracleコンテキストで構成されているクライアントについて考えます。
ディレクトリには、cn=sales,cn=OracleContext,ou=mktg,o=example,c=jp
というDNを持つデータベース・オブジェクトsales
が格納されています。 この例では、クライアントにsales.mktg.example.jp
(cn.ou.o.c
)の接続識別子が必要です。図15-1にこの例を示します。
ドメイン・コンポーネント・ネームスペースの絶対名
ドメイン・コンポーネント・ネームスペースの場合、クライアントに定義されたデフォルトのディレクトリ・エントリは、必ず次のいずれかの形式にする必要があります。
dc[,dc][...]
ou,dc[,dc][...]
[dc]
は、オプションのドメイン・コンポーネントを表しており、[...]
は、追加のドメイン・コンポーネントを表します。
クライアントが接続識別子として使用する必要がある絶対名は、必ず次のいずれかの形式である必要があります。
cn.dc[.dc][...]
cn[.ou]@dc[.dc][...]
[cn]
は、Oracle Netエントリを表しています。
cn=OracleContext,dc=us,dc=example,dc=com
というデフォルトのOracleコンテキストで構成したクライアントについて考えます。
ディレクトリ・サーバーには、cn=sales,cn=OracleContext,dc=jp,dc=example,dc=com
というDNを持つデータベース・オブジェクトsales
のエントリが格納されています。 この例では、クライアントにsales.jp.example.com
(cn.dc.dc.dc
)の接続識別子が必要です。図15-2にこの例を示します。
例1と同じデフォルトのディレクトリ・エントリについて考えます。ディレクトリ・サーバーには、cn=sales,cn=OracleContext,ou=mktg,dc=jp,dc=example,dc=com
というDNを持つsales
というデータベース・オブジェクトが格納されています。ou=mktg
に注意してください。 ドメイン・コンポーネントは必ず組織単位から分離されている必要があるため、クライアントにはsales.mktg@jp.example.com
(cn.ou@dc.dc.dc
)の接続識別子が必要です。図15-2にこの例を示します。
Oracleサーバーへの接続を開始する方法は多数あります。一般的に使用される方法を次の項目で説明します。
具体的な使用方法は、それぞれの方法によって多少の違いがあります。ここでは、前述した一般的な方法について簡単に説明します。特定ツールで使用される方法については、そのツールのユーザーズ・ガイドを参照してください。
コマンドラインからアプリケーションをデータベース・サーバーに接続させるための一般的な書式を次に示します。
tool username@connect_identifier Enter password: password
パスワードの入力を求めるメッセージが表示されます。このパスワードは暗号化されます。
たとえば、次のように指定します。
SQLPLUS system@sales
Enter password: password
ほとんどのOracleのツール製品は、オペレーティング・システムのコマンドラインを使用して接続できますが、他の方法でも接続できます。
一部のツールには、ログオンの代替形式としてログオン画面が用意されています。ユーザーがデータベース・サーバーにログオンするには、ツールのログオン画面のユーザー名フィールドにユーザー名と接続識別子(username
@
connect_identifier
)の両方を指定し、パスワード・フィールドに通常どおりにパスワードを入力します。
3GLで作成されたアプリケーションでは、プログラムは次の構文でサーバーへの接続を確立する必要があります。
exec sql connect :username identified by :password
この接続要求における:
username
および:
password
は3GL変数です。これらの変数は、静的あるいはユーザーからの入力によってプログラム内部に設定されます。データベース・サーバーに接続するとき、:
username
変数の値は次のような書式になります。
username@net_service_name
:
password
変数には、接続先データベース・アカウントのパスワードが入ります。
一部のOracleのツール製品には、一度起動したツールを終了せずに、異なるユーザー名を指定してデータベースに接続できるコマンドがあります。SQL*Plusでは、次の構文でCONNECT
を使用できます。
SQL> CONNECT username@net_service_name Enter password: password
たとえば、次のように指定します。
SQL> CONNECT scott@serverx
Enter password: password
これは、オペレーティング・システムのプロンプトではなくツールのプロンプトに応答して入力するという点以外は、オペレーティング・システムのコマンドラインを使用する方法と同じです。
他のOracleのツール製品では、この説明とは異なる独自の機能やインタフェースに固有の方法が使用されます。たとえば、Oracle CDE Toolsでは、ログオン・ボタンとユーザー名およびパスワード、リモート・データベースIDフィールドがあるポップアップ・ウィンドウが使用されます。
ネットワークをテストする望ましい順序は、次のとおりです。
リスナーを個別に起動し、テストします。
各Oracle Connection Manager(ネットワーク・レイアウトに含まれている場合)を起動し、テストします。
サーバーでループバック・テストを行います。
クライアントで接続できるかどうかテストします。
この項で説明する項目は、次のとおりです。
リスナーをテストするには、クライアントから接続を開始して、そのリスナーによって制御される任意の有効なデータベースまで、「データベース・サーバーでの構成のテスト」で説明する手順で接続を行います。
Oracle Connection Managerをテストするには、クライアントから接続を開始して、Oracle Connection Managerに登録した任意の有効なデータベースまで接続を行います。
ネットワークを構成したら、データベース・サーバーでループバック・テストを実行して、構成をテストします。
ループバック・テストでは、Oracle Netを使用してデータベース・サーバーからInterprocess Communication(IPC)を利用せずにサーバー自体に戻ります。ループバックが正常に終了すると、Oracle Netがデータベース・サーバー側で機能していることが確認できます。
ループバック・テストを行うには、Oracle Enterprise ManagerまたはOracle Net Configuration Assistantを使用します。
Oracle Net Manager
Oracle Net Managerを起動します。
ナビゲータで、「ディレクトリ」または「ローカル」→「サービス・ネーミング」を展開します。
ネット・サービス名またはデータベース・サービスを選択します。
「ツール」→「ネット・サービスのテスト」を選択します。
このテストでは、データベースとリスナーが実行されている必要があります。データベースやリスナーが実行されていない場合は、「Oracle Net Servicesのコンポーネントの起動」を参照してコンポーネントを起動してください。
テスト中、ステータスとテスト結果を示す「接続テスト」ダイアログ・ボックスが表示されます。テストが成功すると、次のメッセージが表示されます。
「接続テストに成功しました。」
テストが成功した場合は、手順5に進んでください。
テストが正常終了しなかった場合は、次の処置を行ってください。
データベースとリスナーが実行されていることを確認し、「テスト」をクリックします。
「ログインの変更」をクリックして、接続に使用するユーザー名とパスワードを変更し、「テスト」をクリックします。
「閉じる」をクリックして「接続テスト」ダイアログ・ボックスを閉じます。
ネットワーク内でいくつかの異なるクライアントをテストするには、「接続文字列の入力」にある手順に従って、それらの各クライアントからデータベース・サーバーへの接続を開始します。
また、Oracle Netにはネットワーク接続を容易に評価するために、次のツールがあります。
TNSPINGユーティリティでは、Oracle Netネットワーク上のサービス(Oracleデータベース、その他のOracleサービスなど)に正常に到達できるかどうかを判断します。
TNSPINGユーティリティを使用してクライアントからサーバーに(または、あるサーバーから別のサーバーに)正常に接続できた場合は、Oracle Netサービスに到達するために必要な往復時間(ミリ秒単位)の概算が表示されます。
接続に失敗した場合は、発生したエラーを記述するメッセージが表示されます。これによって、データベース接続に対するオーバーヘッドなしで発生中のネットワーク・エラーを参照できます。
次のような手順で、TNSPINGユーティリティを呼び出します。
tnsping net_service_name count
注意: プラットフォームによってインタフェースが異なる場合がありますが、プログラムは同じ引数を受け入れられます。TNSPINGを呼び出すと、正しいインタフェース要件が表示されます。 |
net_service_name
: NISやDCEのCDSなど、tnsnames.ora
ファイルまたは使用中のネーム・サービスに存在する名前にする必要があります。
count
(オプション): プログラムがサーバーへの到達を試行する回数を指定します。
指定されたネット・サービス名がデータベース名の場合、TNSPINGは、該当するリスナーへの接触を試行します。データベース自体が実行されているかどうかは、事実上判別されません。データベースへの接続を行うには、SQL*Plusを使用します。
この後、TNSPINGの例をいくつか示します。
sales
というネット・サービス名を使用してデータベースに接続するには、次のように入力します。
TNSPING sales
これによって、次のメッセージが出力されます。
TNS Ping Utility for Solaris: Version 10.1.0.2.0 on 15-NOV-2003 14:46:28 Copyright (c) 1997 Oracle Corporation. All rights reserved. Used parameter files: Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = sales-server)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = sales.us.example.com))) OK (10 msec)
sales
データベースに接続できるかどうかを判別し、TNSPINGを8回試行するには、次の構文を使用します。
tnsping sales 8
このコマンドによって、次のメッセージが出力されます。
TNS Ping Utility for Solaris: Version 10.1.0.2.0 on 15-NOV-2003 14:49:26 Copyright (c) 1997 Oracle Corporation. All rights reserved. Used parameter files: Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = sales-server)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = sales.us.example.com))) OK (10 msec) OK (0 msec) OK (10 msec) OK (0 msec) OK (10 msec) OK (10 msec) OK (10 msec) OK (0 msec)
無効なネット・サービス名への接続を試行するTNSPINGの例を次に示します。
tnsping badname
この試行では、次のメッセージが出力されます。
TNS Ping Utility for Solaris: Version 10.1.0.2.0 on 15-NOV-2003 14:51:12 Copyright (c) 1997 Oracle Corporation. All rights reserved. Used parameter files: TNS-03505: Failed to resolve name
次に、名前は有効であるが、アドレスに変換するためのリスナーが配置されていない(たとえば、リスナーが起動されていない)場合のTNSPINGの使用例を示します。
TNS Ping Utility for Solaris: Version 10.1.0.2.0 on 15-NOV-2003 14:46:28 Copyright (c) 1997 Oracle Corporation. All rights reserved. Used parameter files: Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = sales-server)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = sales.us.example.com))) TNS-12541: TNS:no listener
管理者は、Trace Routeユーティリティ(TRCROUTE)を使用して、クライアントからサーバーへのパスまたはルートを検出できます。TRCROUTEは、問題に遭遇すると、1つのエラーではなくエラー・スタックをクライアントに戻します。これらの追加エラー・メッセージによって、トラブルシューティングが簡単になります。
TRCROUTEは、特殊な種類の接続パケットとして送信される点でTNSPINGとは異なります。接続先に向かって移動するとき、TRCROUTE接続パケットは、経由するすべてのノードのTNSアドレスを収集します。エラーが発生した場合、TRCROUTEは、エラーの発生場所を示すエラー情報を収集します。TRCROUTEは、収集した情報をクライアント画面に表示します。 TRCROUTEの出力は、ファイルにリダイレクトして印刷することもできます。
TRCROUTEは、最小限のリソースを使用します。これは、特殊な接続パケットの接続データから情報を収集します。標準的な接続パケットには作用しません。
TRCROUTEは、サーバーに作用しません。TRCROUTE接続パケットの受信と処理はリスナーが行います。これは、拒絶パケットの中に情報を入れることでクライアントに情報を戻します。サーバーは、新しいプロセスを起動したり、ダミー接続を処理する必要はありません。
TRCROUTEを呼び出すには、コマンドラインから次のように入力します。
trcroute net_service_name
次に、トレース・ルートの出力例を2つ示します。
次の例は、Trace Routeパケットがクライアントからリスナーに正常に送信されたことを示します。
trcroute sales Trace Route Utility for Solaris: Version 10.1.0.2.0 on 15-NOV-2003 14:35:05 Copyright (c) 1999 Oracle Corporation. All rights reserved. Route of TrcRoute: ------------------ Node: Client Time and address of entry into node: ------------------------------------------------------------- 25-JAN-2002 14:35:05 ADDRESS= PROTOCOL=TCP HOST=sales-server PORT=1521 Node: Server Time and address of entry into node: ------------------------------------------------------------- 25-JAN-2002 14:35:06
次の例は、リスナーが起動していないため、Trace Routeパケットがそのリスナーへの到達に失敗したことを示します。
trcroute sales Trace Route Utility for Solaris: Version 10.1.0.2.0 on 15-NOV-2003 14:43:05 Copyright (c) 1999 Oracle Corporation. All rights reserved. Route of TrcRoute: ------------------ Node: Client Time and address of entry into node: ------------------------------------------------------------- 25-FEB-2002 14:43:05 ADDRESS= PROTOCOL=TCP HOST=sales-server PORT=1521 TNS-12543: TNS:unable to connect to destination TNS-12541: TNS:no listener TNS-12560: TNS:protocol adapter error TNS-03601: Failed in route information collection
クライアント・コンピュータの接続性を検証するには、Oracle Net Configuration Assistantを使用します。
Oracle Net Managerを起動します。
ナビゲータで、「ディレクトリ」または「ローカル」→「サービス・ネーミング」を展開します。
ネット・サービス名またはデータベース・サービスを選択します。
「ツール」→「ネット・サービスのテスト」を選択します。
このテストでは、データベースとリスナーが実行されている必要があります。データベースやリスナーが実行されていない場合は、「Oracle Net Servicesのコンポーネントの起動」を参照してコンポーネントを起動してください。
テスト中、ステータスとテスト結果を示す「接続テスト」ダイアログ・ボックスが表示されます。テストが成功すると、次のメッセージが表示されます。
「接続テストに成功しました。」
テストが成功した場合は、手順5に進んでください。
テストが正常終了しなかった場合は、次の処置を行ってください。
データベースとリスナーが実行されていることを確認し、「テスト」をクリックします。
「ログインの変更」をクリックして、接続に使用するユーザー名とパスワードを変更し、「テスト」をクリックします。
「閉じる」をクリックして「接続テスト」ダイアログ・ボックスを閉じます。