Oracle ではSID、インスタンス名、接続識別子など様々な名前が出てきます。これらの名前を整理してみました。
名前 | 説明 | 初期値 | 確認方法 (11g R2 Windowsの場合) | 使用例 |
システム識別子(SID) | ホスト内でインスタンスにアクセスするための識別子 | データベース作成時にデータベースと同じ名前が設定される | ・環境変数のORACLE_SIDを確認 | |
インスタンス名(INSTANCE_NAME) | ホスト外よりネットワーク経由でインスタンスにアクセスするための名前 | データベース作成時にデータベースと同じ名前が設定される | SQL> select instance_name from v$instance; | |
データベース名(DB_NAME) | データベースの名前 | データベース作成時のパラメータで指定 | ・show parameter db_name | |
サービス名 | 主に一つのインスタンスを指す。外部から接続させる名前(インスタンス名とドメイン名を合わせた名前) | tnsnames.ora の「SERVICE_NAME」で記載。 | ・show parameter service_name | |
ドメイン名 | ネットワーク全体でサービス名を識別させるための名前 (サービス名がネットワーク内で重複しても識別できる) 設定しなくても良い | データベース作成時のパラメータで指定 | ・show parameters db_domain | |
接続識別子,TNS サービス名 | クライアント側のtnsnames.oraで定義される。ホスト名(あるいはIPアドレス)、プロトコル、ポート、サービス名などで構成されている。SQLPLUS
などで使用。 | tnsnames.ora 内で定義 | SQL> connect <ユーザ名>/<パスワード>@<接続識別子> |
(*1)インスタンス とはメモリ構成のこと。
・インスタンスは一つのデータベースにマウントが可能
・2つのデータベースを同じインスタンスに同時にマウントすることはできません。
(*2)tnsnames.ora クライアント側に配置するサーバ接続用の定義ファイル
コマンド例 | 説明 | |
インスタンスに接続する(リスナー経由) | connect <ユーザ名>/<パスワード>@<接続識別子> | 接続識別子はtnsnames.ora(クライアント側)で定義されている。ホスト外からのアクセスのため、システム識別子によるアクセスは不可。 |
ローカルのインスタンスに接続する(結果としてリスナーを経由しない) | connect / as sysdba | システム識別子に従い接続する。(システム識別子はWindowsの場合はORACLE_SIDあるいはれレジストリで設定) システム識別子はホスト内でのインスタンスアクセスに使用する。 |