首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle UTL_INADDR 套件:取得主機名稱與 IP 位址實務教學

     編輯:Oracle 資料庫相關知識

Oracle 內建 UTL_INADDR 套件可讓 PL/SQL 程式直接解析網域名稱、取得本機或遠端主機的 IP 位址與主機名稱,適用於網路監控、日誌記錄、應用整合等情境。本文整理常用函數語法與實戰範例。

一、UTL_INADDR.GET_HOST_ADDRESS:取得 IP 位址

語法:UTL_INADDR.GET_HOST_ADDRESS(host VARCHAR2 DEFAULT NULL) RETURN VARCHAR2

  • 參數 host 為網域名稱或主機名稱,若省略則回傳資料庫伺服器本機 IP。
  • 查詢失敗會拋出例外,建議搭配 BEGIN...EXCEPTION 處理。

常用範例

-- 查詢外部網域 IP
SELECT UTL_INADDR.GET_HOST_ADDRESS('www.qq.com') FROM DUAL;

-- 查詢資料庫伺服器本機 IP
SELECT UTL_INADDR.GET_HOST_ADDRESS() FROM DUAL;

-- 查詢區域網路主機名稱對應 IP
SELECT UTL_INADDR.GET_HOST_ADDRESS('yuechu') FROM DUAL;

二、UTL_INADDR.GET_HOST_NAME:取得主機名稱

語法:UTL_INADDR.GET_HOST_NAME(ip VARCHAR2 DEFAULT NULL) RETURN VARCHAR2

  • 參數 ip 為 IPv4 位址,若省略則回傳本機主機名稱。
  • 支援區網與 Internet 環境的反向解析。

常用範例

-- 取得本機主機名稱
SELECT UTL_INADDR.GET_HOST_NAME() FROM DUAL;

-- 區域網路 IP 反向解析主機名稱
SELECT UTL_INADDR.GET_HOST_NAME('192.168.0.156') FROM DUAL;

-- Internet IP 反向解析網域名稱
SELECT UTL_INADDR.GET_HOST_NAME('219.153.50.84') FROM DUAL;

三、權限與注意事項

  1. 執行用戶需具備 EXECUTE ON UTL_INADDR 權限(通常由 DBA 授予)。
  2. 資料庫伺服器需能連線 DNS 伺服器,否則外部網域解析會失敗。
  3. 防火牆或 ACL(DBMS_NETWORK_ACL_ADMIN)可能阻擋網路呼叫,需確認網路存取控制清單設定。
  4. 頻繁呼叫建議快取結果,避免重複 DNS 查詢影響效能。
應用場景:應用程式記錄客戶端 IP、異地備份驗證網路連通性、動態產生連線字串等。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved