الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

الجزء2:شرح مكونات الاوراكل (ORACLE ARCHITECTURE )

Featured Replies

بتاريخ:

السلام عليكم ورحمة الله وبركاته
سنتناول بهذا الدرس الجزء الثاني من مكونات قاعدة البيانات

2-ORACLE MEMORY STRUCTURE

يتكون من منطقتين تعرفان باسم :


System Global Area (SGA) : وهي ال Memory structure الخاص بال Instance الذي تم التحدث عنه مسبقا ارجع الى (الجزء الأول : شرح مكونات قاعدة البيانات) والتي هي احد اهم مكونات ال Instance وتحجز المساحة الخاصة لها من الذاكرة او تبدأ باتلعمل عند تشغيل ال Instance . وهي ذاكرة مشتركة بين الأوامر " Processes " التي تأتي لل Instance مثل SQL Query Process وايضا مشتركة بين مستخدمي Database المختلفتين ، وتعرف ايضا باسم : Shared Global Area

Program Global Area (PGA): وهي المساحة المخصصة من الذاكرة ل User Process وتحتوي على معلومات حول ال Server Process . وهي ذاكرة خاصة لأمر "Process "واحد فقط وتعرف ايضا باسم Private Global Area أو Process Global Area .

سوف يتم التطرق لاحقا ل User Process و Server Process .

شرح SYSTEM GLOBAL AREA (SGA)

جميع مستخدمي ال Database يتشاركون البيانات الموجودة في هذه المنطقة حيث يتم تخزين البيانات المشتركة من مختلف الاوامر " Database Processes " لكي تسهل عملية استخراج البيانات ، يقوم ال Oracle بحجز المساحة المخصصة له من الذاكرة عند بداية تشغيل الInstance ويقوم بتحرير المساحة عند انتهاء عمل ال Instance وتقسم الى عدة اقسام منها اقسام اساسية ضرورية ومنها اقسام اختيارية وستجد بالصورة المرفقة(2) الاقسام الاختيارية باللون الاحمر

تعتبر ال SGA ذاكرة مرنة ديناميكية اي ان باستطاعة اقسامها ان تكبر او تصغر في الحجم دون اغلاق ال Instance لأسباب مختلفة مثل كثرة العمل (كثرة الأوامر) على احد اقسامها اذ ان زيادة العمل على احد الاقسام يتطلب ذاكرة اضافية ولكن لايمكن للذاكرة العامة لل SGA ان تتخطى الحد الأعلى المحدد بالعامل " Parameter " SGA_MAX_SIZE

ملاحظة : SGA_MAX_SIZE هي احد مكونات ال Initialization Parameter File التي سوف نتطرق لها لاحقا

مثال

لمعرفة حجم ال SGA الحالي أكتب التالي في البرنامج SQLPLUS:

SHOW SGA;



ال Total System Global Area تمثل حجم ال SGA الحالي .



مثال آخر
اذا كانت الذاكرة المخصصة لل SGA حوالي 150 ميجا بايت والتي تعتبر " SGA_MAX_SIZE " وكان التوزيع المبدئي للذاكرة على الاقسام المختلفة على النحو التال
Shared Pool Area = 50 MB
Database Buffer Cache = 25 MB
Redo Log Buffer = 10 MB (منطقة ثابتة وغير متغيرة)
باقي الاقسام = 65 ميجابت (الاقسام المتغيرة)
الذاكرة الكاملة = 150 ميجا بت
وزاد ضغط العمل على Shared Pool Area بحيث ان 50 ميجابت لم تعد تكفي ، فبمقدور Shared Pool Area بأن تأخذ ذاكرة اضافية من باقي الاقسام ولكن لايمكن للذاكرة الكاملة بأن تزيد عن 150 ميجابت .

Shared Pool Area = 60MB
Database Buffer Cache = 20 MB
Redo Log Buffer = 10 MB (منطقة ثابتة وغير متغيرة)
باقي الاقسام = 60 ميجابت (الاقسام المتغيرة)
الذاكرة الكاملة = 150 ميجا بت

==================================================

الذاكرة في SGA عبارة عن وحدات متواصلة تسمى Granules وحجم ال Granules يعتمد على
SGA_MAX_SIZE .

SGA_MAX_SIZE . اصغر من 128 ميجابت واذا حجم كل ال Granule يساوي 4 ميجابت اما اذا كان حجم SGA_MAX_SIZE اكبر من 128 ميجابت اذا حجم Granule يساوي 16 ميجابت


الحد الأدنى من عدد ال Granules ﻞﻟ SGA هو ثلاث :

واحد Granule للمنطقة الثابته في SGA مثل Redo Log Buffer
واحد Granule ل Shared Pool Area
واحد Granule ل Database Buffer Cache

