# 用服务名进行数据库标识

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

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

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

### 服务名

数据库现在由初始化参数文件中带有 `SERVICE_NAMES` 参数的服务名标识。`SERVICE_NAMES` 指定可能跨例程和/或节点的 Oracle 数据库服务的最高级别视图名称。`SERVICE_NAMES` 缺省为全局数据库名，由数据库名(`DB_NAME`) 和域名 (`DB_DOMAIN`) 组成。

### 例程名

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

### 连接描述符

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

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

| 另请参阅：

在 tnsnames.ora 文件中创建网络服务名

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

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

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

这是 Net8 Configuration Assistant 不支持的高级特性。

| 另请参阅：关于在连接描述符的 `CONNECT_DATA` 部分指定例程名的进一步信息，请参阅 Net8 管理员指南的第 8 章，“启用高级 Net8 功能”