您的位置:首页 > 数据库 > Oracle

Oracle 实例名/服务名(SID/Service_Name)的区别

2017-07-13 18:49 309 查看
转载原因:六月份在给客户部署项目的过程中,客户那边的数据库有专门的团队负责维护,维护人员给了我数据库连接地址、用户名和密码,让我远程连接数据库进行操作。问题出在了连接地址上,维护人员给地址是是:IP:port/SID(注意端口号和实例名是用斜杠分开的),我之前写地址一直是:IP:port:Service_Name(注意端口号和服务名是用冒号分开的),因为自己对Oracle数据库的实例名和服务名一点概念也没有,所以用冒号方式连接实例名,导致怎么也连接不上,自己花了很长时间也没有找到问题所在,后来在同事的帮助下才把问题解决掉。今天把这个问题记录下来,防止以后再犯类似错误时想不起解决方法,也作为自己成长的一个脚步。

转载地址:http://blog.csdn.net/z69183787/article/details/25706269

可以简单的这样理解:一个公司比喻成一台服务器,数据库是这个公司中的一个部门。

1.SID:一个数据库可以有多个实例(如RAC),SID是用来标识这个数据库内部每个实例的名字,

就好像一个部门里,每个人都有一个自己的名字。

2.SERVICE_NAME:是这个数据库对外宣称的名字,外面的人要想连接我这个数据库,

你就在客户端的连接串里写上service_name。它就像一个部门的名字,这个部门的名称在看门大爷(listener)那里有登记,

看门大爷一看你是要找SERVICE_NAME这个部门,就告诉你我们公司确实有这个部门,于是你就找到了,连接就建立了。

一句话来说就是:SID是对内的,是实例级别的一个名字,用来内部之间称呼用。SERVICE_name是对外的,

是数据库级别的一个名字,用来告诉外面的人,我数据库叫"SERVICE_NAME"。

你可以通过service_name参数指定这个名字是什么,可以有多个名字,名字随便起,叫狗蛋,翠花都没关系。

如果你不指定,默认的是Db_name. Db_domain,也就是global_name。

数据库里,还有ORACLE_SID,是告诉OS系统,我这个实例叫做什么。这些易混淆的名字,你要记住,

他们不是指数据库,就是指实例,就这两个东西,别无其它。他们具体用哪个名字,是要看对谁而言,

是什么场合。是对数据库,还是对操作系统,还是对外部链接。就像你对父母而言,你有小名叫幺儿;

对同学而言,你有外号叫灯泡;对办事机构,你有正规的名字叫王小明。但归根到底,是一回事。分清楚这点,就不容易混了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息