从sql语句取IP地址想到的……

今天遇到了一个问题,某省的报表应用链接数据库报错:

进一步检查line 337行的sql:SELECT utl_inaddr.get_host_address FROM dual;
测试在数据库主机执行该语句,正常!测试在应用服务器端执行,发现取不到IP地址。由于utl_inaddr.get_host_address已经脱离了数据库,因此不再检查tnsnames的问题,直接检查hosts文件的配置,发现应用服务器端的hosts文件没有配置,也是配置好了IP和hostname。

如果此时已经配置好了hosts文件,那么我的域名解析应该没问题了吧?但是此时ping hostname还是ping不到!怎么回事?

想到有可能是域名解析的问题了。。。。。。。查了一下/etc/nsswitch.config,发现没这个文件,而且没这个文件的话,主机做域名解析的时候,是先去查DNS,再查NIS,最后再查/etc/hosts。最后新建nsswitch.conf文件,并且指定首先查hosts文件。终于搞定!

另外,由utl_inaddr.get_host_address想到还有一个取IP的方法,用sys_context(‘USERENV’,’IP_ADDRESS’),用这个包的时候,注意不要直接sqlplus “/ as sysdba”直接登录,要利用网络登录sqlplus user/pwd@SID;也要注意hosts文件的配置。

相关文章

2条评论

  1. re qsxing:我收到了你的邮件,但是没看到你的简历啊?我还以为你没兴趣了,请把简历发给我吧,上回给你的邮件中是我公司的mail地址。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据