【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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sys_context 獲取環境上下文的函式Context函式
- sys_context函式的用法Context函式
- 如何使用 Go 獲取你的 IP 地址Go
- [20211112]SYS_CONTEXT ('USERENV','DBID').txtContext
- [20181116]SYS_CONTEXT函式的使用(12c).txtContext函式
- saltstack獲取IP地址
- python使用cx_Oracle連線oracle資料庫獲取常用資訊PythonOracle資料庫
- 【Go】獲取使用者真實的ip地址Go
- 【Go】獲取使用者真實的 ip 地址Go
- java獲取本機的ip地址Java
- jQuery獲取本機ip地址jQuery
- 如何獲取海外住宅IP地址?
- 美國ip地址如何獲取?
- 如何用ip地址連線共享印表機 用ip地址連線共享印表機的方法
- PHP獲取IP地址的方法,防止偽造IP地址注入攻擊PHP
- 獲取IP地址的途徑有哪些?要如何保護IP地址不被竊取?
- Python獲取IP地址對應的地理位置資訊!Python
- 使用Sequelize連線資料庫資料庫
- 使用JPA連線資料庫資料庫
- 使用Python連線資料庫Python資料庫
- 在IDEA中使用JDBC獲取資料庫連線時的報錯及解決辦法IdeaJDBC資料庫
- Golang使用geoip2資料庫獲取ip城市與運營商Golang資料庫
- win10正在獲取ip地址連線不上怎麼辦_win10一直顯示正在獲取網路地址的解決方法Win10
- 允許遠端連線到MySQL資料庫伺服器的步驟MySql資料庫伺服器
- 什麼是自動獲取IP地址
- 如何設定自動獲取ip地址
- 【MySQL】自定義資料庫連線池和開源資料庫連線池的使用MySql資料庫
- js根據IP地址獲取當前的省市JS
- js根據ip地址獲取省份城市的方法JS
- w10如何設定自動獲取ip地址_w10怎麼自動獲取ip地址
- 資料庫連線 系列一:laravel框架如何連線兩個資料庫(不同伺服器)資料庫Laravel框架伺服器
- 使用instantclient連線oracle資料庫clientOracle資料庫
- 使用C#連線資料庫C#資料庫
- 使用PETAPOCO連線MYSQL資料庫MySql資料庫
- 使用cmd連線mysql資料庫MySql資料庫
- 資料庫中字串連線符的使用資料庫字串
- R:連結KEGG資料庫獲取更多描述資訊資料庫
- 【資料庫】使用DBever連線人大金倉資料庫資料庫
- Oracle中獲取主機名和IP地址Oracle