【问题标题】:How to Get Oracle Database IP?如何获取 Oracle 数据库 IP?
【发布时间】:2014-04-13 10:55:54
【问题描述】:

如何获取 Oracle 数据库的 IP 地址? 我不是管理员。

我正在使用可以访问该数据库的 Oracle 应用程序。 如何获取数据库的 IP 地址?

【问题讨论】:

  • 一种方法是检查您的 tnsnames.ora 文件,您可以在其中找到所需连接字符串下的 (HOST=some_host_name/ip_address)。如果 IP 地址在那里,那么你就得到了你想要的,如果主机名在那里,你可以在命令提示符下 ping 到该主机名以获取 IP 地址。
  • 非常感谢,你真棒

标签: oracle plsql ip-address sqlplus


【解决方案1】:

从 SQL*Plus 内部Requires specific access rights to the network related functions,因此您作为非管理员可能会也可能不会使用):

SQL>  connect / as sysdba;
Connected.
SQL> SELECT UTL_INADDR.get_host_address from dual;

GET_HOST_ADDRESS
--------------------------------------------------------------------------------
192.168.1.42

另请参阅UTL_INADDR documentation

从 shell(如果您使用 tnsnames 来解析数据库名称):

$ tnsping InstanceID
Attempting to contact (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=host.dbserver.com)(PORT=1521)) (CONNECT_DATA= (SID=ORCL)))
                                                                 ^^^^^^^^^^^^^^^^^

注意HOST 输出 - 这是您的数据库服务器的主机名。

如果您的应用程序使用JDBC 访问数据库,则主机名已经是JDBC 连接字符串的一部分

jdbc:oracle:thin:@host.dbserver.com:1521:ORCL
                  ^^^^^^^^^^^^^^^^^

在任何一种情况下,您都可以使用ping 获取 IP 地址:

$ ping host.dbserver.com
PING host.dbserver.com (192.168.1.42) 56(84) bytes of data.
                        ^^^^^^^^^^^^

【讨论】:

    【解决方案2】:

    有几种方法。使用sys_context

    SELECT sys_context('USERENV','IP_ADDRESS') FROM DUAL;
    

    或者sys.utl_inaddr:

    SELECT utl_inaddr.get_host_address FROM DUAL;
    

    或使用 PL/SQL 的相同命令:

    SET serveroutput ON
    BEGIN
      dbms_output.put_line(utl_inaddr.get_host_address);
      dbms_output.put_line(sys_context('USERENV','IP_ADDRESS'));
    END;
    /
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      • 2012-04-09
      相关资源
      最近更新 更多