tnsping,作为Oracle连接测试的一个小巧的工具,其实大家已经不陌生了,但是使用tnsping有一个问题,就是连接超时,当然这个和网络的安全策略等密不可分,但是摆在我面前的一个问题是,现在有大量的服务器,每台数据库服务器上都有tnsnames.ora,如果需要判断tnsnames.ora里面的配置是否生效,使用tnsping是一个很自然的选择。
我也这么做了,我写了一个命令去解析tnsnames.ora 然后把里面的连接对象给标示出来。
cat tnsnames.ora|awk '{print $1}'|grep -iv 'ADDRESS\|ADDRESS_LIST\|CONNECT_DATA\|SERVICE_NAME\|SID\|SERVER\|)'|sed 's/=(DESCRIPTION//g'|grep -v 'DESCRIPTION\|#'|awk -F= '{print $1}'|sed '/^$/d' |grep -v \(
命令的输出结果类似:
db133_95
csvip
testdb
我在这个基础上就可以使用tnsping来判断了。
但是刚开始我就发现这么做还是有一个隐患,那就是不可避免的连接超时问题。我们可以简单测试一下,看看默认的超时时长是多少?
$ time tnsping db84
TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 18-MAY-2016 22:17:53
Copyright (c) 1997, 2011, Oracle. All rights reserved.
Used parameter files:
/U01/app/oracle/product/11.2.3/db_1/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.11.17.84)(PORT = 1528)) (CONNECT_DATA = (SERVICE_NAME = sol)))
TNS-12535: TNS:operation timed out
real 1m0.011s
user 0m0.006s
sys 0m0.004s
通过time可以马上定位出超时时长是1分钟。
那么对于很多运行已久,业务依赖性较高的系统,tnsnames.ora里面的连接对象就非常多了,这个时候如果使用tnsping的方式那就很容易超时,假设里面有100个连接对象,如果存在30个无效连接对象,那就需要30分钟,如果有多台服务器,那就不用干其他的活了。
对于tnsping,这个命令也没有提供更多的使用选项,所以目前来看还无法指定超时时长。
$ tnsping --help
TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 18-MAY-2016 18:03:15
Copyright (c) 1997, 2011, Oracle. All rights reserved.
Used parameter files:
/U01/app/oracle/product/11.2.3/db_1/network/admin/sqlnet.ora
TNS-03505: Failed to resolve name
$ tnsping -h
TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 18-MAY-2016 18:03:19
Copyright (c) 1997, 2011, Oracle. All rights reserved.
Used parameter files:
/U01/app/oracle/product/11.2.3/db_1/network/admin/sqlnet.ora
TNS-03505: Failed to resolve name
这个还是依赖于系统级,那么我们把tnsping先放一放。看看还有没有其它的实现方式,一个很自然的实现方式就是telnet
一般测试连通性,我们可以使用telnet 服务器IP 端口的方式。下面是一个测试成功的案例。
$ telnet 10.11.65.111 1528
Trying 10.11.65.111...
Connected to 10.11.65.111.
Escape character is '^]'.
Connection closed by foreign host.
对于连通性问题的场景,telnet貌似也没有相应的超时选项。
所以使用telnet的方式和tnsping的效果差不多。
那么还有什么方式呢,这个时候我们可以好好想想还有那些系统级的工具可以满足要求,NetCat就是一个不错的选择。
所以想到了,我二话没说,就开始了测试。nc的一个亮点就是可以指定超时时长,比如我们设定为5秒,超时就显示连接失败
$ echo quit | nc -w 5 -v 10.11.65.111 1521
Connection to 10.11.65.111 1521 port [tcp/ncube-lm] succeeded!
$ echo quit | nc -w 5 -v 10.11.65.116 1521
nc: connect to 10.11.65.116 port 1521 (tcp) failed: No route to host
看来有了相应的解决思路,tnsping连接超时的问题就可以变通解决了。
相关文章
- 08-0810月22日纯血鸿蒙正式版发布意味着什么?-应用管控中心:鸿蒙系统提供了应用管控中心,能够智能识别应用的风险行为,并给出将其放入应用管控中心的提示,以便在更安全可控的环境下调用。对于被加入管控的应用,系统会通过空白信息、模糊定位等方式隐藏或禁用真实敏感的用户数据,并限制应用弹框,确保应用在安全受控的前提下正常运行。 隐私保护功能:鸿蒙系统提供了图片隐私保护功能,可以在分享照片时去除图片的位置信息和拍摄数据。此外,还有AI隐私保护功能,可以自动识别并一键打码身份证、银行卡号、车票信息、头像昵称等敏感信息,防止隐私泄露。 系统级文件加密分享:鸿蒙系统支持系统级的文件加密分享机制,用户可以在手机或平板上对文件进行加密,只有授权的用户才能打开,这种系统级的分享机制不依赖应用,不限分享渠道,并支持多种文件类型。 安全认证:鸿蒙系统的安全能力获得了行业最高等级的安全认证,鸿蒙内核获得了国际CC EAL6+证书,这是业界通用操作系统内核领域首个6+等级认证。整个系统还获得了中国CCRC EAL5+认证,是业界唯一获得此认证的操作系统。 隐私灯功能:鸿蒙系统推出了全新的隐私灯功能,能在状态栏明确提示用户当前有应用正在使用麦克风、摄像头或地理位置,并能做到全局的实时显示,有效防止被应用覆盖,确保用户能够实时了解应用正在使用的敏感权限。 应用权限管理:鸿蒙系统全面梳理了所有系统授权,禁止开放了9类不合理权限,包括读取已安装应用列表、访问短信、访问存储文件等,确保应用只能访问特定权限,保护用户数据的安全和私密性。 分布式架构:鸿蒙系统的分布式架构支持多种设备间的无缝协作,允许手机轻松连接到其他设备,实现资源共享和跨设备的任务处理,同时确保了数据在不同设备间的安全传输。 微内核设计:鸿蒙系统采用微内核设计,有效防止了外部攻击,并且通过形式化方法,重塑可信安全,提供更强的安全特性和低时延等特点。 数据生命周期保护:鸿蒙系统参照数据的风险分级,提供了基于全生命周期的数据保护能力,包括数据的生成、存储、使用、传输和销毁等阶段,确保数据在各个阶段的安全。 以上这些特性共同构成了鸿蒙系统在安全和隐私保护方面的全面策略,为用户提供一个安全可靠的操作系统环境。 鸿蒙系统惊人的迭代速度 从官网鸿蒙文档的发布可以看出,纯血鸿蒙NEXT在6月份面向开发者发布 Beta1版本以来,短短4个月时间,经过6个Beta 版的迭代,到昨天发布会正式发布,V 哥从文档日期看到,HarmonyOS NEXT Release 版,更新于2024-10-18 17:16。 正式版的发布,为首款搭载纯血鸿蒙 NEXT 手机 Mate70的发布提前奠定了基础,让我们一起期待12月份里程碑式的发布会。 鸿蒙系统是智能时代的基础 当下,我们正面临第四次工业革命的进程,从第一次以蒸汽机为首的机器取代人力生产的机械制造时代,到第二次以电力大规模应用为代表的电气化和自动化时代,再到第三次以计算机和电子数据普及为代表的电子信息时代,我们都在学习和模仿,这一次的智能时代来了,鸿蒙系统将发挥着重要的基础能力。智能设备和产品,就得依托智能底座系统。 虽然说从诺基亚手机的塞班系统开始就称之为智能手机系统,随着iPhone的横空出世,和Android系统生态的发展,智能操作系统才真正被称为智能。而鸿蒙 NEXT,又重新定义了什么是智能操作系统,听 V 哥慢慢道来。 iOS 和 Android 都是为单一设备设计的操作系统,它们的内核和系统架构主要针对手机、平板等移动设备进行优化。所以我们会看到例如 iOS的应用有手机版,pad版多套应用,这无疑给企业开发增加而外的工作量。 再一个,虽然 iOS 和 Android 支持多任务和后台处理,但它们并不是为跨设备协作设计的分布式系统。在多设备协同工作方面,它们主要依赖于云服务和第三方应用来实现。 而鸿蒙 NEXT 系统(HarmonyOS NEXT)是一个分布式操作系统,它支持多种设备之间的无缝协作,实现了真正的分布式架构。鸿蒙系统通过微内核设计,提供了更好的性能和安全性,同时支持跨设备的统一操作体验。分布式系统是指由多个独立的计算机组成的系统,这些计算机之间通过网络相互连接,协同工作以完成特定的任务。 所以,在鸿蒙应用开发中,可以真正实现一次开发多端部署的特点。因为鸿蒙系统本身是分布式系统架构。这个特性不简单,随着物联网的发展,除了手机、平板、电视、手表等等这些智能设备,鸿蒙为更多的物联网、泛物联网设备的产生提供了天然的支持,鸿蒙系统可以让这些设备之间实现丝滑的数据流转,为所有智能设备提供了统一的系统级标准,这为智能时代的发展带来无限的可能,手机、平板等不是全部,而是物联网设备中的其中一种而已。 鸿蒙时代必将开启全新的世界。
- 08-08对于tnsping的连接超时的功能补充