用服务名进行数据库标识

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 功能”