zoukankan      html  css  js  c++  java
  • oracle获取主机服务器IP

    --要获取服务器端的IP
    14:45:34 SYS@XXX> select utl_inaddr.get_host_address from dual;
    
    GET_HOST_ADDRESS
    --------------------------------------------------
    10.19.2.XX
    
    --解析域名
    14:45:32 SYS@XXX> SELECT UTL_INADDR.get_host_address('www.anysql.net') from dual;
    
    UTL_INADDR.GET_HOST_ADDRESS('WWW.ANYSQL.NET')
    --------------------------------------------------
    173.236.176.151
    
    --根据IP地址反向解析主机名
    14:47:14 SYS@XXX> select utl_inaddr.get_host_name('173.236.176.151') from dual;
    
    UTL_INADDR.GET_HOST_NAME('173.236.176.151')
    --------------------------------------------------
    apache2-argon.footprint.dreamhost.com
    
    --获取客户端IP
    14:48:48 SYS@XXX> select   SYS_CONTEXT('USERENV','IP_ADDRESS') ip_address from dual;
    
    IP_ADDRESS
    --------------------------------------------------
    10.19.2.XX
    
    --获取客户端主机名
    14:48:50 SYS@XXX>  select sys_context('userenv','host') from dual;
    
    SYS_CONTEXT('USERENV','HOST')
    --------------------------------------------------
    WORKGROUPWXX-THINK
     

    UTL_INADDR包获取ip等信息的实现原理:

    可参考盖神的文章:http://www.eygle.com/archives/2006/10/how_to_getip_address.html

    在Linux可使用strace 命令进行相关命令的跟踪,在跟踪信息中获知

    Oracle顺序访问了如下文件来完成地址定位:

    open("/etc/resolv.conf", O_RDONLY) = 12
    open("/etc/host.conf", O_RDONLY) = 12
    open("/etc/hosts", O_RDONLY) = 12

    首先获取域名解析服务器,在根据host.conf文件确定解析顺序,因为缺省hosts文件优先,又继续读取/etc/hosts文件。

    如果hosts文件存在解析关系,则返回信息;如果不存在,则继续问询DNS服务器,获得解析地址,如果不能解析,则会出错:

    14:49:31 SYS@XXX> select UTL_INADDR.get_host_address('www.a.com') from dual;
    select UTL_INADDR.get_host_address('www.a.com') from dual
           *1 行出现错误:
    ORA-29257: 未知的主机 www.a.com
    ORA-06512: 在 "SYS.UTL_INADDR", line 19
    ORA-06512: 在 "SYS.UTL_INADDR", line 40
    ORA-06512: 在 line 1

    也就是说,UTL_INADDR的数据获取已经不依赖于数据库信息了,而SYS_CONTEXT的信息获取仍然来自数据库内部。

  • 相关阅读:
    从零起步搭建Hadoop单机和伪分布式开发环境图文教程
    使用DOM技术操纵文档
    求数组的子数组之和的最大值
    设计时(DesignTime)和运行时(RunTime)的区别
    ubuntu上ssh客户端应用
    创建一个简单的基于MVC的Django项目
    终结点与服务寄宿
    Google文件系统(GFS)翻译学习
    模板引擎开发(二)值标签的处理
    移动App服务端架构设计
  • 原文地址:https://www.cnblogs.com/willspring/p/5673648.html
Copyright © 2011-2022 走看看