Folosind sys_context funcție putem obține numele gazdei și adresa IP a sesiunii curente SQL> selectează sys_context('userenv', 'host') din dual; SYS_CONTEXT('USERENV','HOST') -------------------------------------------------------------- WORKGROUP\IBM-L3YMBNP SQL> selectează sys_context('userenv','ip_address') din dual; SYS_CONTEXT('USERENV','IP_ADDRESS') -----------------------------------------------------------
127.0.0.1 Prin sys_context putem obține doar informațiile sesiunii curente, ce se întâmplă dacă vrem să obținem alte sesiuni? În acest moment, folosim utl_inaddr rucsac pentru a-l obține SQL> selectează utl_inaddr.get_host_address('IBM-L3YMBNP') din dual; UTL_INADDR. GET_HOST_ADDRESS('IBM-L3YMBNP') -------------------------------------------------------------------
9.181.142.152 Și putem obține și IP-uri pentru SINA și alte site-uri web SQL> selectează utl_inaddr.get_host_address('www.sina.com.cn') din dual; UTL_INADDR. GET_HOST_ADDRESS('WWW. SINA.COM. CN') ---------------------------------------------------------------------
218.30.108.55 Principiul este să obții mai întâi serverul de rezoluție a numelor de domeniu (resolv.conf), apoi să determini ordinea rezoluției pe baza fișierului host.conf, deoarece implicit este să prioritizezi rezoluția fișierului hosts, apoi să continui să citești fișierul /etc/hosts. Dacă fișierul gazdei are o relație de analiză, returnează informații; Dacă nu există, continuă să ceri serverului DNS să obțină adresa de rezolvare, iar dacă nu poate, va apărea o eroare SQL> selectează utl_inaddr.get_host_address('www.a.com') din dual; selectează utl_inaddr.get_host_address('www.a.com') din dual * ERROR este pe linia 1:
ORA-29257: 未知的主机 www.a.com
ORA-06512: 在"SYS.UTL_INADDR", line 35
ORA-06512: 在"SYS.UTL_INADDR", line 40
ORA-06512: 在line 1 Cam asta e tot. |