【SYS_CONTEXT】使用SYS_CONTEXT獲取連線到資料庫伺服器的IP地址
使用SYS_CONTEXT可以獲得很多資料庫資訊,官方文件參考連結如下:
這裡給大家演示如何使用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 --
這裡給大家演示如何使用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 --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-691814/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle獲取連線的IP地址Oracle
- 使用SYS_CONTEXTContext
- jdbc獲取資料庫連線JDBC資料庫
- sys_context獲取當前會話的屬性Context會話
- 獲取SQL Server中連線的客戶端IP地址SQLServer客戶端
- sys_context 獲取環境上下文的函式Context函式
- java連線Oracle資料庫獲取資料JavaOracle資料庫
- 顯示連線Oracle資料庫的客戶端IP地址Oracle資料庫客戶端
- jdbc獲取各種資料庫連線JDBC資料庫
- SYS_CONTEXTContext
- jdbc獲取對各種資料庫的連線JDBC資料庫
- 如何使用 Go 獲取你的 IP 地址Go
- 談用Delphi程式獲取撥號連線的動態IP地址 (轉)
- 獲取oracle資料庫連線出現的問題Oracle資料庫
- saltstack獲取IP地址
- 獲取IP地址方法
- 獲取IP地址命令
- SYS_CONTEXT & USERENVContext
- 使用sys_context找出會話資訊Context會話
- python使用cx_Oracle連線oracle資料庫獲取常用資訊PythonOracle資料庫
- ASPNET獲取IP地址 MAC地址Mac
- java獲取ip地址和mac地址JavaMac
- 美國ip地址如何獲取?
- 獲取真實IP地址
- 【Go】獲取使用者真實的ip地址Go
- 【Go】獲取使用者真實的 ip 地址Go
- userenv() 和sys_context()Context
- SYS_CONTEXT小記!Context
- 【Oracle-資料庫維護】-Oracle中USERENV和SYS_CONTEXT總結Oracle資料庫Context
- java獲取本機的ip地址Java
- 獲取本地的IP地址(內網)內網
- DHCP獲取IP地址的過程
- sys_context函式的用法Context函式
- Java 中獲取MAC地址 和IP地址JavaMac
- java獲取url連線地址引數的工具類Java
- 如何用ip地址連線共享印表機 用ip地址連線共享印表機的方法
- 連線到資料庫(JSP)資料庫JS
- 資料庫連線學到不少資料庫