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


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

错误信息:MSG: ORA-06502: PL/SQL: numeric or value error ORA-06512: at "REPORTPLUS.COMMON", line 337 ORA-29257: host he_rdb01 unknown ORA-06512: at line 1 SQL: begin :RET := common.droppartition("20080125000000","20080126000000","1",:DYPARA1,:DYPARA2,:PROCCODE,:PROCERRM,:SQLERRLOG); end;

进一步检查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文件的配置。

· 【文章发布信息】发表于: 2008-03-18 @ 15:51:32 · ||分类: ..experience, Working case

2 条评论 »

  1. qsxing 于 2008-03-18 @ 18:04:15 留言

    老大,怎么能联系到你?还要招人吗?

  2. 小荷 于 2008-03-18 @ 22:33:27 留言

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

RSS 为此帖反馈评论 · 反向跟踪 网站

留条评论