oracle - 使用Oracle SQLDeveloper时SID和服务名称有什么区别?

标签 oracle sid service-name

英语不是我的母语,请理解

当我尝试通过 sqldeveloper(window) 以系统/密码作为 sysdba 登录到 oracle(linux) 时

通过服务名称失败并返回 ORA-0131:权限不足

但是SID?顺利通过

有什么区别?以及如何与服务名称连接?

最佳答案

Thomas Kyte 精彩地解释了其中的区别:

A service name is more flexible than a SID would be.

A database can dynamically register with a listener using one or more service names. In fact, more than one database can register with a listener using the same service name (think about a clustered environment where you have multiple instances that all are the same database under the covers).

A database on the other hand has a single SID. And a single SID goes to a single database. It is a pure 1:1 relationship.

A service is a many to many relationship.

服务名称与动态注册一起使用 - 数据在监听器启动后注册到监听器。一旦完成,您就可以连接了。

使用 SID - 这更像是告诉听众“我希望你连接到这个特定的数据库,我知道‘地址’,给你”

使用服务 - 您要求监听器让您联系可以满足您的请求的数据库,即使用该服务注册的数据库。

更多信息请点击此处,https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1508737000346067364

六年前,Stack Overflow 中曾提出过类似的问题,How SID is different from Service name in Oracle tnsnames.ora

在您的测试环境中,使用 tnsnames.oralistener.ora。 AFAIK,从 12c 开始,Oracle 仅使用 service_name,因为它很灵活并且具有多对多关系。如果我发现不正确,我会根据文档进行交叉验证。

关于oracle - 使用Oracle SQLDeveloper时SID和服务名称有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25959063/

相关文章:

java - 如何删除名称为 bin$ 的文件

java - 如何使用 jdbc 在 oracle 10g 中插入大型 clob 数据(> 4K 字符)

每个类别的 SQL 计数

c# - 将 SID 转换为用户名/组?

c# - 将 SID 字符串格式转换为字节数组

linux - 更改 PostgreSQL 服务名称 - Linux

java - 如何使用服务名称而不是 SID 连接到 Oracle

c# - 单一 Entity Framework 中具有相同架构的 Oracle 和 SQL Server 数据库