به Database Buffer Cache که اصطلاحا Buffer Cache می نامند ناحیه ای از حافظه می باشد که وظیفه اش یک کپی از data block هایی که از data file خوانده می شود را در این ناحیه ذخیره و نگه داری می کند.

یک Buffer در واقع آدرس و محل حافظه اصلی می باشد که برای مدیریت محتوای موقت data block ها که بصورت در حال حاضر یا اخیرا در این ناحیه وجود دارد ذخیره می شود، استفاده می شود.

همه کاربران می توانند که بصورت همزمان به Database Instance متصل شوند و از فضای Buffer Cache اشتراک گذاری شده دسترسی کامل داشته باشد.

اهداف استفاده از Database Buffer Cache

دیتابیس اوراکل از buffer cache به اهداف به شرح ذیل استفاده می کند:

Optimize Physical I/O – بهینه سازی داده های ورودی و خروجی در دیسک

دیتابیس data block هایی که در cache می باشد را در دیسک data file بروز رسانی می کند و metadata هایی که در مورد تغییراتی که در redo log buffer ذخیره می شود در دیسک data file دیتابیس بروز رسانی می شود.

بعد از دستور Commit ، دیتابیس داده هایی که در redo buffer می باشد را به online redo log می ریزد اما این عملیات خیلی سریع اتفاق نمی افتد درعوض پروسسی به نام Database Writer (DBW) که از پروسس های Background Processes می باشد داده ها را از redo buffer به data file دیسک منتقل می کند.

نگه داری شرایط دسترسی مداوم به data block هایی که در buffer cache هستند و انتقال به ندرت و کم data block های buffer cache به دیسک

زمانی در دیتابیس امکان Smart Flash Cache (flash cache) فعال باشد قسمتی از buffer  می تواند در کنار flash cache قرار بگیرد که باعت می شود فضای buffer cache اضافه شود و این فضای زیاد با استفاده Flash Device به عنوان flash cache باعث افزایش مداوم دسترسی به buffer cache داشته باشید و باعت افزایش caching performance در buffer cache که دسترسی مداوم و طولانی در این ناحیه داشته باشید و کمتر داده ها را از دیسک فراخوانی کنید.

برای این موضوع در فایل parameter file  و از طریق تنظیمات initialization parameter پارامترهای DB_FLASH_CACHE_FILE و DB_FLASH_CACHE_SIZE برای تنظیمات و پیکربندی Flash Buffer می باشد.

نکته : قابلیت و امکان Database Smart Flash فقط در سیستم عامل های Solaris و Oracle Linux امکان پذیر می باشد.

حالت های Buffer

یک بافر می تواند چندین حالت اجرا به شرح ذیل داشته باشد:

Unused  

این بافر برای استفاده در دسترس می باشد چون در حال حاضر از نوع بافر هرگز استفاده نشده یا درحال حاضر در حال استفاده نمی باشد. این نوع بافر براحتی برای استفاده دیتابیس مورد استفاده قرار می گیرد.

Clean

این نوع بافر خیلی زود مورد استفاده قرار گرفته و محتوا و data block  در این ناحیه قرار دارد مناسب خواندن می باشد. دیتا و data block  در این ناحیه قرار دارد در دیسک  data file قرار دارد  و نیازی به عملیات Checkpoint نمی باشد.

دیتابیس می تواند این data block  ها را مجدد از آن استفاده کند و نشانه بگیرد برای استفاده مجدد در صورت درخواست از کاربران.

Dirty

این بافر دارای دیتا و data block هایی می باشد که تغییر کرده و این تغییرات در دیتابیس انتقال داده نشده است. دیتابیس قبلا استفاده مجدد از این data block بایستی عملیات Checkpoint را به جهت انتقال به دیسک data file انجام دهد.

سطح دسترسی buffer دو حالت دارد : Pinned و Free(UnPinned)

بافرهایی که حالت Pinned باشد، Session کاربر در حال استفاده از آن دیتا بافر می باشد و در این حالت سایر Session ها امکان تغییر در این داده ها در بافر نیست.

حالت های Buffer

زمانی که یک کاربر درخواست داده یه دیتابیس را ارسال می کند ، دیتابیس اوراکل از Buffer داده ها و Data Block هایی که متناسب با درخواست را بازیابی می کند.

حالت های buffer به شرح ذیل می باشد :

حالت جاری Current Mode

این حالت داده ها و data block در حال حاضر در buffer cache باشد را بازیابی و فراخوانی می کند. برای مثال اگر تراکنشی بروز رسانی دو رکورد انجام نشود و uncommited شود در حالت دو رکورد بصورت data block در buffer cache بصورت جاری در اختیار قرار می گیرد. دیتابیس از این حالت برای مدت زمان هایی که بصورت مکرر و دائمی دستورات بروز رسانی و تغییرات در داده دارید کاربرد دارد.

حالت استوار Consistent Mode

این حالت یک نسخه از داده ها و data block که قابل خواندن هستند را بازیابی می کند دیتا قابل خواندن یعنی دیتایی که در دیسک هم وجود دارد . این بازیابی داده می تواند Undo data باشد.

اگر تراکنشی بروز رسانی دو رکورد انجام نشود و uncommited شود و اگر یک کوئری در session های جداگانه درخواست داده باشد در این حالت دیتابیس از undo data و خواندن دیتا و data block هایی که حالت استوار و دیتایی که دردیسک وجود دارد استفاده می کند.

توضیحات بیشتر در مورد این مطب : Memory Management