2.5 ネーミング・メソッドの理解
Oracle Net Servicesは、いくつかの種類のネーミング・メソッドを提供しています。これらは、各クライアント上のローカル構成またはネットワーク上のすべてのクライアントがアクセスできる集中化された構成をサポートしています。
- ネーミング・メソッドについて
ネーミング・メソッドとは、データベース・サービスに接続するときに、クライアント・アプリケーションが接続識別子を接続記述子に変換するために使用する解決メソッドです。 - ネーミング・メソッドの選択
接続記述子に名前をマッピングする適切なネーミング・メソッドの選択は組織の規模によって決まります。 - ネーミング・メソッドを使用したクライアント・セッションの確立
ネーミング・メソッドを使用してクライアント・セッションを確立するための一般的なプロセスについて学習します。 - 接続文字列の入力
ネットワーク・コンポーネントの起動後に、ネットワーク経由の接続を確立できます。接続の確立方法は、ネーミング・メソッドと、接続に使用するツールによって異なります。
親トピック: データベースの識別とアクセス
2.5.1 ネーミング・メソッドについて
ネーミング・メソッドとは、データベース・サービスに接続するときに、クライアント・アプリケーションが接続識別子を接続記述子に変換するために使用する解決メソッドです。
概要
データベース接続の作成にサービス名を使用する際に必要な情報はリポジトリに格納することができ、1つ以上のネーミング・メソッドで表されます。ユーザーは接続文字列を指定して接続要求を開始します。
接続文字列には、ユーザー名、パスワードおよび接続識別子が含まれます。接続識別子には、接続記述子または接続記述子に解決される名前を使用できます。接続記述子には次のものが含まれます。
-
プロトコル・アドレスによるリスナーの位置情報など、サービスへのネットワーク・ルート。
-
データベース・サービス名またはOracleシステム識別子(SID)。
次のCONNECT
コマンドでは、ネットワーク・サービス名のかわりに、接続識別子として完全な接続記述子を持つ接続文字列を使用しています。1つの行として、文字列を入力する必要があります。ページの幅のために2行で表示されます。
SQL> CONNECT hr@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server1) (PORT=1521))(CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)))
最も一般的な接続識別子の1つは、サービスの単純な名前であるネットワーク・サービス名です。次のCONNECT
コマンドでは、接続文字列に、接続識別子としてネットワーク・サービス名sales
を使用しています。
SQL> CONNECT hr@sales
ネットワーク・サービス名のsales
を使用すると、sales
から接続記述子への最初のマッピングによって、接続処理が実行されます。
ネーミング・メソッドのタイプ
マップされた情報には、ネーミング・メソッドによってアクセスします。次のネーミング・メソッドを利用できます。
-
ローカル・ネーミング
-
ディレクトリ・ネーミング
-
集中化された構成プロバイダのネーミング
-
簡易接続ネーミング
ネーミング・メソッドの構成方法
-
ネーミング・メソッドを選択します。
-
名前または接続識別子に接続記述子をマップします。
-
そのネーミング・メソッドを使用するクライアントを構成します。
関連トピック
親トピック: ネーミング・メソッドの理解
2.5.2 ネーミング・メソッドの選択
接続記述子に名前をマッピングする適切なネーミング・メソッドの選択は組織の規模によって決まります。
-
データベースがごく少数の小規模な組織の場合は、簡易接続ネーミングを使用してデータベース・サーバーのホスト名でTCP/IP接続するか、ローカル・ネーミングを使用してクライアント上の
tnsnames.ora
ファイル内に名前を格納します。 -
データベースが数個の大規模な組織の場合は、ディレクトリ・ネーミングを使用して名前を集中化されたディレクトリ・サーバーに格納するか、集中化された構成プロバイダ・ネーミングを使用して名前を集中化された構成プロバイダに格納します。
-
インターネット・ネットワークの場合は、ローカル・ネーミング・メソッドでデータベースに接続するために必要なアプリケーションWebサーバーを構成します。
ここでは、各ネーミング・メソッドの長所と短所、およびネットワークで使用するための推奨事項を要約します:
ネーミング・メソッド | 説明 | メリット/デメリット | 推奨環境: |
---|---|---|---|
ローカル・ネーミング |
ネットワーク・サービス名とその接続記述子を、 |
メリット:
デメリット: すべてのネットワーク・サービス名とアドレス変更をローカル側で構成する必要があります。 |
ほとんど変更がなくサービス数の少ない単純な分散ネットワーク |
ディレクトリ・ネーミング |
接続識別子を集中化されたLDAP準拠のディレクトリ・サーバーに格納し、データベース・サービスにアクセスします。 |
メリット:
デメリット: ディレクトリ・サーバーにアクセスする必要があります。 |
頻繁に変更される大規模で複雑なネットワーク(20個を超えるクライアント・コンピュータがある) |
集中化された構成プロバイダのネーミング |
接続記述子やデータベース資格証明の参照(オプション)を、Azure App ConfigurationストアやOracle Cloud Infrastructure (OCI) Object Storageなどの集中化された構成プロバイダにJSONファイルとして格納します。 |
メリット:
デメリット:
|
頻繁に変更される大規模で複雑なネットワーク(20個を超えるクライアント・コンピュータがある) |
簡易接続ネーミング |
クライアントは、ホスト名およびオプションのポート名やサービス名から構成されるTCP/IP接続文字列を使用して、Oracle Databaseサーバーへ接続できるようになります。 |
メリット:
デメリット: 推奨環境の欄に示すように使用できる環境に制限があります。 |
次に示す条件に合致する単純なTCP/IPネットワーク
|
関連トピック
親トピック: ネーミング・メソッドの理解
2.5.3 ネーミング・メソッドを使用したクライアント・セッションの確立
ネーミング・メソッドを使用してクライアント・セッションを確立するための一般的なプロセスについて学習します。
-
クライアントは、接続識別子を指定して接続要求を開始します。
-
接続識別子は、ネーミング・メソッドによって接続記述子に解決されます。
-
クライアントは、接続記述子内に存在するアドレスに対して、接続要求を実行します。
-
リスナーは要求を受け取り、それを該当するデータベース・サーバーに送ります。
-
データベース・サーバーによって、接続が受け入れられます。
ノート:
接続記述子の他にも、ネーミング・メソッドを使用して、接続名をプロトコル・アドレスやプロトコル・アドレス・リストにマッピングできます。
親トピック: ネーミング・メソッドの理解
2.5.4 接続文字列の入力
ネットワーク・コンポーネントの起動後に、ネットワーク経由の接続を確立できます。接続の確立方法は、ネーミング・メソッドと、接続に使用するツールによって異なります。
CONNECT username@connect_identifier
デフォルトの接続識別子
ほとんどのオペレーティング・システムで、デフォルトの接続識別子を定義できます。デフォルトを使用する場合、接続文字列で接続識別子を指定する必要がなくなります。デフォルトの接続識別子を定義するには、LinuxおよびUNIXプラットフォームの場合は環境変数TWO_TASK
を、Microsoft Windowsの場合は環境変数LOCAL
またはレジストリ・エントリを使用します。
たとえば、環境変数TWO_TASK
にsales
と設定されている場合は、SQL*Plusから、CONNECT
username
@sales
ではなくCONNECT
username
を使用してデータベースに接続できます。Oracle NetはTWO_TASK
変数を確認し、接続識別子として値sales
を使用します。
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
Oracle Database接続文字列ユーティリティ
Oracle Database 23ai以降では、Oracle Database接続文字列コマンドライン・ユーティリティ(connstr
)を使用して、すべての使用可能なネットワーク・サービス名の接続文字列を表示できます。
こうした文字列は、各種の形式(簡易接続、JDBC Thinまたは接続記述子など)で表示できます。また、クライアント・アプリケーションまたはツール(SQL*Plus、PythonまたはJDBC Thinクライアントなど)で使用すると、データベースにすばやく接続できます。また、connstr
ユーティリティを使用すると、ローカル・ネーミング・メソッドで使用するサービス名およびその接続記述子をtnsnames.ora
ファイルに書き込むことができます。
たとえば、このユーティリティは、sales.us.example.com
サービス名の次の接続記述子を含むtnsnames.ora
ファイルを生成します:
sales.us.example.com= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=sales.us.example.com)) )
クライアント・アプリケーションは、データベースに接続するための接続文字列でsales.us.example.com
を次のように使用できます:
sqlplus scott@sales.us.example.com
Enter password: password
関連トピック
親トピック: ネーミング・メソッドの理解