データベース内のデータの問合せまたは変更を実行するには、Oracle Database(インスタンス)に接続する必要があります。デフォルトのデータベースおよびネットワーク上の他の利用可能なデータベースに接続できます。ネットワークを介して別のデータベースに接続するには、両方のデータベースにOracle Netが構成され、互換性のあるネットワーク・ドライバを備えている必要があります。デフォルト以外のデータベースに接続するには、接続識別子またはネット・サービス名を入力してください。
接続識別子またはネット・サービス名の入力方法は次のとおりです。
コマンドライン・セッションの開始時に、SQLPLUSプログラムの構文への引数として入力する。
カレント・セッションからCONNECTコマンドへの引数として入力する。使用方法の詳細は、『Oracle Database管理者ガイド』のCDB内のコンテナへのアクセスに関する項を参照してください。
DBAは、使用するデータベースを作成して、そのデータベースのネット・サービス名をtnsnames.oraファイルに定義します。
tnsnames.oraファイルにネット・サービス名を定義する構文は次のとおりです。
net_service_name= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=port) ) (CONNECT_DATA= (SERVICE_NAME=service_name) ) )
ネット・サービス名(別名)を使用するには、SQL*Plusが実行されているマシンのtnsnames.oraファイルに、このサービス名のエントリが存在する必要があります。接続識別子を使用する場合、tnsnames.oraファイルのエントリは必要ありません。
例3-1 salesデータベースのtnsnames.oraエントリ
SALES1 = (DESCRIPTION = (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521) ) (CONNECT_DATA= (SERVICE_NAME=sales.us.acme.com) ) )
例3-2 ネット・サービス名を使用したsalesデータベースへのコマンドライン・セッションの開始
SQLPLUS hr@SALES1
データベース接続およびネット・サービス名の定義の詳細は、『Oracle Database Net Servicesリファレンス』および『Oracle Database Net Services管理者ガイド』を参照してください。
ご使用の構成に応じて、完全な接続識別子を次の構文で使用できます。
(DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=port) ) (CONNECT_DATA= (SERVICE_NAME=service_name) ) )
SERVICE_NAME
は、データベース作成中に入力したグローバル・データベース名です。これは、データベース名をドメイン名と結合したものです。たとえば、SERVICE_NAME
sales.us.acme.com
では、sales
がデータベース名で、us.acme.com
がドメインです。
INSTANCE_NAME
は、作成中に指定したデータベース・インスタンス名です。デフォルトは、データベース作成中に入力したSIDです。
Oracleシステム識別子(SID
)によって、特定のOracleリリース8.0データベース・インスタンスが識別されます。
オプションで、SERVICE_NAME
句のかわりにINSTANCE_NAME
を使用できます。
Oracleリリース8.0以下のデータベースに接続する場合は、SERVICE_NAME
のかわりにSID
を使用します。
例3-3 SALES1の完全な接続識別子
SQLPLUS hr@\"(DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521) ) (CONNECT_DATA= (SERVICE_NAME=sales.us.acme.com) ) )\"
[//]host[:port][/service_name]
例3-4 簡単な接続識別子を使用したsalesデータベースへのコマンドライン・セッションの開始
sqlplus hr@\"sales-server:1521/sales.us.acme.com\"
例3-5 簡単な接続識別子を使用したsalesデータベースへの接続
パスワードを省略した場合、接続文字列を引用符で囲む必要があります。
connect hr@"sales-server:1521/sales.us.acme.com"
簡単な接続識別子は、完全な接続識別子やネット・サービス名を使用できる状況であれば、どこでも使用できます。また、簡単な構文は単純で、tnsnames.oraエントリは必要ありません。