能够简单的这样理解:一个公司比喻成一台服务器,数据库是这个公司中的一个部门。
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系统,我这个实例叫作什么。这些易混淆的名字,你要记住,
他们不是指数据库,就是指实例,就这两个东西,别无其它。他们具体用哪一个名字,是要看对谁而言,
是什么场合。是对数据库,仍是对操做系统,仍是对外部连接。就像你对父母而言,你有小名叫幺儿;
对同窗而言,你有外号叫灯泡;对办事机构,你有正规的名字叫王小明。但归根到底,是一回事。分清楚这点,就不容易混了。数据库