6.6 connstrユーティリティを使用した接続文字列の表示

Oracle Database接続文字列コマンドライン・ユーティリティ(connstr)を実行すると、すべての使用可能なネットワーク・サービス名のOracle Database接続文字列を表示できます。

これらの文字列をクライアント・アプリケーションまたはツール(SQL*Plus、Python、JDBC Thinなど)で使用してOracle Databaseにすばやく接続することも、ローカル・ネーミング・メソッドで使用するためにこれらのサービス名エントリをtnsnames.oraファイルに書き込むこともできます。
connstrスクリプトは、デフォルトのインストールに含まれています。このユーティリティは、使用可能なシステム構成に基づいて、単一のOracleソフトウェア・インストールの接続文字列を表示します。

ノート:

このユーティリティは、単一インスタンスまたはOracle Database Freeのインストールに適しています。それよりも複雑な構成のOracle Real Application Clusters (Oracle RAC)やOracle Data Guardなどには適していません。これはリスナー制御ユーティリティ(lsnrctl)に依存しているため、Oracle Databaseとリスナーをホストしているコンピュータでこのユーティリティを実行する必要があります。ただし、表示される接続文字列は、サポートされているすべてのクライアント・システムで使用できます。
  1. コマンド行に次のコマンドを入力します。
    connstr

    このユーティリティは、デフォルトのオプションで対話型モードで実行されるので、引数を指定する必要はありません。

    サービス名とそれに対応する接続文字列のリストが簡易接続形式で出力されます。この出力には、SQL*Plus、PythonまたはJDBC Thinクライアントで使用するサンプル文字列が表示されます。例6-1を参照してください。
  2. (オプション)詳細構成オプションを指定してこのユーティリティを実行する場合は、-h (または--help)オプションを使用すれば、コマンドラインで入力できる追加の引数リストが表示されます:
    connstr -h

    connstrでよく使用されるいくつかの引数を次に示します:

    • このユーティリティは、LISTENERという名前のデフォルトのリスナーを使用します。別のリスナーを使用している場合や、複数のリスナーがアクティブな場合は、-L (または--listener)を使用してリスナー名を指定します:
      connstr -L listener_name

      実行時には、リスナー構成に応じた各種の選択肢がある対話型ダイアログが表示されます。

    • 使用可能なリスナー・エンドポイントのリストをフィルタするには、-e (または--endpoints)を使用します:
      connstr -e
      たとえば:
      connstr -e
      PROTOCOL  PORT   HOST
      tcp       1521   sales-server
      tcp       1523   hr-server
      tcps      1522   mktg-server
      使用可能なリスナー・サービスのリストをフィルタするには、-s (または--services)を使用します:
      connstr -s
      たとえば:
      connstr -s
      sales.us.example.com
      hr.us.example.com
      mktg.us.example.com
    • デフォルトでは、このユーティリティは簡易接続形式で文字列を表示します。JDBC Thinアプリケーションを使用して接続する場合は、サービス名とともに-j (または--JDBC)を使用すれば、JDBC Thin形式で接続文字列が表示されます:
      connstr -j service_name
      たとえば:
      connstr -j sales.us.example.com
      jdbc:oracle:thin:@sales-server:1521/sales.us.example.com
      接続記述子形式で接続文字列を表示するには、-d (または--descriptor)を使用します:
      connstr -d service_name
      たとえば:
      connstr -d sales.us.example.com
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))
      (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)))
      デフォルト(簡易接続)形式で接続文字列を表示するには、-z (または--ezconnect)を使用します:
      connstr -z service_name
      たとえば:
      connstr -z sales.us.example.com
      username@sales-server:1521/sales.us.example.com
  3. 出力では、接続文字列をtnsnames.oraファイルに書き込むように促されます。このファイルに使用可能なサービス名とその接続記述子を含めて作成する場合は、Yと入力します。

    tnsnames.oraファイルは、環境変数TNS_ADMINで指定されたディレクトリに書き込まれます。TNS_ADMIN環境変数が設定されていない場合、このファイルはORACLE_BASE_HOME/network/adminディレクトリまたはORACLE_HOME/network/adminディレクトリのどちらかに書き込まれます。

    すでにtnsnames.oraファイルが存在している場合は、これらのエントリを既存のファイルに追加するか、ファイルを上書きすることを求められます。Yを入力して追加するか、Oを入力して上書きします。

例6-1 簡易接続形式でのconnstrユーティリティの出力例

Using Listener: LISTENER with Oracle Home: /app/oracle/product/23ai/dbhome_1 

Service Name: sales.us.example.com 
Connection String: sales-server:1521/sales.us.example.com 

Connection strings can be used to connect to the specified service name. 

For SQL*Plus you can use: 
SQL> connect username@sales-server:1522/sales.us.example.com

For Python you can use: 
connection = cx_Oracle.connect(user="username", password="password", 
dsn="sales-server:1521/sales.us.example.com") 

For JDBC Thin you can use: 
OracleDataSource ods = new OracleDataSource(); 
ods.setURL("jdbc:oracle:thin:@sales-server:1521/sales.us.example.com"); 
ods.setUser("username"); ods.setPassword("password"); 
Connection conn = ods.getConnection(); 

Write connect strings to tnsnames.ora (Y/N)? (Default: N): y  

関連トピック