英语不是我的母语,请理解
当我尝试通过 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.ora
和 listener.ora
。 AFAIK,从 12c 开始,Oracle 仅使用 service_name
,因为它很灵活并且具有多对多关系。如果我发现不正确,我会根据文档进行交叉验证。
关于oracle - 使用Oracle SQLDeveloper时SID和服务名称有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25959063/