Oracle 服务名称与数据库名称

Cha*_*dan 2 oracle

我正在阅读有关 Oracle 的内容,我对这两个名称感到困惑:service_name数据库名称。它们都引用使用命令创建数据库时使用的数据库名称吗CREATE DATABASE xxxxxx

服务名称可以与数据库名称不同吗?如果是,我们如何将服务名称映射到服务器上的数据库名称?因为作为客户端,我们使用服务名来连接数据库,那么服务端如何将服务名映射到数据库名呢?

Lal*_*r B 5

SERVICE_NAMES 指定客户端可以连接到实例的一个或多个名称。实例向侦听器注册其服务名称。当客户端请求服务时,侦听器确定哪些实例提供所请求的服务并将客户端路由到适当的实例。

您可以指定多个服务名称,以便区分同一数据库的不同用户。例如:

SERVICE_NAMES = sales.acme.com, widgetsales.acme.com
Run Code Online (Sandbox Code Playgroud)

您还可以使用服务名称来标识可通过复制从两个不同数据库获取的单个服务。

如果您不使用域限定该参数中的名称,Oracle 将使用 DB_DOMAIN 参数的值限定它们。如果未指定 DB_DOMAIN,则不会将任何域应用于非限定的 SERVICE_NAMES 值。

DATABASE NAME 是物理数据库结构的名称。它存储在控制文件和数据文件头中。它用于标识属于同一数据库的所有物理结构。它可以在安装时定义。它最初是由静态实例参数database_name定义的,并且不能更改,更改它的唯一方法是重建控制文件和重置日志顺序。

总而言之,您可以为它们使用一个共同的名称。但是,您可能需要不同的服务名称来区分同一数据库的不同用户。