در مطلب قبلی توضیح دادیم که می توانیم اوراکل را به گونه ای پیکربندی کنیم که به ازای هر چند فرایند کلاینت، تنها یک فرایند سرور پاسخ گو باشد. اگر مطلب را به درستی به یاد داشته باشید، گفتیم در حالت shared server دیگر session memory به صورت خصوصی نیست و به صورت اشتراکی داده ها و اطلاعات چندین جلسه (session) را نگهداری می کند.

یک جلسه زمانی آغاز می شود که یک فرایند کلاینت با یک فرایند سرور ارتباط برقرار کند و تا زمانی که این اتصال قطع نشود، جلسه پابرجا خواهد بود. در حالتی که به ازای هر فرایند کلاینت، یک فرایند سرور پاسخ گو باشد، آنرا حالت dedicated server می گوییم. اما در حالتی که به ازای هر چند فرایند کلاینت، یک فرایند سرور پاسخ گو باشد، آنرا حالت shared server می گوییم.

دقت کنید که مستقل از dedicated server یا shared server بودن، به هر فرایند سرور یک PGA اختصاص داده می شود. در حالتی که سرور را به صورت shared server تنظیم کردیم، فضای session memory میان تمامی جلسه ها مشترک خواهد بود.

در این مطلب نمی خواهیم وارد جزییات شویم بلکه تنها می خواهیم نحوه پیکربندی shared server را توضیح دهیم. برای پیکربندی shared server تنها باید یک پارامتر اصلی را تنظیم کنیم. هنوز در مورد تنظیم پارامترها صحبت نکردیم و در مطلب های بعدی آموزش داده ایم. ولی در این حد بدانید که برای تنظیم پارامترها از دستور alter system set استفاده می کنیم.

Shared Server چگونه کار می کند

شکل زیر (شکل ۱) نمای کلی shared server را نشان می دهد. ابتدا فرایند کلاینت با یک فرایند به نام dispatcher ارتباط برقرار می کند. فرایند dispatcher این قابلیت را دارد که به صورت همروند (concurrency) چندین اتصال از کلاینت ها را اداره کند.

هر ارتباط کلاینت به یک virtual circuit مقید می شود. virtual circuit بخشی از حافظه به اشتراک گذاشته شده از توسط dispatcher برای درخواست ها و پاسخ های ارتباطات کلاینت است. مزیت shared server نسبت به dedicated server در کاهش منابع است به طوری که تعداد کاربرهای (کلاینت های) بیشتری قابل پاسخ گویی هستند.

فعال کردن Shared Server چگونه کار می کند

فعال کردن shared server بسیار ساده است. تنها کاری که باید انجام دهید، تنظیم پارامتری به نام shared_servers است. اگر بخواهید از حالت dedicated server استفاده کنید، پس باید مقدار این پارامتر را برابر با عدد صفر در نظر بگیرید. بنابراین برای تنظیم حالت shared server تنها باید مقدار این پارامتر عدی بزرگتر از صفر باشد.

چگونه مقدار فعلی پارامتر را بدست آوریم

برای این کار تنها دستور زیر را در محیط sqlplus اجرا کنید. هنوز توضیح ندادیم که چگونه به اوراکل متصل شویم و در چند مطلب پیشرو آموزش خواهیم داد. به هر حال شکل زیر (شکل ۲) چگونگی اجرای دستور را نشان داده است.

همانطور که در شکل زیر می بینید، مقدار آن برابر با عدد ۱ است، پس نتیجه می گیریم که در حال حاظر اوراکل در حالت shared server قرار دارد. زمانی که instance در حال راه اندازی است، به تعداد پارامتر shared_servers اقدام به ایجاد shared server می کند. پارامتر دیگر max_shared_servers نام دارد که حداکثر تعداد shared server ها را تعیین می کند.

 

توجه کنید اگر هیچ فرایند dispatcher تعیین نشده باشد، خود اوراکل یکی را ایحاد می کند، زیرا حداقل یک dispatcher باید وجود داشته باشد تا درخواست های آمده از کلاینت ها را میان shared server ها توزیع یا پخش کند.

dispatcher ها فرایندهایی هستند که وظیفه آن توزیع اتصال کلاینت ها به یک صف درخواست (request queue) است.شکل ۱ نشان می دهد که دو فرایند dispatcher و سه shared server وجود دارند. پس می تواند چندین dispatcher و چندین shared server وجود داشته باشند.

در این مطلب به فرایند dispatcher نمی پردازیم و به هر حال محبوریم که ادامه بحث shared server و به خصوص dispatcher را به بعد از آموزش مفهومی به نام listener موکول می کنیم. listener فایلی است که در سرور اوراکل قرار دارد و در حال گوش دادن به شبکه است تا درخواست کلاینت ها را تحویل بگیرد.

تفاوت های Shared Server و dedicated server

شکل زیر (شکل ۳) معماری حالت dedicated server را نشان می دهد. لطفا شکل ۳ را با شکل مقایسه کنید تا تفاوت را متوجه شوید. در حالت dedicated server فرایند dispatcher قابلیت اداره کردن چندین اتصال کلاینت به صورت همروند را دارد.

در حالت dedicated server به ازای هر اتصال کلاینت، یک فرایند سرور وجود دارد. گفتیم که shared server باعث کاهش و صرفه جویی منابع می شود پس هر زمان که تعداد اتصال های همزمان کلاینت ها زیاد بود، برای صرفه جویی در منابع (حافظه و پردازنده) در سمت اوراکل سرور، باید از حالت shared server استفاده کنیم.