ORACLE_SID, SID, INSTANCE_NAME, SERVICE_NAME, SERVICES_NAMES, DB_NAME, GLOBAL_DBNAME, SID_NAME,以及网络服名
1.SID==>>SID_NAME==>>ORACLE_SID==>>INSTANCE_NAME 四者是一致的,相等的;
2.NET_SERVICE_NAME ==>> INSTANCE_SERVICE_NAME ==>> GLOBAL_DBNAME ==>> SID_NAME ==>> SID
a> tnsnames.ora中定义了net_service_name和instance_service_name的对应,或者说隔离。
b> lisnter.ora中定义了global_dbname和sid的对应,或者说隔离;
c> 而tnsnames.ora中的instance_service_name(SERVICE_NAME)又和lisnter.ora中的GLOBAL_DBNAME相等。将两层隔离连接起来
总结:客户端根据tnsname.ora中的SERVICE_NAME和地址(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.100)(PORT = 1521)),到这个地址去访问监听器。然后监听器根据文件lisnter.ora文件中的GLOBAL_NAME来判断是否有一个 GLOBAL_DBNAME 和 SERVICE_NAME 相等。如果相等,则建立客户端到SID标识的服务端实例的连接。(有一个例外:tnsnames.ora中可以用参数SID来取代SERVICE_NAME,这时比较的是tnsnames.ora中的SID和lisnter.ora中的SID_NAME,但是从oracle9i开始不推荐使用SID。因为SID无法隔离客户端和服务端)
转自<https://blog.csdn.net/lyjiau/article/details/52238997?spm=1001.2014.3001.5501>