tnsping,oracle中最常用的判断client和server端通信的命令,应该没有人会觉得这个命令不安全,说实话,今天以前,我也觉得,tnsping不安全的话,oracle就没有那个命令是安全的了,可是,tnsping真的安全吗?
今天碰到一个案例.我们的多台服务器之间,要进行互相的tnsping检查,看到底那些连接已经不需要使用,或者说是需要下线.
服务器太多,有其他部分写了shell给我们,我们测试过shell,只是互相的tnsping,在各个平台上均测试过,没有问题,ok,那就部署到各个服务器上,开始互相tnsping吧.写过来的脚本,对于可以tnsping通的,会很快通过,如果不能连接的,会有一个超时判断,也就是会尝试了,这个想必逻辑上也没有太多的问题.
进行了一个多小时以后,应用突然报故障,有一个服务器失去连接,rlogin,telnet均无法和该服务器连接.找主机的兄弟介入,发现该服务器内存消耗完毕.导致服务器不堪重负,宕机了.
进一步跟踪后发现,该服务器os为aix 5.3,oracle版本为9206,rac环境,因为是多个服务器之间互相tnsping,所以这个环境也就是他自己tnsping其他服务器时候的client的环境.系统检查后发现,tnsping这个进程消耗了所有剩余的内存和page space.tnsping真的有这么强吗.
测试说明一切,找一个完全相同的环境,在人工监测下,进行tsnping操作.发现,如果是tnsping一个不通的服务器,那么,每秒大概消耗整个万分之五的内存.也就是说,大约90分钟后,tnsping会消耗掉client端的所有内存,如果你的这个client刚好又是其他的应用的服务器端的角色,那么,就会导致服务宕机.
在hp平台上,作同样的操作,未发现这个问题,那么,这个问题到底是aix的缘故还是oracle的缘故,持续关注中.也欢迎大家讨论下为何会有这种问题.如果是单机环境,也将不存在这样的问题,是rac引入的bug,又或者是opatch的问题,我们需要继续测试,也欢迎见过这种问题的兄弟,说说到底是什么状况引起的,或者是patch不对,或者是os的补丁问题?
奇怪的问题最近非常多呀!
已确认该问题为bug,bug id为2728394.
5 Comments to “Tnsping安全吗?”
Write a comment
You need tologin.

下次洗洗手,手气也太差了。
以前没注意到,这个bug需要在tnsnames.ora设置不对的情况下才出现,因为从来就没写错过tnsnames.ora,所以从来就没遇到,你太衰了!
haha
唉,不是我衰,100多台服务器,就是要确认那些是不需要的tns,所以才tnsping的,所以就触发了bug了.
怎么着bug id象俺滴Q号涅~~
强,你丫真的是人品有问题,老是遇上百年难得一见的BUG