0

我想为我的JDBC 连接形成 oracle 数据库 URL ,很少有网站说SID应该是 URL 的一部分,很少有人说模式名称

schema, service name and SIDORACLE中进行比较?以及它们是如何相关的?

是不是就像SID:schema一个1:nSID可以指向 n 个模式一样?

请说明它们之间的关系。

4

2 回答 2

0

SID 是数据库的唯一标识符,或者它是数据库实例的 RAC 系统。

服务是数据库提供的服务的标识符,数据库应配置为诸如“BILLING_APP”或“CUST_WEBSITE”之类的服务。http://docs.oracle.com/cd/B28359_01/server.111/b28320/initparams217.htm

顺便说一句,不要混淆数据库和实例。数据库是一组数据和控制(等)文件,实例是访问它的内存区域和进程。RAC 每个数据库有多个实例,每个实例都可以向侦听器注册,以提供数据库提供的全部服务或其中的一部分。

架构实际上是拥有对象的用户名,并且数据库中可以有多个架构。

因此,应用程序应该通过某个主机和端口上的侦听器来引用要连接的服务。侦听器将此解析为数据库(可能是许多注册提供该服务的数据库之一)。以可能是也可能不是模式所有者的用户身份与数据库建立连接。通常,出于安全原因,连接不是作为模式所有者进行的——事实上,最好的安全级别是作为 User_A 连接,调用 User_B 模式中的代码,它引用其他用户模式中的表。

于 2013-05-28T09:37:09.773 回答
0

SID 是一个服务 ID,指的是单个 Oracle 数据库实例

服务名称与 SID 非常相似,但一个服务名称可以引用多个 SID

例如,在 Dataguard 场景中,主实例可能是 SID_01 和 ORA_SRV。SID_02 和 SID_03 正在网络上的某处运行并接收和应用日志文件。SID_01 失败,SID_02 启动(安装和打开),现在在网络上公开为 ORA_SRV。

与 RAC 类似,多个 SID 构成一个服务。

架构实际上是用户。

JDBC 连接将采用某种形式的“HOST:PORT:(SID or Service name)”。您必须连接到数据库,并使用用户名和密码进行连接。用户名将(几乎总是)将您连接到该名称的架构。您可以在 sql 中使用点符号引用另一个模式中的对象,例如 SCHEMA.OBJECT_NAME

于 2013-05-28T09:38:13.993 回答