ablog

不器用で落着きのない技術者のメモ

tnsnames.ora の SID と SERVICE_NAME

tnsnames.ora の SID と SERVICE_NAME について調べてみた。
両方ともデータベースの識別に使用する。8.0までは SID を使っていたが、8.1からは SERVICE_NAME を使う。ちなみに SID は Oracle System Identifier の略。

SERVICE_NAME

用途

パラメータSERVICE_NAMEを使用して、アクセスするOracle9iまたはOracle8データベース・サービスを識別します。値は、初期化パラメータ・ファイルのSERVICE_NAMESパラメータに指定されている値に設定します。

ローカル・ネーミング・パラメータ(tnsnames.ora)

SID

用途

パラメータSIDを使用して、Oracle8データベース・インスタンスOracleシステム識別子(SID)により識別します。 データベースがOracle9iまたはOracle8の場合は、SIDパラメータではなく、SERVICE_NAMEパラメータを使用します。

ローカル・ネーミング・パラメータ(tnsnames.ora)

Oracleシステム識別子(Oracle System Identifier: SID)
リリース8.1以前のOracleデータベースが動作しているときに、その特定のインスタンスを識別する名前。どのようなデータベースの場合も、データベースを参照しているインスタンスが少なくとも1つは存在する。

リリース8.1以前のデータベースでは、SIDがデータベースを識別している。 SIDは、tnsnames.oraファイルの接続記述子およびlistener.oraファイルのリスナー定義に含まれている。

用語集

「リリース8.1以前」って訳が気になったので英語版を見てみると、

Oracle System Identifier (SID)

A name that identifies a specific instance of a running pre-release 8.1 Oracle database. For any database, there is at least one instance referencing the database.

For pre-release 8.1 databases, SID is used to identify the database. The SID is included in the connect descriptor of a tnsnames.ora file and in the definition of the listener in the listener.ora file.

Glossary

「pre-release 8.1」となっていた。「リリース8.1以前」じゃなくて「リリース8.0以前」、つまり8.0までが SID で、8.1から SERVICE_NAME ってこと。