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

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

Data File چیست

دیتا فایل ها، فایل های فیزیکی هستند که بر روی دیسک ذخیره شده اند، که شامل تمامی داده های پایگاه داده می شوند. فرایند پس زمینه DBWn محتوای ناحیه buffer cache را که شامل داده‌های تغییر کرده است را بر اساس مکانیزم هایی، بر روی دیتا فایل ها می نویسد. پایگاه داده اوراکل به صورت منطقی به چندین tablespace تقسیم بندی شده است، که هر tablespace می تواند شامل چندین دیتا فایل باشد ولی هر دیتا فایل تنها متعلق به یک tablespace خواهد بود.

دیتا فایل ها داده ها را بر روی بلاک های دیسک نگهداری می کنند. به عبارت دیگر اوراکل با ایجاد tablespace ها و اضافه نمودن دیتا فایل به tablespace، فضایی را از دیسک و برای نگهداری داده ها فراهم می کند. داده ها بر روی دیتا فایل ها به صورت دائمی و ماندگار ذخیره می شوند.

اندازه یک tablespace معادل با مجموع اندازه دیتا فایل های انتساب داده شده به آن است. هر زمان که فضای tablespace رو به اتمام باشد، می توانیم یک دیتا فایل جدید را اضافه کنیم و به این معنی است که بخشی از فضای دیسک را برای tablespace رزرو (reserve) می کنیم.

 

فرایند DBWn

buffer cache فضایی است که داده ها در آن قرار دارند و تغییرات بر روی داده ها اول در این فضا اعمال می شود و سپس به پایگاه داده و به طبع به دیتا فایل ها اعمال می شوند. buffer cache یک بافر در فضای SGA است که data block ها را در خود نگه می دارد. فرض کنید دستور select اجرا می شود و این باعث واکشی data block هایی می شود که حاوی داده های مورد نظر هستند. سپس data block ها درون buffer cache کپی می شوند.

حال کاربر دیگری یکی از دستورهای DML را اجرا می کند، اولا اوراکل اول در buffer cache ه دنبال داده ها می گردد. اگر داده ها وجود داشت، تغییر بر روی آنها اعمال می شود. اما اگر داده ها وجود نداشت، اول آنها را از دیتا فایل ها می خواند و درون buffer cache کپی می کند و در نهایت تغییر را اعمال خواهد کرد. پس از اعمال تغییرات، اورکل بر اساس مکانیزم هایی، بلاک های تغییر کرده در فضای buffer cache را به درون دیتا فایل ها کپی می کند.

پیش از این توضیح دادیم که میان کپی شدن بلاک های buffer cache به درون دیتا فایل اتفاق دیگری می افتد و آن ثبت لاگ تغییرات است.

توجه کنید که buffer cache شامل data block ها (و به اختصار بلاک ها) است. به عبارت دیگر با هر بار خواندن از یا نوشتن بر روی دیتا فایل ها، بلاک هایی به روی buffer cache نوشته و یا از روی آن خوانده می شوند. data block کوچکترین واحدی است که اوراکل می خواند.

انواع بلاک های Buffer Cache

DBWn یکی از فرایندهای پس زمینه در instance اوراکل است که وظیفه آن نوشتن بلاک های buffer cache به درون دیتا فایل ها است. بر این اساس و به طور کلی سه دسته بلاک در فضای buffer cache وجود دارند که عباتند از:

۱ – بلاک های آزاد buffer cache یا free blocks

۲ – بلاک های در حال حاظر در حال استفاده یا pinned blocks

۳ – بلاک های کثیف که اشاره به داده های تغییر کرده دارد یا dirty blocks

فرض کنید کاربر درخواست update کردن یک سری داده را دارد. برای پاسخ به این درخواست فرایند DBWn داده ها را در صورت عدم وجود در فضای buffer cache از دیتا فایل می خواند و در بلاک های آزاد (free block) قرار می دهد. سپس عملیات update بر روی آنها انجام می شود، پس بلاک ها به صورت pinned block قرار می گیرند. پس از اتمام تغییرات بلاک ها به صورت تغییر کرده یا dirty block خواهند بود. شکل زیر نمای کلی DBWn را نشان می دهد

فرایند DBWn چه موقع داده ها را در دیتا فایل می نویسد

۱ – زمانی که دستور shutdown اجرا شود.

۲ – هر سه ثانیه یک بار.

۳ – زمانی که یک chekpoint رخ دهد. مفهوم checkpoint در پایگاه داده ها به این معنی است که هرگاه بلاک های dirty در buffer cache به دیتا فایل ها کپی شود، یک checkpoint رخ می دهد. در اوراکل فرایند CKPT مسئول انجام checkpoint است.

۴ – بلاک های آزاد برای داده های جدید لازم باشد.

۵ – در زمان اجرای برخی از دستورهای DDL (یا Data Defination Language)