Oracle Names - Oracle_SID /db_name instance_name service_names / service_name / sid / sid_name

时间:2021-12-13 23:06:33

很多人还是困惑,下面再次尝试从几个不同角度区分一下: Oracle_SID / db_name, instance_name, service_names  / service_name, sid / sid_name

  • JDBC 连接

jdbc:oracle:thin:@//<host>:<port>/<service_name>

jdbc:oracle:thin:@<host>:<port>:<SID>

注意红色的 : / 区别;后面会介绍 SID / service_name

  • 存在地方

Oracle_SID - OS 环境变量

db_name instance_name service_names - init 或者 spfile

service_name, sid - tnsnames.ora

SID_NAME - listener.ora

  • db_name instance_name service_names

db_name - 安装时候库的名字

instance_name - 运行实例名,用在 jdbc 里面的 sid, listener.ora 里面的 sid_name,或者 tnsnames.ora 里面的 sid

service_name - 用在tnsnames.ora 里面,表示 listener 对外服务名,可以是 instance_name, service_names

service_names - instance 别名, RAC 中可以表示多个 instance

  • listener 对外服务名

listener启动时候根据 listener.ora 配置的信息静态注册可用的服务(SID_NAME),同时数据库实例启动以后(PMON)会把 service_names,db_name 的值动态的注册到Listener。

准确的值通过 listener status 查看;个人建议非常仔细阅读并理解命令的输出

  • tnsnames.ora

里面的 service_name 任何一个 service_names 里面的值

如果使用 sid,是  instance_name - 不推荐使用 sid 了。