最近在测试中发现,如果客户端通过连接工具SQLPLUS或ADO等连接oracle服务器的时候,如果服务器无法连接或数据库没有启动,超时时间比较长。
使用设置sqlnet.ora文件可以解决这个问题。
需要设置的参数是SQLNET.OUTBOUND_CONNECT_TIMEOUT,而不是SQLNET.INBOUND_CONNECT_TIMEOUT
SQLNET.INBOUND_CONNECT_TIMEOUT参数是服务器端的参数,用于控制客户端的连接,如果客户端连接上以后,没有在超时时间内输入用户名,密码等信息,服务端会主动释放连接,结束服务。所以是IN,参数的单位为秒。
SQLNET.OUTBOUND_CONNECT_TIMEOUT参数是设置在客户端的参数,如果连接服务器,服务端没有在超时时间内响应连接,则客户端关闭连接,返回失败信息
这两个参数都是全局参数,如果想针对不同的服务端和客户端进行区别设置,需要使用tnsname.ora文件和监听配置文件来设置。这个网上有介绍,但是版本需要11.2g以上(没有验证过)。
设置方法:
在客户端的network/admin目录中的sqlnet.ora文件中添加配置项。
SQLNET.OUTBOUND_CONNECT_TIMEOUT= 20 //20秒的超时时间,如果超过则返回。