2013-05-28 49 views
0

我想成立一​​个Oracle数据库的URL我JDBC连接如和一些网站说SID应该是URL的一部分,很少说架构名称迷茫中的Oracle命名

请比较schema, service name and SID in ORACLE?他们是如何相关的?

是像SID:schema1:n作为一个SID可以指向到n 模式

请说明它们之间的关系。

+0

请参阅http:// stackoverflow。com/questions/43866/how-sid-is-different-from-service-name-in-oracle-tnsnames-ora –

回答

0

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

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

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

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

所以一个应用程序应该引用一个SERVICE来连接,通过某个主机和端口上的侦听器。监听器将其解析为数据库(可能是提供该服务的许多注册中的一个)。以可能或可能不是架构所有者的用户身份连接到数据库。通常,出于安全原因,连接不会作为模式所有者 - 事实上,最佳安全级别是以User_A连接,调用User_B模式中的代码,并且引用其他用户模式中的表。

0

SID是服务ID,并且是指单个Oracle数据库实例

服务名称是很象一个SID但多个的SID可以由一个服务名称

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

与RAC类似,多个SID组成一个Service。

模式实际上是一个用户。

JDBC连接将采用某种形式的“主机:端口:(SID或服务名称)”。您将不得不连接到数据库,并使用用户名和密码进行操作。用户名(几乎总是)将您连接到该名称的模式。您可以使用sql中的点符号在另一个架构中引用对象,例如SCHEMA.OBJECT_NAME

+0

不要混淆数据库和实例 - 数据库是一组文件,实例是内存区域和访问它的进程。 RAC每个数据库有多个实例,每个实例都可以提供数据库提供的全部服务的一部分。 –

+0

Yeap,但是对于不熟悉Oracle实例的人来说,不那么容易混淆该数据库。鉴于该实例在IT中用于引用系统的实例,并且考虑到其他RDBMS使用数据库,所以将其简单化是一个好主意。 – Karl