instance به مجموعه‌ای از فرایندهای پس زمینه (background process) یا نخ های پس زمینه (background thread) و یک فضای اشتراکی حافظه اصلی (shared memory area) گفته می شود. فضای اشتراکی بخشی از حافظه اصلی است که میان این فرایندها (یا نخ ها) به صورت اشتراکی در حال استفاده شدن است. شکل ۱ معماری کلی اوراکل را از زمان ایجاد ارتباط از سمت کلاینت تا رسیدن پاسخ از سمت سرور نشان می دهد. کلاینت از طریق یک برنامه، مانند SQL*PLUS با سرور ارتباط برقرار می کند ولی این ارتباط چگونه انجام می شود؟

در کنار فرایندهای پس زمینه که بخشی از instance هستند، دو فرایند دیگر به نام client process و server process وجود دارند. کلاینت و سرور از طریق این دو فرایند با یکدیگر ارتباط برقرار می کنند و از این پس درخواست ها از سمت کلاینت به فرایند سرور و از فرایند سرور به instance ارسال می شود.

بنابراین instance از دو بخش فرایندهای پس زمینه و فضای SGA تشکیل شده است و هر یک از فرایندهای پس زمینه یک وظیفه را بر عهده دارد. توجه کنید که بسته به اینکه اوراکل را چگونه پیکربندی می کنیم، تعداد این فرایندها متغیر خواهد بود.

سناریو پیاده‌سازی RAC

در این دوره و در این سطح شما هنوز با مفهوم RAC آشنایی ندارید ولی لازم است تا برای درک بهتر مفاهیم پایگاه داده و instance مفهوم RAC را بیان کنیم. RAC مخفف Real Application Cluster است و اجازه می‌دهد تا از چندین سرور اوراکل یک کلاستر ایجاد کنیم. در مفاهیم علوم کامپیوتر و بدون توجه به کاربرد آن‌ها در اوراکل، از کلاسترها برای پیاده‌سازی شبکه ای از کامپیوترها استفاده می‌شود که این کامپیوترها درون شبکه بایکدیگر کار می‌کنند تا یک هدف مشترک را انجام دهند.

در کنار اینکه کلاستر امکان ترکیب چندین کامپیوتر را می دهد، تضمینی خواهد بود تا سرویس مورد نظر به صورت دائمی در حال انجام شدن باشد. همین مطالب درباره اوراکل نیز صدق می کند. کلاستر اوراکل مجموعه‌ای از کامپیوترها هستند که بر روی هر کدام از آن‌ها اوراکل نصب شده است و هر کدام دارای instance خاص خودش است. گفتیم که instance مجموعه‌ای فرایندهای پس زمینه است که در یک فضای اشتراکی حافظه اصلی در حال اجرا شدن هستند. نکته مهم در مورد کلاستر اوراکل این است که تمامی این فرایندها که روی ماشین‌های متفاوت هستند، همگی به یک پایگاه داده دسترسی دارند. گفتیم که پایگاه داده شامل یک تا چندین فایل فیزیکی است که دیتا فایل گفته می‌شود.

بنابراین در حالت کلاستر اوراکل، تمامی فرایندهایی که روی ماشین‌های مختلف در حال اجرا شدن هستند، همگی به یک پایگاه داده دسترسی خواهند داشت. توجه کنید که، فرایندهای پس زمینه هستند که به این فایل‌ها دسترسی دارند و هر تفییری که باید انجام گیرد از طریق همین فرایندهای پس زمینه صورت خواهد گرفت.

بنابراین با دو مفهوم پایگاه داده و instance آشنا شدیم. پایگاه داده شامل فایل های فیزیکی است که ساختار فیزیکی را تشکیل می دهند. در مقابل ساختار فیزیکی، ساختار منطقی (logical structure) وجود دارد. زمانی که کلاینت به سرور اوراکل وصل شد، دستورهایی که اجرا می کند، اجرای این دستورها توسط فرایندهای پس زمینه اداره می شوند. این فرایندهای پس زمینه بخشی از instance هستند که درون یک فضای اشتراکی حافظه اصلی در حال اجرا شدن می باشند.

