
الطريقة الأولى : بإستخدام الباكج UTL_INADDR
باستخدام الفانكشن GET_HOST_ADDRESS يرجع الIP للHost Name وكما في المثال الأتي:
CODE
SELECT UTL_INADDR.get_host_address('omarcom') FROM dual;
UTL_INADDR.GET_HOST_ADDRESS('BART')
--------------------------------------------------------------------------------
172.16.1.201
هذه الجملة رجعت ال 172.16.1.201 لل omarcom
وإذا تم حذف الHost Name من جملة الSelect فإن الIP الذي يرجع هو الخاص بالسيرفر وكما في المثال الاتي :
CODE
SELECT UTL_INADDR.get_host_address from dual;
GET_HOST_ADDRESS
--------------------------------------------------------------------------------
172.16.1.100
واذا تم وضع Host Name خاطئ أو غير موجود فإنه يخرج المسج الاتية Host Unkown وكا في المثال الاتي
CODE
SELECT UTL_INADDR.get_host_address('omar') from dual;
SELECT UTL_INADDR.get_host_address('omar') from dual
*
ERROR at line 1:
ORA-29257: host omar unknown
ORA-06512: at "SYS.UTL_INADDR", line 19
ORA-06512: at "SYS.UTL_INADDR", line 40
ORA-06512: at line 1
وعلى عكس الفانكشن GET_HOST_ADDRESS فإن الفانكشنGET_HOST_NAME ترجع الHost Name للIP المحدد وكما في المثال الأتي :
CODE
SELECT UTL_INADDR.get_host_name('172.16.1.201') FROM dual;
UTL_INADDR.get_host_name('172.16.1.201')
--------------------------------------------------------------------------------
omarcom
وبالمثل اذا لم يتم وضع الIP في حملة الselect فإن الجملة ترجع الHost Name التابع للسيرفر وكما في المثال الاتي :
CODE
SELECT UTL_INADDR.get_host_name FROM dual;
GET_HOST_NAME
--------------------------------------------------------------------------------
omarcom
وبالمثل أيضاً اذا تم وضع IP خاطئ او غير موجود فإنه يخرج مسج Host Unkown وما في المثال الاتي
CODE
SELECT UTL_INADDR.get_host_name('1.1.1.1') FROM dual;
SELECT UTL_INADDR.get_host_name('1.1.1.1') FROM dual
*
ERROR at line 1:
ORA-29257: host 1.1.1.1 unknown
ORA-06512: at "SYS.UTL_INADDR", line 4
ORA-06512: at "SYS.UTL_INADDR", line 35
ORA-06512: at line 1
************************************************** ******************
الطريقة الثانية : باستخدام الفانكشن SYS_CONTEXT
واليك المثال الاتي ليتضح عمل هذه الفنكشن لإرجاع الIP الHost Name :
CODE
SELECT SYS_CONTEXT('USERENV','HOST') FROM dual;
SYS_CONTEXT('USERENV','HOST')
--------------------------------------------------------------------
omarcom
SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') FROM dual;
SYS_CONTEXT('USERENV','IP_ADDRESS')
--------------------------------------------------------------------
192.168.2.3
SELECT SYS_CONTEXT('USERENV','SERVER_HOST') FROM dual;
SYS_CONTEXT('USERENV','SERVER_HOST')
--------------------------------------------------------------------
omarreyati
المثال الأول : يرجع الHost Name لجهازClient
المثال الثاني : يرجع الIP لجهاز Client
المثال الثالث : يرجه الHost Name الخاص بالسيرفر
************************************************** *******************
الطريقة الثالثة : باستخدام V$INSTANCE
هذه الView تحتوي على الكثير من الColumn ومن ضمنها HOST_NAME واليك المثال الاتي لاسترجاع الHost Name :
CODE
SELECT host_name FROM v$instance;
HOST_NAME
------------------------------------------------
omarcom
************************************************** *********************
الطريقة الرابعة : باستخدام V$SESSION
واليك المثال الاتي :
CODE
SELECT terminal, machine FROM v$session WHERE username = 'omar';
TERMINAL MACHINE
------------------------------ ----------------------------------------------------
MARGE ORACLE-BASE\MARGE
************************************************** ***********************
هذه ما لدي من طرق لمعرفة الIP والHost Name سواءً للClient والServer
فإن أخطأت فمني ومن الشيطان وإن أصابت فمن الله تعالى
ولا تنسونا من صالح دعاءكم
وشكراً
wad_altayeb