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 ってこと。