به طور کلی زمانی که instance اوراکل شروع به اجرا شدن می کند، یک فضا به نام System Global Area یا SGA ایجاد می شود. SGA درون و بخشی از حافظه اصلی است که میان تمامی فرایندهای پس زمینه به صورت اشتراکی خواهد بود. خود SGA از بخش های مختلفی تشکیل شده است که در مطلب خاص خودش توضیح داده ایم.

معماری اوراکل – ساختار حافظه از دید اوراکل

در معماری اوراکل ساختار حافظه اصلی از دو ناحیه PGA و SGA تشکیل شده است. SGA فضای اشتراکی است که میان تمامی فرایندهای پس زمینه و فرایندهای سرور (server process) به صورت اشتراکی است. اوراکل این دو ساختار حافظه را برای اهداف خاصی ایجاد می کند.

۱ – System Global Area یا SGA

SGA گروهی از نواحی و ساختارهایی است که میان تمامی فرایندهای پس زمینه به صورت اشتراکی هستند. SGA شامل داده ها و اطاعات کنترلی است که توسط instance اوراکل استفاده می شوند.

همانطور که در شکل های ۱ و ۲ می بینید خود SGA از مولفه ها یا ساختارهای متفاوتی تشکیل شده است که هر یک برای هدفی خاص ایجاد می شوند. به طور مثال database buffer cache که آنرا buffer cache نیز می گویند برای کَش کردن داده ها استفاده می شود.

۲ – Program Global Area یا PGA

مطابق شکل زیر (شکل ۲) در حالی که SGA میان تمامی فرایندهای پس زمینه و فرایندهای سرور مشترک است، PGA به صورت اشتراکی نیست، بلکه هر فرایند پس زمینه یا سرور، PGA خودش را دارد.

در مطالب بعدی خواهیم گفت که چگونه توسط ابزاری به نام dbca (یا database administrator assistance) یک پایگاه داده را ایجاد کنید. به هر حال زمانی که اوراکل را نصب می کنید و یا توسط dbca یک پایگاه داده ایجاد می کنید، باید فضای SGA را تعیین کنید.

زمانی که instance آغاز می شود، اوراکل فضای SGA را ایجاد می کند ولی در مورد PGA اینطور نیست. هر زمان که یک فرایند پس زمینه یا فرایند سرور اجرا شود، اوراکل یک PGA خاص را به تنها به همان فرایند اعطا می کند.

پیش از این گفتیم که فرایند سرور واسطه میان فرایند کلاینت و instance اوراکل است پس هر زمان که درخواستی به سرور اوراکل برسد، ابتدا یک فرایند سرور ایجاد می شود و از همین رو اوراکل PGA را به فرایند سرور اعطا می کند. اما فرایندهای پس زمینه همانطور که از نام آنها مشخص است در پس زمینه در حال گوش کردن هستند تا در صورت ورود یک درخواست، به درخواست ورودی پاسخ دهند.

بنابراین می توانیم مطالب را اینطور گزیده چینی (جمع بندی) کنیم که:

۱ – instance اوراکل متشکل از فرایندهای پس زمینه و فضای SGA است.

۲ – فرایندهای سرور مسئول پاسخ گویی به کلاینت های اوراکل هستند. درخواست کلاینت مانند یک دستور DML (مثل update) از طریق فرایند سرور به instance اوراکل ارسال می شود.

۳ – هر زمان که یک فرایند سرور ایجاد شود، یک PGA به آن اعطا می شود.

۴ –  PGA ها فضا های غیر اشتراکی هستند ولی SGA فضای اشتراکی میان تمامی فرایندهای پس زمینه و فرایندهای سرور هستند.

۵ – زمانی که instance اوراکل آغاز (start) شود، فضای SGA نیز ایجاد خواهد شد. فضای SGA از ساختارهای مختلف تشکیل شده است.