TNS有什么优势?

What are the advantages of TNS?

我是 Oracle 数据库的新手,我不明白我们在使用 TNS 时获得了什么?为什么不使用普通 TCP/IP?

据我了解,TNS 是附加网络层。但我不明白它的作用。维基百科指出:

supports homogeneous peer-to-peer connectivity

TCP/IP也支持吗?

我真的很惊讶互联网上关于这方面的信息如此之少。

人们经常使用"TNS"来指代TNS Names(或Local Naming),这是一个可选的,shorthand指定你的数据库连接信息的方式。 You put your TCP/IP connection information in your tnsnames.ora file 加上像 "MYSERVER" 这样的昵称,然后你就可以 connect MYSERVER 而不必每次都提供 hostname/port/service-name。

TNSNames.ora 示例:

MYSERVER= 
 (DESCRIPTION=  
  (ADDRESS= 
     (PROTOCOL=tcp) 
     (HOST=192.168.1.17) 
     (PORT=1521)) 
  (CONNECT_DATA=  
     (SERVICE_NAME=myservice))) 

您会注意到它有一个 IP 地址,并显示 "PROTOCOL=tcp"。

正在连接 TNSNames:

sqlplus user@MYSERVER

但如果您不想,则不必使用 TNS 名称快捷方式 - connect strings support a number of different naming methods

使用 EZCONNECT 语法连接:

sqlplus user@\"192.168.1.17:1521/myservice\"

但最后,TNSNames 只是图片的一小部分。正如上面提到的评论者,"TNS" 更准确地用于指代 Oracle Net 基础层 proprietary session layer 组件,用于与任何 Oracle 数据库进行通信。不使用 TNS 就无法连接到 Oracle 数据库。