در مطلب پیکربندی شبکه – فایل tnsnames.ora در مورد فایل tnsnames.ora صحبت کردیم. این فایل در سمت کلاینت قرار دارد و اطلاعات لازم برای اتصال به پایگاه داده راه دور را در خود نگه می دارد. اوراکل اجازه می دهد تا یک پایگاه داده به صورت یک یا چند سرویس در فایلی به نام listener.ora ثبت شود و سپس در فایل tnsnames.ora می توانیم اطلاعات لازم برای اتصال به سرویس را ذخیره کنیم.

فایل listener.ora بر روی سرور اوراکل قرار دارد و بر روی شبکه و حداقل بر روی یک آدرس ip و شماره پورت در حال گوش دادن به درخواست هایی است که از سمت سرور می آیند. اگر مطالب قبلی را به یاد داشته باشد، توضیح دادیم که در سمت کلاینت، فرایند کلاینت (client process) و در سمت سرور، فرایند سرور (server process) قرار دارند که ارتباط میان کلاینت و سرور را اداره می کنند.

همچنین توضیح دادیم که اوراکل را می توانیم به دو صورت dedicated server و shared server پیکربندی کنیم. در حالت dedicated server به ازای هر فرایند کلاینت، یک فرایند سرور پاسخ گو است ولی در حالت shared server به ازای چندین فرایند کلاینت، یک فرایند سرور پاسخ گو خواهد بود.

فرمت فایل listener.ora

فایل های tnsnames.ora و listener.ora هر دو فرمت مشابهی را دارند ولی پارامترهای قابل تعریف در هر یک متفاوت است، زیرا فایل listener.ora باید پارامترهایی را تعریف کند که از این پس بر روی شبکه به درخواست های آمده از کلاینت ها گوش دهد، در حالی که فایل tnsnames.ora بر روی کلاینت ها وجود دارد تا پارامترهای لازم برای اتصال به سرور را در خود ذخیره کند.

بر روی هر سرور اوراکل تنها یک فایل listener.ora وجود دارد که حداقل شامل یک listener است. به عبارت دیگر می توانیم در فایل listener.ora بیش از یک listener را تعریف کنیم، پس هر listener باید دارای یک نام منحصر به فرد باشد. کد زیر مثالی از محتوای فایل listener.ora را نشان می دهد که در آن یک listener به نام LISTENER تعریف شده است. پس از مشخص کردن نام، عبارت DESCRIPTION و سپس ADDRESS_LIST تعیین شده است.

در بخش ADDRESS_LIST تعیین می کنیم که این سرور بر روی کدام آدرس ها و پورت ها به درخواست های ورودی گوش دهد. برای هذ ADDRESS یک PROTOCOL، یک HOST و یک PORT تعیین می شود. در مطلب tnsnames.ora توضیح دادیم که PROTOCOL معمول برای ارتباط بین کلاینت و سرور، tcp است. HOST نیز آدرس یا نام fqdn را که سرور روی آن گوش می دهد را تعیین می کند. PORT نیز شماره پورت را تعیین می کند که به صورت پیشفرض عدد ۱۵۲۱ است.

در کد بالا دو ADDRESS تعیین شده است. اولی بر روی پروتکل tcp و دومی بر روی پروتکل ipc تنظیم شده اند. tcp پروتکل شبکه و مبتنی بر tcp/ip است که ارتباط میان سرور و کلاینت را کنترل می کند. برای ارتباط میان دو سیستم از طریق شبکه از سوکت ها استفاده می شود.دو نوع سوکت های tcp و udp دو نوع از سوکت هایی هستند که ارتباط میان دو فرایند را بر روی کلاینت و سرور برقرار می کنند. بنابراین با توجه به پروتکل tcp، فرایند کلاینت برای ارتباط با فرایند سرور از طریق سوکت های tcp ارتباط برقرار می کند.

پروتکل ipc زمانی استفاده می شود که می خواهیم به صورت محلی به پایگاه داده وصل بشویم. به عبارت دیگر در حالتی که من و شما داریم از اوراکل برای یادگیری استفاده می کنیم، کلاینت و سرور هر دو بر روی یک ماشین هستند، پس نیازی به ارتباط از طریق شبکه نیست. در این حالت از ipc یا inter-process communication برای ارتباط میان پردازش ها استفاده می شود.