如何获取Oracle数据库IP?

时间:2014-03-10 11:07:43

标签: oracle

如何获取Oracle数据库的IP地址。 我不是管理员,也不是出于黑客目的。

我正在使用可以访问该数据库的Oracle应用程序。 我怎样才能获得数据库的IP地址?

2 个答案:

答案 0 :(得分:3)

来自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.
                        ^^^^^^^^^^^^

答案 1 :(得分:0)

有几种方法。使用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;
/