Oracle 內建 UTL_INADDR 套件可讓 PL/SQL 程式直接解析網域名稱、取得本機或遠端主機的 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(ip VARCHAR2 DEFAULT NULL) RETURN VARCHAR2
ip 為 IPv4 位址,若省略則回傳本機主機名稱。-- 取得本機主機名稱
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;
EXECUTE ON UTL_INADDR 權限(通常由 DBA 授予)。DBMS_NETWORK_ACL_ADMIN)可能阻擋網路呼叫,需確認網路存取控制清單設定。應用場景:應用程式記錄客戶端 IP、異地備份驗證網路連通性、動態產生連線字串等。