千家信息网

通过sqlplus连接数据库服务器很慢的问题

发表于:2024-11-21 作者:千家信息网编辑
千家信息网最后更新 2024年11月21日,今天在论坛上看到一个贴子,问题是客户端sqlplus连接数据库很慢:http://www.itpub.net/thread-2090550-1-1.html,之后根据问题的描述与分析,在测试环境做了一
千家信息网最后更新 2024年11月21日通过sqlplus连接数据库服务器很慢的问题

今天在论坛上看到一个贴子,问题是客户端sqlplus连接数据库很慢:http://www.itpub.net/thread-2090550-1-1.html,之后根据问题的描述与分析,在测试环境做了一下测试,将我的虚拟主机加入域环境,进行测试;之后就联想到去年我所遇到类似的一个问题:http://www.itpub.net/thread-2072574-1-1.html


实验环境
操作系统:Windows Server 2008 R2,加入AD域环境
数据库:Oracle 11.2.0.4


问题描述:
1、从客户端使用sqlplus xxx/ssss@yyy 的方式连接数据库,第一次连数据库时很慢,基本上要几十秒才能连接到数据库,接下来几次连接很正常,但过会儿再连接数据库又变慢了
2
、数据库的日志文件中,有大量的WARNING: inbound connection timed out (ORA-3136) 错误信息

排除过程:
1、查了ORA-03136的错误,根据网上查找的资料,把数据库服务的监听添加了如下参数
LSNRCTL> set inbound_connect_timeout 0

并保存,此时,数据库中不在报ORA-03136的错误了,但是,从客户端连接到oracle数据库服务器还是存在很慢的问题
2
、客户端连接数据库服务时,数据库的那台主机的硬件负载都不高;
3
、服务器的监听文件和客户端的tnsname.ora中的主机地址都是使用ip地址
4
、在服务器上使用sqlplus xxx/ssss@yyy尝试连接多次,速度正常,感觉服务器端没问题
5
、从客户端ping服务器的监听地址,没有丢包现像
6
、在客户端使用tnsping测试到服务器的解析也很快,毫秒以内
7
、通过56的测试,感觉客户端到服务器的网络是正常的
8
、继续查询,在网上发现这篇文章和我的情况类似,http://blog.csdn.net/jaray/article/details/36008871后来根据这个文章上的方法,修改了服务器上的sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES的值为none
9
、再次使用sqlplus 测试从客户端测试到服务端的连接,速度正常,几秒内连接成功
10
、尝试把那个值再改成NTS,故障又再次出现

问题分析:

sqlnet.oraSQLNET.AUTHENTICATION_SERVICES设置,如果设置NTS,则优先使用Windows验证,然后使用Oracle验证;而设置none,则只使用Oracle验证。由于我测试的环境加入了AD域,所以如果优先Windows验证,则Oracle会通过远程的AD域服务器进行验证,验证失败后再进行Oracle验证,所以速度会很慢;


解决问题:

sqlnet.oraSQLNET.AUTHENTICATION_SERVICES值设置为none


问题分析到这里,不经让我想起去年遇到一个同样类似的问题:通过sqlplus远程连接Oracle数据库的时,有时候能够连接上,有什么就连接不上?(如下图所示)



以下是Oracle11g官方文档关于sqlnet.ora的说明:


************************************************************************************************************************************

The sqlnet.ora file is the profile configuration file. It resides on the client machines and the database server. Profiles are stored and implemented using this file. The database server can be configured with access control parameters in the sqlnet.ora file. These parameters specify whether clients are allowed or denied access based on the protocol.

The sqlnet.ora file enables you to do the following:

· Specify the client domain to append to unqualified names

· Prioritize naming methods

· Enable logging and tracing features

· Route connections through specific processes

· Configure parameters for external naming

· Configure Oracle Advanced Security

· Use protocol-specific parameters to restrict access to the database

By default, the sqlnet.ora file is located in the ORACLE_HOME/network/admin directory. The sqlnet.ora file can also be stored in the directory specified by the TNS_ADMIN environment variable.

************************************************************************************************************************************

从描述中看出,该文件是控制客户端访问数据库服务器的,可以设定多种参数进行访问控制。关于其他参数的详细配置请参考官方文档;而接触到的最多的参数是 sqlnet.authentication_services,官方说明如下:

************************************************************************************************************************************

SQLNET.AUTHENTICATION_SERVICES

Purpose

To enable one or more authentication services. If authentication has been installed, then it is recommended that this parameter be set to either noneor to one of the authentication methods.

Default

None

Note:

When installing the database with Database Configuration Assistant (DBCA), this parameter may be set to nts in the sqlnet.ora file.

Values

· Authentication Methods Available with Oracle Net Services:

o none for no authentication methods, including Microsoft Windows native operating system authentication. WhenSQLNET.AUTHENTICATION_SERVICES is set to none, a valid user name and password can be used to access the database.

o all for all authentication methods.

o nts for Microsoft Windows native operating system authentication.

· Authentication Methods Available with Oracle Advanced Security:

o kerberos5 for Kerberos authentication.

o radius for RADIUS authentication.

o tcps for SSL authentication.

************************************************************************************************************************************

从参数的说明可以了解到提供两种服务,net服务和高级安全服务。高级安全服务参数这里不讨论了,讨论一下 none / all / nts三个参数的作用。

设定sqlnet.authentication_services:

  • none:作用是不允许通过os系统用户登录数据库,需要提供用户名及密码;
  • all:作用是允许所有的登录方式;
  • nts:作用是windows的本地操作系统用户认证;

注:需要说明的是该用户名和密码是指具有sysdba权限的用户;在linux上若用系统用户oracle登录数据库需要设定为all或者不加该字段;



关于通过SQLNET.ora文件限制IP地址访问的问题请参考盖大师的博客:

http://www.eygle.com/archives/2008/01/sqlnetora_ip_limit.html


作者:SEian.G(苦练七十二变,笑对八十一难)

ITPUBhttp://blog.itpub.net/31015730/

51CTOhttp://seiang.blog.51cto.com/


服务 数据 数据库 问题 服务器 客户 客户端 测试 参数 验证 用户 环境 作用 地址 文件 系统 主机 官方 速度 错误 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 易经数据库 lis服务器管理系统在哪里看 计算机网络技术月薪专科 国家信息网络安全通报中心的职责 aql数据库配置 手机英雄联盟对局服务器延迟 杨浦区信息化网络技术价格 上海DDoS网络安全公司 计算机网络技术王协瑞试题 镇江大容量服务器供应商家 软件开发时间确定 网络安全小黑板如何使用云存储 贵州安全接入服务器地址云主机 打开服务器管理器的快捷键 c 连接数据库sqlite 笔记本音频服务器未响应怎么解决 网络规划和网络安全 app 软件开发怎么做 数据库扫描工具 服务器不能以安全模式启动 韶关数据链软件开发优化价格 顺义区网络营销软件开发供应 谁掌握了数据库 北京戴尔服务器维修维保哪家便宜 国家信息网络安全通报中心的职责 疫情中用到的网络技术 智生网络技术有限公司怎么样 集中式数据库的优点 网络安全第33 条规定 长春翔拓网络技术公司
0