思考来源
通过Navicat连接Oracle数据库时,提示需要填写服务名(server_name)。这在连接Mysql数据库时是不需要的。因此产生了一个好奇,Oracle数据库中服务名是什么?
背景知识
在实际工作中,一个数据库服务通常会有(1个或)多个数据库实例,这些实例可以实现数据的分库分表等能力。
服务名的前世今生
服务名的英文译为sever_name。
server_name是由Oracle的8i版本引入的,用来指代一个数据库服务,经常被用在客户端的连接串中。
为了区分数据库的不同实例,通过sid来标识数据库实例。server_name不指代某个具体实例。一个数据库可以对应多个server_name,即服务名可以“取别名”,从而实现更加灵活的配置。
总结
- sid是数据库实例的名称,每个实例的sid各不相同。
- server_name是数据库服务的名称。