ملاحظة : يمكن الحصول عن بيانات عن ال Granules من V$BUFFER_POOL .
====================================================
:SHARED POOL AREA
تستخدم لحفظ أخر أو أحدث أوامر الPL/SQL و SQL وأخر البیانات(المعلومات) المستخرجة من ال
.Data Dictionary تتكون من قسمین ھما : .Data Dictionary Cache و Library Cache

انظر الصورة رقم 3

باعتبارھا منطقة مھمھ جداً فمن الممكن تغیر حجمھا داینامیكیاً (بدون اغلاق الInstance ) بحيث یتجاوزالزیادة في المساحة مساحة ال SGA المحدده بالعامل "Parameter" SGA_MAX_SIZE
یعتبر حجم ال SHARED POOL AREA محددة من قبل العامل "Parameter"
SHARED_POOL_SIZE

=================================================
مثال
لمعرفة الحجم الحالي ل Shared Pool Area اكتب التالي:

SHOW PARAMETER SHARED_POOL_SIZE



في الكمبیوتر الخاص بي الحجم ھو : 46 MB و یظھر كالتالي = 4613734


لتغییر مساحة ال Shared Pool Area داینامیكیاً اكتب التالي:

ALTER SYSTEM SET SHARED_POOL_SIZE= 64M



في حالة نجاح الأمر یظھر الجواب التالي من SQL PLUS System altered

أما في حالة عدم وجود ذاكرة أضافیة لان تضاف ل Shared Pool Area یظھر الجواب

التالي:Insufficient memory to grow:
=======================================================


:Library Cache
تحتوي على :
المنطقة رقم 1:SQL Shared Statements
المنطقة رقم 2: PL/SQL Procedures or Packages

مثال
------------------------------------------------------------------
عندما یقوم مستخدم للDatabase بطلب جملة الSQLفإن الجملة وطریقة انجاز مھامھا تخزن في المنطقة رقم1 وبذلك یسھل عملیة تكرار انجاز SQL ال "Execute"من الذاكرة بسرعة أكبر في حال تم طلب نفس الجملة من مستخدم أخر وبذلك تكون العملیة أسرع وتخفف العبئ على ما یعرف باسم Compilations وكذلك ینطبق الحال على .PL/SQL

خطوات عملیة:
الخطوة 1: یقوم المستخدم الأول بطلب جملة الSQL التالیة select * from employees;
الخطوة 2 : یقوم الServer Process بدراسة الجملة ومعرفة المراحل التي سوف یتم بعدھا
انجاز "Execute" الجملة على اعتبار أن ھذه الجملة لیست مخزنة في ال.Library Cache
الخطوة 3: یتم تخزین الجملة ومراحل انجازھا في Library Cache .
الخطوة 4: یتم اظھار البیانات الناتجة من جملةال SQL للمستخدم الأول،وبذلك تكون جملة الSQL تم انجازھا وتم تسجیل جمیع المراحل التي مرت بھا الجملة في الLibrary Cache
الخطوة 5: یقوم المستخدم الثاني بعد قلیل بكتابة نفس جملة ال SQL وهي
select * from employees ;
الخطوة 6: یقوم الServer Process بدراسة الجملة فیجد انھا موجوده في ال Library Cache
فینفذ مراحل انجاز الجملة دون دراسة الجملة باعتبار ان المراحل التي تمت لانجاز الجملة مخزنة في ذاكرة ال.Library Cache
الخطوة 7: یتم اظھار البیانات المطلوبة للمستخدم الثاني بسرعة أكبر.
=============================================



:Data Dictionary Cache
المكون الثاني لSHARED POOL AREAوالتي یحتوي على بیانات من الData Dictionary حول:.Tables, Indexes, Privileges, etc… وھي تعمل بنفس طریقة الLibrary Cache
وعندما Library Cache أوData Dictionary Cache تمتلئ منطقة یقوم الأوراكل باخراج أقدم
بیانات لم یتم تكرار طلبھا لتعوض ببیانات جدیدة وتعرف الطریقة
باسم:Least Recently Used (LRU)



:DATABASE BUFFER CACHE
یتم تخزین فیھا أحدث البیانات التى تم استخراجھا من الملفات الفیزیائیة "Data Files"،وفي حالة طلب ذات البیانات من ذات المستخدم أو من مستخدمین أخریین للDatabase یتم استخراج البیانات من الذاكرةولیس من Data Files.

ملاحظة: تتم ادارتھا ایضاً بنظام .Least Recently Used (LRU)

مثال:
---------------------------------------------------------------------------

عندما یقوم مستخدم Database بطلب بیانات محددة من الDatabase عن طریق مثلاً جملة الSQL
فإن البیانات المستخرجة من الData Files تخزن في الDatabase Buffer Cache وبذلك یسھل عملیة استخراج البیانات وبسرعة أكبر في حال تم طلب نفس الجملة من ذات المستخدم أو مستخدم أخر وبذلك یخف العبئ على ما یعرف باسم .Input/Output Load.

