该文分为两个部分,
-
1 sqlnet.ora是怎样一个文件
-
2 该文件如何使用
-
3 示例讲解
一、sqlnet.ora是怎样的文件
(官网指出的)
- Specify the client domain to append to unqualified names
- Prioritize naming methods
- Enable logging and tracing features
- Route connections through specific processer
- Configure parameters for external naming
- Configure Oracle Advanced Security
- Use protocol-specific parameters to restrict access to the database
简单翻译
1.限制客户端访问(如指定客户端域为不允许访问)
2.指定命名方法(local naming,directory nameing…)的优先级
3.启用日志及跟踪(log and trace)功能
4.通过特定进程来路由客户端连接
5.配置外部命名(第三方连接程序,如c语言写的)参数
6.配置Oracle的高级安全
7.使用协议特定的参数限制对数据库的访问
一句话总结这个文件的作用类似路由装置,通过这个文件的配置来决定怎么样找一个连接中出现的连接字符串,以及决定是否让该请求通过
sqlnet配置文件的存放位置一般在:$ORACLE_HOME/network/admin目录下
二 、常用参数设置
1.SQLNET.AUTHENTICATION_SERVICES :定义登录数据库的认证方式
示例 SQLNET.AUTHENTICATION_SERVICES=(nts)
如上,在windows下允许使用windows nt本地认证
2.NAMES.DIRECTORY_PATH :定义在客户端连接数据库时,采用什么样的匹配方式。
示例解析:
NAMES.DIRECTORY_PATH=(tnsnames, onames,ezconnect)
如上,在客户端执行sqlplus username/password@local 连接数据库的时,首先采用tnsnames.ora的别名配置连接数据库;如果连接上;再采用ONAMES进行解析,最后采用主机名进行解析。
可以设置如下的值:
1.tnsnames使用客户端的tnsnames.ora解析
2.ldap使用目录访问协议解析,需要有目录服务
3.ezconnect or hostname,允许使用tcp/ip连接串,包含主机名,端口,服务名
4.cds分布式环境的数据库名
5.nis (Network Information Service (NIS) external naming method),主要用于外部程序解析
6.onames:通过Oracle Name Server解析
3.SQLNET.EXPIRE_TIME :
设置客户端连接会话超时时间(单位分钟) ,定期检测客户端是否还是活动的,设置为0不检测
SQLNET.EXPIRE_TIME = 10
另外还有:
SQLNET.INBOUND_CONNECT_TIMEOUT:客户端建立连接超时时间(单位秒,默认60)
Oracle建议在listener.ora中也进行配置
SQLNET.RECV_TIMEOUT 接受超时时间(单位秒)
SQLNET.SEND_TIMEOUT 发送超时时间(单位秒)
4.TCP.VALIDNODE_CHECKING :是否对客户端进行限制(默认no):
如:TCP.VALIDNODE_CHECKING=yes
5.TCP.EXCLUDED_NODES:限制客户端访问
TCP.EXCLUDED_NODES=(hostname | ip_address, hostname | ip_address, …)
如:TCP.EXCLUDED_NODES=(www.baidu.com,127.0.0.1)
6 . TCP.INVITED_NODES允许客户端访问,会覆盖限制访问
TCP.INVITED_NODES=(hostname | ip_address, hostname | ip_address, …)
如:TCP.INVITED_NODES=(www.baidu.com,127.0.0.1)
7.TCP.NODELAY 是否设置立即发送
设置等待一段时间或者数据包凑够多大才会一起发送,或者可以让数据立即发送
TCP.NODELAY=yes
6.USE_DEDICATED_SERVER设置使用专享连接还是公用链接
设置为on会在客户端连接串后加上(SERVER=dedicated)
USE_DEDICATED_SERVER=on/off
三、示例讲解
一般安装后,此文件的配置如下
# sqlnet.ora Network Configuration File: D:\app\Administrator\product\11.2.0\dbhome_2\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
故以此为示例进行讲解,
在客户端输入
sqlplus sys/oracle@orcl
根据如上规则,orcal服务器首先在 【 tnsnames.ora 】 文件中找orcl 的记录. 如果没有相应的记录则尝试把orcl 当作一个主机名,去host文件解析,然后通过网络的途径去解析它的 ip 地址最后去连接此ip 上GLOBAL_DBNAME=orcl 这个实例,当然我这里orcl 并不是一个主机名