oracle教程:Oracle网络连接技术知识分享
时间:2012-12-02 08:06 来源: 翻译器在线 作者:52ij
以前遇到过Oracle报错,关于网络方面的,上网搜答案总是不全面,也不知道为什么是这样,通读了Oracle相关书籍及Oracle关于网络连接方面的报错及解决方法之后,整理Oracle网络连接的资料如下,共享之:(不用谢)

Oracle关于网络连接的文件有3
路径如下:$ORACLE_HOME/network/admin
文件:listener.ora、sqlnet.ora、tnsnames.ora
文件的作用:listener.ora :在服务器端,用于描述服务器端监听器的属性。
tnsnames.ora:在客户端,在远程连接服务器端的数据库时要使用。
sqlnet.ora:里面可以配置登录数据库时的方式,比如说是主机验证,还是密码文件验证或者是两者兼有。
还可以配置远程登录数据库时,默认的域名等等。
注意:如果仅仅是本地连接,可以不启动监听器。如果你不问为什么,那你就是傻子!
如果你知道监听器的用途你就知道为什么了。服务器端的监听器是用来在客户端远程连接数据库时,用来响应客户端的。
服务器端的监听器怎么响应客户端的连接请求呢?
首先客户端请求远程连接后,通过客户端的tnsnames.ora文件查找将要连接到的服务器端IP,找到这个IP之后,客户端会尝试与这 个IP连接,等连接到这个IP主机后,服务器就会检查自身的监听是否已启动,监听器文件里面包含了数据库主目录,SID等变量,自然服务器端会去检查这些环境变量是否设置了,设置的是否正确。若监听器启动了则拿服务器的Listener.ora文件中关于自身监听的描述与客户端的tnsnames.ora中的文件相比较,只有完全匹配上,包括Ip地址、服务名或SID、监听协议、服务器的类型、端口等。此时才会返回给客户端一个正确的响应。此时监听匹配完成,接着就是服务器与客户端的通信了,那么通信通过监听器吗?答案是no,通信的话,在服务器端完成了监听器相关信息的匹配后,匹配正确,则会分配另外一个与监听端口不一样的未使用的随机的端口用于服务器端与客户端的通信。那么为什么要这样做呢?答案很简单,如果同时有几台客户端连接服务器端,都使用监听端口进行通信的话,要区分分发给不同客户端的包包,必然会使用串行的方式,而且可能会使用类似于调度器的功能来进行分发,这样的话很麻烦;或者在每个包上打上客户端的IP地址,然后直接由某个进程来检查匹配和分发,这样会更麻烦;基于简单高效的原则,选择了在匹配监听完成后,直接分配一个未使用的随机端口用于通信,这样的话,通信混乱的问题就game over了。
还有,遇到过一个人问我的问题:数据库在运行的时候能删掉listener.ora文件吗?
答案是不确定,如果你不再想让除了已经连上你这个数据库的主机连上你的数据库的话,你可以删掉。
如果你想让其他还未连接你的数据库的人连接你的数据库,你就不能删掉。
而且监听的配置信息都写在这个文件里,如果你需要重启监听,你就得重新配置这个文件了。

Oracle关于网络连接的文件有3
路径如下:$ORACLE_HOME/network/admin
文件:listener.ora、sqlnet.ora、tnsnames.ora
文件的作用:listener.ora :在服务器端,用于描述服务器端监听器的属性。
tnsnames.ora:在客户端,在远程连接服务器端的数据库时要使用。
sqlnet.ora:里面可以配置登录数据库时的方式,比如说是主机验证,还是密码文件验证或者是两者兼有。
还可以配置远程登录数据库时,默认的域名等等。
注意:如果仅仅是本地连接,可以不启动监听器。如果你不问为什么,那你就是傻子!
如果你知道监听器的用途你就知道为什么了。服务器端的监听器是用来在客户端远程连接数据库时,用来响应客户端的。
服务器端的监听器怎么响应客户端的连接请求呢?
首先客户端请求远程连接后,通过客户端的tnsnames.ora文件查找将要连接到的服务器端IP,找到这个IP之后,客户端会尝试与这 个IP连接,等连接到这个IP主机后,服务器就会检查自身的监听是否已启动,监听器文件里面包含了数据库主目录,SID等变量,自然服务器端会去检查这些环境变量是否设置了,设置的是否正确。若监听器启动了则拿服务器的Listener.ora文件中关于自身监听的描述与客户端的tnsnames.ora中的文件相比较,只有完全匹配上,包括Ip地址、服务名或SID、监听协议、服务器的类型、端口等。此时才会返回给客户端一个正确的响应。此时监听匹配完成,接着就是服务器与客户端的通信了,那么通信通过监听器吗?答案是no,通信的话,在服务器端完成了监听器相关信息的匹配后,匹配正确,则会分配另外一个与监听端口不一样的未使用的随机的端口用于服务器端与客户端的通信。那么为什么要这样做呢?答案很简单,如果同时有几台客户端连接服务器端,都使用监听端口进行通信的话,要区分分发给不同客户端的包包,必然会使用串行的方式,而且可能会使用类似于调度器的功能来进行分发,这样的话很麻烦;或者在每个包上打上客户端的IP地址,然后直接由某个进程来检查匹配和分发,这样会更麻烦;基于简单高效的原则,选择了在匹配监听完成后,直接分配一个未使用的随机端口用于通信,这样的话,通信混乱的问题就game over了。
还有,遇到过一个人问我的问题:数据库在运行的时候能删掉listener.ora文件吗?
答案是不确定,如果你不再想让除了已经连上你这个数据库的主机连上你的数据库的话,你可以删掉。
如果你想让其他还未连接你的数据库的人连接你的数据库,你就不能删掉。
而且监听的配置信息都写在这个文件里,如果你需要重启监听,你就得重新配置这个文件了。
本文来源 我爱IT技术网 http://www.52ij.com/jishu/129.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