مرفق الرسمة التوضيحية
الخطوات المبینة على الرسم هي
الخطوة 1: یقوم المستخدم الأول بطلب بیانات من الDatabase.
الخطوة 2: یقوم الServer process بدراسة الطلب ویحضر الServer Process البیانات من
ال Data Files على اعتبار أن ھذه البیانات المطلوبة لیست مخزنة في الDatabase Buffer Cache .
الخطوة 3: یتم احضار البیانات من الData Files وتخزن البیانات في.Database Buffer Cache
الخطوة 4: یتم اظھار البیانات المطلوبة للمستخدم الأول.
الخطوة 5: یقوم مستخدم أخر بعد قلیل بطلب ذات البیانات من الDatabase .
الخطوة 6: یقوم ال Instance بدراسة الطلب فیجد ان البیانات المطلوبة تم استخراجھا قبل قلیل من الData Files ومازالت مخزنة في الDatabase Buffer Cache فیستخرج البیانات من ذاكرة الDatabase Buffer Cache دون الحاجة الى استخراج البیانات من القرص الطلب حیث توجد ملفات،Data Files ومن ثم یتم اظھار البیانات للمستخدم الثاي بسرعة أكبر وجھد أقل.

--------------------------------------------------------------

وتتكون الDatabase Buffer Cache من ثلاثة أجزاء مستقلة تسمى :Sub Cache

Default : یخزن في ھذا القسم البیانات التي لیست من ضمن الأقسام الأخرى.(Keep, Recycle) يتحكم بمساحتھا العامل "Parameter" و DB_CACHE_SIZE

Keep : تحافظ على البیانات المخزنة ولا تستبدل، ویتحكم بمساحتھا العامل "Parameter"
.DB_KEEP_CACHE_SIZE

Recycle : یتم ازالة البیانات من ھذه المنطقة عند عدم الحاجة الیھا مجدداً، ویتحكم بمساحتھا العامل
.DB_RECYCLE_CACHE_SIZE "Parameter"

ملاحظة: مساحة ال Default لا یمكن أن تكون ان تساوي صفر أبداً.

انتهى الجزء الثاني بحمد الله :)

post-13119-1161984094_thumb.jpg

post-13119-1161985644_thumb.jpg

post-13119-1162034587_thumb.jpg

post-13119-1164875837_thumb.jpg

  • بعد 4 أسابيع...
بتاريخ:

جزاك الله خيرا .. وجعله في ميزان حسناتك

بتاريخ:

شكرا


جزاك الله خيرا

  • بعد 4 شهور...
  • بعد 2 أسابيع...
بتاريخ:

سلمت يمينك على هذا المجهود الكبير وشكر الله لك ووفقك للخير في الدنيا والآخرة ....
حبيبي في الله اسامه..لماذا تأخرت في إتمام باقي السلسلة؟ أتمنى أن تكملها قريبا بإذن الله.

بتاريخ:

الاخ اسامة مش عارف شو بيدي اقول صدقني قرأت هذا الموضوع من كتب الاوراكل يونيفرستي اكثر من مرة ولم افهمها كما فهمتها من شرحك صراحة انت اروع من الرائع وتذكر ان هذا كله في ميزات حسناتك .
بس في نقطة ما فهمتها كثير وهي اقسام الDatabase Buffer Cache وهي (Default و Keep و Recycle )

وجزاك الله خيراً

  • بعد 4 أسابيع...
بتاريخ:

:rolleyes: تسلم ايديك لكن عندى طلب اريد تحميل برنامج الاوراكل.

جزاك الله كل خير.

  • بعد 4 شهور...
بتاريخ:

شكرا




جزاك الله خيرا

  • بعد 1 شهر...
بتاريخ:

تسلم ربنا يجازيك كل خير

  • بعد 10 شهور...
بتاريخ:

مشكور

  • بعد 1 شهر...
بتاريخ:

لا رجعة إن شاء الله حتى النهاية ( مشترك جديد )
الأخوة
مشكور أخي على هذا الموضوع وسلمت يداك وزادك الله علماً
لا تبخل علينا بما عندك
أخوك / عمر سلام
البلد / اليمن
[email protected]

  • بعد 4 أسابيع...
بتاريخ:

شكـــــــراً علي هذا المجهود الرائع



جزاك الله خير :rolleyes:

تم تعديل بواسطة with out name

بتاريخ:

بارك الله فيك والله يعطيك العافية
والى الامام

تم تعديل بواسطة PALI.ORACLE

  • بعد 3 أسابيع...
بتاريخ:

جزاك الله خير

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.