Naudodamiesi sys_context funkcija galime gauti dabartinės sesijos pagrindinio kompiuterio pavadinimą ir IP adresą SQL> pasirinkite sys_context('userenv','host') iš dual; SYS_CONTEXT('USERENV','HOST') -------------------------------------------------------------- DARBO GRUPĖ\IBM-L3YMBNP SQL> pasirinkite sys_context('userenv','ip_address') iš dual; SYS_CONTEXT('USERENV','IP_ADDRESS') -----------------------------------------------------------
127.0.0.1 Pagal sys_context galime gauti tik dabartinės sesijos informaciją, ką daryti, jei norime gauti kitas sesijas? Šiuo metu mes naudojame utl_inaddr pakuotę, kad ją gautume SQL> pasirinkite utl_inaddr.get_host_address('IBM-L3YMBNP') iš dual; UTL_INADDR. GET_HOST_ADDRESS(toliau – IBM-L3YMBNP) -------------------------------------------------------------------
9.181.142.152 Taip pat galime gauti IP adresus SINA ir kitoms svetainėms SQL> pasirinkite utl_inaddr.get_host_address('www.sina.com.cn') iš dvigubo; UTL_INADDR. GET_HOST_ADDRESS('WWW. SINA.COM. CN') ---------------------------------------------------------------------
218.30.108.55 Principas yra pirmiausia gauti domeno vardo rezoliucijos serverį (resolv.conf), o tada nustatyti sprendimo tvarką pagal host.conf failą, nes numatytasis yra teikti pirmenybę pagrindinio kompiuterio failo skiriamajai gebai, o tada toliau skaityti /etc/hosts failą. Jei pagrindinio kompiuterio failas turi analizės ryšį, jis pateikia informaciją; Jei jo nėra, toliau paprašykite DNS serverio gauti skiriamosios gebos adresą, o jei negali, įvyks klaida SQL> pasirinkite utl_inaddr.get_host_address('www.a.com') iš dvigubo; pasirinkite utl_inaddr.get_host_address('www.a.com') iš dvigubo * KLAIDA yra 1 eilutėje:
ORA-29257: 未知的主机 www.a.com
ORA-06512: 在"SYS.UTL_INADDR", line 35
ORA-06512: 在"SYS.UTL_INADDR", line 40
ORA-06512: 在line 1 Tai iš esmės viskas. |