绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
【SYS_CONTEXT】使用SYS_CONTEXT获取连接到数据库服务器的IP地址
2020-01-07 06:55:55
使用SYS_CONTEXT可以获得很多数据库信息,官方文档参考链接如下:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions165.htm#SQLRF06117

这里给大家演示如何使用SYS_CONTEXT获取连接到数据库服务器的IP地址。

1.使用SYS_CONTEXT获取IP地址用法
以Windows操作系统的sqlplus客户端连接secdb数据库服务器为例。

1)使用ipconfig命令获取本地IP地址
C:\Users\secooler>ipconfig

Windows IP 配置


以太网适配器 本地连接 3:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . :

以太网适配器 本地连接 2:

   连接特定的 DNS 后缀 . . . . . . . : iata.org
   本地链接 IPv6 地址. . . . . . . . : fe80::4012:497d:a9d9:bca%20
   IPv4 地址 . . . . . . . . . . . . : 10.142.8.173
   子网掩码  . . . . . . . . . . . . : 255.255.255.192
   默认网关. . . . . . . . . . . . . :

本地IP地址为10.142.8.173

2)使用sqlplus命令连接secdb服务器,获取客户端的IP地址。
C:\Users\secooler>sqlplus sec/sec@secdb

SQL*Plus: Release 10.2.0.3.0 - Production on 星期三 4月 6 21:32:00 2011

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.


连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> select sys_context('userenv','ip_address') from dual;

SYS_CONTEXT('USERENV','IP_ADDRESS')
------------------------------------------------------------
10.142.8.173

如上所示,返回的IP地址信息与本地IP地址信息一致。
查询成功。

2.使用SYS_CONTEXT获取IP地址为空的问题及原因
1)问题现象
我们在服务器端直接连接特定用户secooler,然后尝试获取IP地址。
ora10g@secdb /home/oracle$ sqlplus secooler/secooler

SQL*Plus: Release 10.2.0.1.0 - Production on Thu Apr 7 22:21:41 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

secooler@ora10g> select sys_context('userenv','ip_address') from dual;

SYS_CONTEXT('USERENV','IP_ADDRESS')
------------------------------------------------------------


注意,此时上面的SQL并没有返回任何内容,即内容为NULL。

2)问题原因
这是由于SYS_CONTEXT无法获取非TCP连接信息的缘故。

3)重新使用TCP方式(即使用“@连接串”方式连接)进行连接secooler用户,在此尝试获取IP地址
ora10g@secdb /home/oracle$ sqlplus secooler/secooler@ora10g

SQL*Plus: Release 10.2.0.1.0 - Production on Thu Apr 7 22:25:44 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

secooler@ora10g> select sys_context('userenv','ip_address') from dual;

SYS_CONTEXT('USERENV','IP_ADDRESS')
------------------------------------------------------------
144.194.192.183

OK,此时IP地址获取成功。

3.小结
使用SYS_CONTEXT可以获取很多有用的数据库信息。
在使用这个方法时对其本身的限制需要做到心中有数,避免不必要的疑惑。

Good luck.

secooler
11.04.06

-- The End --

分享好友

分享这个小栈给你的朋友们,一起进步吧。

OCM联盟
创建时间:2019-12-27 14:04:54
OCM联盟(OCMU – Oracle Certified Master Union)是一群有着共同理想,共同志向的DBA的家。 ⚠️该小栈仅限ocm成员入驻!审核制! Oracle Certified Master (OCM) -Oracle认证大师,是Oracle认证的别,是对数据库从业人员的技术、知识和操作技能的别的认可。Oracle OCM是解决困难的技术难题和复杂的系统故障的佳Oracle专家人选,也是IT行业衡量IT专家和经理人的高专业程度及经验的基准。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • 侯圣文@secooler
    栈主

小栈成员

查看更多
  • gaokeke123
  • ?
  • 山中老狐狸
  • 飘絮絮絮丶
戳我,来吐槽~