UTL_INADDR 取得Internet中的主机名和IP地址

Oracle 包 UTL_INADDR 用于取得局域网或 Internet 环境中的主机名和 IP 地址。

UTL_INADDR.get_host_address()

用来获取环境中 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 输出的错误信息。

UTL_INADDR.get_host_name()

返回环境中主机名。例如:

-- 返回本机主机名
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;
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号