Oracle 包 UTL_INADDR 用于取得局域网或 Internet 环境中的主机名和 IP 地址。
用来获取环境中 IP 地址。如果查询失败,则提示系统错误。例如:
-- 查询 www.hxstrive.com 的 IP 地址 SQL> select UTL_INADDR.get_host_address('www.hxstrive.com') IP from dual; IP -------------------------------------------------------------------------------- 39.99.59.199 -- 查询本机IP地址 SQL> select UTL_INADDR.get_host_address() from dual; UTL_INADDR.GET_HOST_ADDRESS() -------------------------------------------------------------------------------- 192.168.116.137 -- 查询局域网内 hxstrive 的 IP 地址 SQL> select UTL_INADDR.get_host_address('hxstrive') from dual; UTL_INADDR.GET_HOST_ADDRESS('HXSTRIVE') -------------------------------------------------------------------------------- 192.168.116.1
注意:
如果登录 SQL Plus 的用户没有权限,执行 UTL_INADDR.get_host_address() 将抛出如下错误:
SQL> select UTL_INADDR.get_host_address('www.hxstrive.com') IP from dual;
select UTL_INADDR.get_host_address('www.hxstrive.com') IP from dual
*
第 1 行出现错误:
ORA-24247: 网络访问被访问控制列表 (ACL) 拒绝
ORA-06512: 在 "SYS.UTL_INADDR", line 19
ORA-06512: 在 "SYS.UTL_INADDR", line 40
ORA-06512: 在 line 1
上面是使用 scott 账号登录 SQL Plus,执行 UTL_INADDR.get_host_address 输出的错误信息。
返回环境中主机名。例如:
-- 返回本机主机名 SQL> select UTL_INADDR.get_host_name() from dual; UTL_INADDR.GET_HOST_NAME() -------------------------------------------------------------------------------- WIN-SNOW -- 返回局域网内指定IP地址的主机名 SQL> select UTL_INADDR.get_host_name('192.168.116.1') from dual; UTL_INADDR.GET_HOST_NAME('192.168.116.1') -------------------------------------------------------------------------------- hxstrive -- 返回 intrenet 中指定 IP 地址的网址 SQL> select UTL_INADDR.get_host_name('39.99.59.199') from dual;