按服务名进行数据库标识

Oracle 数据库是作为服务呈现给客户机的，即数据库代表客户机执行工作。数据库可以有一个或多个与其有关的服务。

到此发行版为止，Oracle 数据库服务由 Oracle 系统标识符 (SID) 唯一标识。SID 也由数据库内部使用，以作为指向系统全局区 (SGA) 的指针。客户机通过指定连接描述符中的 SID 连接到数据库例程。此命名方案不区分例程的服务。

Oracle8i 中已经实施新命名方案。这是由于 Oracle 数据库可以跨多个计算机，作为整体的服务及服务的每个例程都已指定。

服务名

现在，数据库由其服务名进行标识。服务名由初始化参数文件中的 SERVICE_NAMES 参数指定。SERVICE_NAMES 指定可以跨例程和/或节点的 Oracle 数据库服务最高级别视图的名称。SERVICE_NAMES 的缺省值为全局数据库名，全局数据库名由数据库名和域名组成。

例程名

数据库例程由初始化参数文件中带有 INSTANCE_NAME 参数的例程名标识。INSTANCE_NAME 对应于例程的 SID。

连接描述符

使用 SERVICE_NAME (不带 S) 参数配置连接描述符以连接到 Oracle8i 数据库。例如，下面的连接描述符包含一个位于 sales-sun1 上的监听程序地址，此监听程序监听称为 sales.us.acme.com 的数据库服务的连接请求：

    sales=
    (description=
    (address=(protocol=tcp)(host=sales-sun1)(port=1521))
    (connect_data=
    (service_name=sales.us.acme.com))

作为另外一种选择，连接描述符可以配置 INSTANCE_NAME 参数以连接数据库的特定例程。如果您有具有多个例程的 Oracle Parallel Server，可能需要这种方法。

例如，下面的连接描述符包含一个位于 sales-sun1 上的监听程序地址，此监听程序监听与 sales.us.acme.com 数据库相有关的称为 sales 的例程的连接请求：

    sales=
    (description=
    (address=(protocol=tcp)(host=sales-sun1)(port=1521))
    (connect_data=
    (instance_name=sales)
    (service_name=sales.us.acme.com))