نشر بواسطة : Obay Salah , November 19, 2024

عند تكوين قاعدة البيانات للعمل في وضع Shared Server، يتم إنشاء نوعين من ﺍلProcess هم (Shared Servers & Dispatchers)،

كما يتم إنشاء عدد من الصفوف على ذاكرة SGA، ويتم تعديل سلوك المستمع (Listener) للعمل مع ﺍلShared Server.


ﻭﺍلDispatcher  هو Process يعمل على TCP PORT ومسجلة لدى ﺍلListener.




 لاحظ معي خطوات ﺍلShared Server Process، فعندما يطلب ﺍلProcess User  الاتصال بالInstance، لا يقوم المستمع بإنشاء Server Process كما هو الحال في ﺍل Dedicate Server، بل يحتفظ المستمع بقائمة ﺍلDispatchers المتاحين، حيث يستقبل أحدهم ذلك الطلب ويمرره إلى ﺍلRequest Queue، مع العلم أن هذه القائمة تحتوي على جميع الطلبات التي يتلقاها جميع ﺍلDispatchers، مع العلم أن هذه الفئة يتم إنشاؤها تلقائيًا عند تكوين ﺍلInstance  في وضع Shared Server ويتم تحديد عدد ﺍلDispatchers الذين يتم إنشاؤهم أيضًا.

بعد وصول الطلبات إلى ﺍلRequest Queue، تستمر جميع ﺍلShared Servers في مراقبة هذه القائمة التي تحتوي على مجموعة من الطلبات.

في اللحظة التي ينتهي فيها أحد  ﺍلShared Server من خدمة أحد الطلبات، يتم ترشيح طلب آخر من ﺍلRequest Queue  إلى ﺍلShared Server Process ،

بعد أن تنتهي ﺍل Shared server Process من معالجة الطلب، تمررها إلى ﺍلResponse Queue. الحقيقة هي أن هناك مجموعة من ﺍلResponse Queue

بمعدل واحد لكل Dispatcher . يُمرر ﺍلShared Server النتيجة إلى ﺍلResponse Queue الخاص ﺒﺎلDispatcher الذي تلقى الطلب أولاً.

بعد ذلك، يتم تمرير الاستجابة أو النتيجة من  ﺍلResponse Queue إلى ﺍلDispatchers ، والذي بدوره يرسل الاستجابة إلى الUser Process.


The SGA and PGA:



 لاحظ معي الفرق في تكوين الذاكرة لكل من ﺍلDedicated Server والShared Server حيث أن كل User Process  تتصل بقاعدة البيانات لها process Server خاص بها

كما هو الحال في  ﺍلDedicated Server حيث يتم تخزين ﺍلUser Session Data وهي مصدر المعلومات المستخدم في الـ PGA وهي الذاكرة الخاصة بكل Server Process 

وكذلك Cursor state ولكن بما أن الأمر كان مختلف في ﺍلShared Server فقد تم تخزين هذه المعلومات في الـ SGA وهي الذاكرة العامة

حيث تتم المشاركة ولكن لاحظ أن معلومات ﺍلStack Space في الحالتين يتم تخزينها في الـ PGA لأنها تحتوي على المتغيرات المحلية ﻟل.Process.


Configure Oracle Shared Server:

  لتهيئة الInstance  للعمل على وضع Shared Server فقط، نحتاج إلى تهيئة بعض التغييرات على  Parameter File ،

أما ﺍلListener ، فيتم تهيئة تلقائياً من خلال Dynamic Instance Registration.

هناك متغير واحد فقط يجب تهيئته، وهو متغير DISPATCHERS، أما بقية المتغيرات فهي اختيارية:

1- SHARED_SERVERS:

هذا المتغير لتحديد عدد ﺍلSHARED SERVER التي يتم إنشاؤها في لحظة بدء تشغيل الInstance في وضع Shared Server. وهو متغير تلقائي، أي أنه يمكنك تغيير قيمته دون إغلاق قاعدة البيانات. يحتفظ هذا المتغير في الأصل بالقيمة 0 طالما أن Dispatcher يساوي NULL.

2- DISPATCHERS:

يستخدم هذا المتغير لتحديد عدد ﺍلDispatcher الذين يتم إنشاؤهم عند بدء تشغيل ﺍلInstance  في وضع Shared Server وفقاً ﺍلPROTOCOL المحدد.

في الأصل يأخذ القيمة NULL ويجب تهيئة هذا المتغير لكي تعمل قاعدة البيانات في وضع Shared Server.

3- MAX_SHARED_SERVERS:

هذا المتغير لتحديد الحد الأقصى لعدد Shared Servers التي يمكن تشغيلها، وهو متغير تلقائي يسمح لـ Shared Server بزيادة عدد Shared Servers عند الحاجة.

4- SHARED_SERVER_SESSION:

هذا المتغير لتحديد عدد ﺍلSessions  التي يمكن فتحها في نفس الوقت على Shared Server.

الآن لنفترض أننا نريد تغيير تشغيل قاعدة البيانات من Dedicated Server إلى Shared Server:

1- تهيئة متغير DISPATCHERS.

ALTER SYSTEM SET DISPATCHERS='(PROTOCOL=TCP)(DISPATCHERS=50)' scope=spfile;


2- قم بتهيئة المتغير SHARED_SERVERS، هذا المتغير اختياري.

ALTER SYSTEM SET SHARED_SERVERS=10 scope=spfile;


3- أغلق قاعدة البيانات ثم افتحها.

SHUTDOWN IMMEDIATE;
STARTUP;


4- تأكد من أن ﺍلDISPATCHERS ﻭﺍلSHARED SERVERS. تعمل.

SELECT PROGRAM FROM V$PROCESS;

لاحظ معي أنك ستجد (D000، D001، D002) وهكذا.

 

5- ﺍﻟﺘﺄﻜﺩ ﻤﻥ ﺘﺴﺠﻴل ﺍلDISPATCHERS ﻓﻲ ﺍلLISTENER.

LSNRCTL SERVICE



علامات : Database

يمكن ان يعجبك ايضا


Comments

لايوجد تعليق حتى الان