no-img

ساختار فیزیکی ذخیره سازی در بانک اطلاعاتی اوراکل- قسمت دوم


م
ن
و
آرنه وب | قالب رایگان وردپرس | افزونه وردپرس

ادامه مطلب

ZIP
ساختار فیزیکی ذخیره سازی در بانک اطلاعاتی اوراکل- قسمت دوم
zip
آبان ۹, ۱۳۹۴

ساختار فیزیکی ذخیره سازی در بانک اطلاعاتی اوراکل- قسمت دوم


ساختار فیزیکی ذخیره سازی در بانک اطلاعاتی اوراکل

ساختار فیزیکی ذخیره سازی در بانک اطلاعاتی اوراکل- قسمت دوم

سایر مطالب مرتبط با این مطلب:

  1. مقاله: ساختار فیزیکی ذخیره سازی در بانک اطلاعاتی اوراکل- قسمت اول
  2. مقاله: ساختار فیزیکی ذخیره سازی در بانک اطلاعاتی اوراکل- قسمت دوم

در قسمت اول مقاله ی ساختار فیزیکی ذخیره سازی در بانک اطلاعاتی به بررسی مفاهیم مرتبط با data file ها و control file ها پرداختیم حال در این بخش مفاهیم مرتبط با redo file ها را عنوان می کنیم:

مروری بر Online Redo Log ها:


مهمترین ساختار برای بازیابی داده ها، Online redo log می باشد. که در بردارنده ی دو یا چند فایل از قبل اختصاص داده شده است که به محض وقوع تغییرات،آنها را ذخیره می کنند. online redo log تغییرات را در دیتا فایل ها ثبت می کند.

استفاده از Online Redo Log :

Online Redo Log File ها پایگاه داده را در برابر از دست رفتن داده ها محافظت می کنند. به طور ویژه بعد از failure instance که خاتمه ی یک instance از دیتابیس به دلیل مشکل سخت افزاری ، خطاهای داخلی اوراکل و یا SHUTDOWN ABORT می باشد، در واقع online redo log file ها قادر به بازیابی داده های commit شده ای هستند که هنوز در دیتا فایل نوشته نشده اند.
پایگاه داده ی اوراکل هر تراکنشی را به طور همزمان در بافر redo log می نویسد که پس از آن درonline redo log ها ثبت می شوند.محتوای این log ها تراکنش های commit نشده، داده های undoو شماها و اشیای قطعنامه های مدیریتی را شامل می شود.
پایگاه داده ی اوراکل از online redo log فقط برای ریکاوری استفاده می کند. با این حال مدیران پایگاه داده می توانند از online redo log file در رابط SQL با استفاده از ابزاری به نام LogMiner اوراکل،کوئری بگیریند. Redo log file ها یک منابعی مفید از پیشینه ی اطلاعات فعالیت های دیتابیس محسوب می شوند.

اواراکل دیتابیس چگونه اطلاعات را روی Online Redo Log ها می نویسد:

Online redo log برای یک instance از دیتابیس،redo thread نامیده می شود. در پیکربندی single-instance، تنها یک instance دسترسی به یک دیتابیس را دارد بنابراین فقط یک redo thread موجود است. در پیکربندی Oracle Real Application Clusters که به صورت مخفف به آن Oracle RAC می گویند با اینکه دو یا تعداد بیشتری از instance ها به صورت همزمان به یک دیتابیس دسترسی دارند، هر instance در واقع redo thread خودش را دارا می باشد. یک redo thread مجزا برای هر instance از رقابت برای یک مجموعه واحد از online redo log file ها جلوگیری می کند.
Oracle RAC امکان کلاستر کردن دیتابیس های اوراکل را برای ما میسر می سازد.Oracle RAC از نرم افزار Oracle clusterware برای زیرساخت اتصال سرور های متعدد استفاده می کند به طوری که آنها به عنوان یک سیستم واحد عمل می کنند.
یک Online redo log دو یا تعداد بیشتری از فایل های Online redo log را شامل می شود. دیتابیس اوراکل حداقل به دو فایل نیاز دارد برای تضمین اینکه یکی از فایل ها همیشه برای در دسترس باشد، در حالیکه دیگری آرشیو شده است (این مطلب در صورتی صادق است که دیتابیس در وضعیت ARCHIVE LOG قرار داشته باشد) .

سوییچ های Online Redo Log:

با توجه به اینکه ترجمه برخی از عبارت ها مفهوم دقیق و قابل درکی را نمی رساند قبل از پرداختن به توضیحات این بخش بهتر این است که برای راحت تر درک کردن مفاهیم به توضیح برخی از کلماتی بپردازیم که در این مقاله ترجمه نخواهند شد چرا که ترجمه این کلمات مفهوم دقیقی را بیان نمی کند و باید با مفهوم کاری این عبارت آشنا شویم و ترجمه این عبارت ها کمکی به ما نخواهد کرد:

  • Process: مکانیزمی در سیستم عامل است که می تواند یک سری از مراحل را اجرا کند. این پردازش با تقسیم کار دیتابیس اوراکل و نرم افزارهای کاربردی اوراکل به پردازش های متعدد، چندین کاربر و نرم افزار های کاربردی می توانند به طور همزمان با یک Instance واحد از دیتابیس، ازتباط برقرار کنند. که شامل سه بخش Background process یا پردازش های پشت صحنه، Oracle process یا پردازش های اوراکل و client process یا پردازش های کاربر می شود.
  • Background process: پایگاه داده ی اوراکل تنها یک online redo log file را در یک زمان برای ذخیره ی رکوردهای نوشته شده از بافر redo log، استفاده می کند. یک Online redo log file ای که پردازش های Log writer یا (LGWR) به طور فعال روی آن داده ها را می نویسد Online redo log file فعلی نامیده می شود.
  • Oracle process: پردازشی است که کدهای دیتابیس اوراکل را اجرا می کند. و Server process ها و background process ها را شامل می شود.
  • Client Process: پردازش های سطح کاربر پردازشی است که نرم افزار کاربردی یا ابزارهای کدنویسی اوراکل را اجرا می کند. وقتی کاربران از برنامه های سطح کاربر همچون sql*Plus را اجرا می کنند،سیستم عامل پردازش های کلاینت را برای اجرای نرم افزار ایجاد می کند.
  • Server process: یک پردازش اوراکل است که با پردازش های کاربر و دیتابیس اوراکل برای به انجام رساندن درخواست کاربر ارتباط برقرار می کند.sever processها با یک instance دیتابیس در ارتباط هستند اما بخشی از آن instance محسوب نمی شوند.
  • Instance: ترکیبی از system global areaیا SGA و background process ها می باشد. یک instance با یک و تنها یک دیتابیس در ارتباط است.در پیکربندی یک RAC یا کلاستر کردن برنامه های اوراکل چندین instance به طور همزمان با یک دیتابیس اوراکل در ارتباط هستند.
  • Log Writer یا LGWR: یک background process در برابر مدیریت بافر redo log و نوشتن بافر redo log روی Online redo log مسئول است. LGWR تمام ورودی های redo را که از آخرین زمانی که روی آن نوشته شده و در بافر کپی شده اند، را می نویسد.
  • Log switch:نقطه ای که LGWR نوشتن روی Active redo log فایل ها را متوقف کرده و روی Redo log file در دسترس بعدی سوییچ می کند. LGWR وقتی کهactive redo log file فعلی با redo رکوردها پر شود سوییچ کرده و یا یک سوییچ به صورت دستی را انجام می دهد.
  • Log sequence number: یک عدد است که به طور منحصر بفرد یک مجموعه ازredo record ها را در یک redo log file شناسایی می کند. وقتی که دیتابیس یک online redo log file پر می کند و روی دیگری سوییچ می کند، دیتابیس به صورت اتوماتیک به فایل جدید یک log sequence number تخصیص می دهد.
  • SGA یا System Global Area: یک گروه از ساختارهای حافظه ی به اشتراک گذاشته شده می باشد که داده ها و اطلاعات کنترلی را برای یکInstance از دیتابیس اراکل، شامل می شود.
  • Data blocks: کوچکترین واحد منطقی ذخیره سازی داده ها در پایگاه داده اوراکل می باشد. نام های دیگر در نظر گرفته شده برای آن بلاک های اوراکل و یا صفحات اوراکل می باشد.یک بلاک از داده با یک شماره خاص از بایت های فضای فیزیکی روی دیسک مرتبط می باشد.
  • Database buffer cache: بخشی از SGA است که کپی های بلوک های داده یا Data block ها را نگه می دارد تمامی پردازش های سطح کاربر به صورت همزمان با instance ای ارتباط برقرار می کنند که دسترسی به کش بافر را به اشتراک می گذارد.
  • Database writer یا DBW: یک background process است که که بافرها را در کش بافر دیتابیس یا همان Database buffer cache موجود در دیتا فایل ها می نویسد.
حتما بخوانید :  مقاله Wi-Fi Fundamentals

و اما بررسی سوییچ های Online Redo Log :

دیتابیس اوراکل در لحظه تنها از یک Online redo log file برای ذخیره ی رکوردهای نوشته شده از بافر redo log استفاده می کند. Online redo log فایلی که پردازش های LGWR برای نوشتن روی آن انجام می شود،Online redo log file فعلی نامیده می شود.
یک Log switch زمانی اتفاق می افتد که دیتابیس نوشتن روی یک online redo log file را متوقف کرده و نوشتن روی دیگری را شروع می کند. عموما، یک سوییچ زمانی اتفاق می افتد که Online redo log file فعلی پر شده ولی عمل نوشتن می بایست ادامه پیدا کند.با این حال می توانیم پیکربندی را به گونه ای انجام دهیم که log switch در فواصل منظم زمانی رخ دهد بدون توجه به اینکه Online redo log file فعلی پر شده است و عمل log switch به صورت دستی اجباری می شود.
LGWR به صورت متناوب و چرخه ای عملیات نوشتن را رویOnline redo log file ها را انجام می دهد. وقتی که Log writer یا LGWR آخرین Redo log file در دسترس را پر می کند روند نوشتن به اولین log file برگشته و چرخه مجددا اجرا می شود. تصویر زیر روند چرخشی نوشتن روی Redo log را نمایش می دهد.

تصویر1- روند چرخشی نوشتن روی Redo log

اعداد موجود در تصویر بالا بیانگر ترتیب و سلسله مراتبی می باشد که LGWR عملیات نوشتن را روی هر Online redo log file انجام می دهد. دیتابیس به هر فایل یک log sequence number جدید را اختصاص می دهد زمانی که یک log switch انجام شده و LGWR عملیات نوشتن را روی فایل آغاز کند. وقتی که دیتابیس از یک Online redo log file مجددا استفاده می کند، این فایل log sequence number در دسترس بعدی را دریافت می کند.
Online redo log file های پر شده بسته به طریقه ی آرشیو شدن برای استفاده ی مجدد در دسترس خواهند بود:

  • اگر وضعیت آرشیو شدن غیر فعال باشد،بدین معنی است که پایگاه داده در وضعیت NOARCHIVELOG قرار داشته بنابراین یک Online redo log file پر شده بعد از آن که تغییرات ثبت شده روی آن توسط DBW روی دیسک نوشته شد، در دسترس خواهد بود.
  • اگر وضعیت آرشیو فعال باشد، دیتابیس در وضعیت ARCHIVELOG قرار خواهد داشت. بتابراین یک Online redo log file پر شده پس از آنکه تغییرات روی دیتا فایل ها نوشته و فایل آرشیو شد برای LGWR دسترس می باشد.
حتما بخوانید :  مقاله ساختار سازمانی استانداری‎

در برخی شرایط، log writer ممکن است از استفاده مجدد یک Online redo log file موجود جلوگیری کند.برای مثال یک online redo log file ممکن است فعال باشد (مثلا برای ریکاوری یک instance مورد نیاز است) به جای اینکه غیر فعال باشد (به عنوان مثال برای ریکاوری instance لازم نیست).همچنین ممکن است که Online redo log file در طی پردازش ،پاک شده باشد.

کپی های چندگانه از Online Redo Log File ها:

دیتابیس اوراکل می تواند به طور خودکار دو یا تعداد بیشتری از کپی های یکسان از online redo log را در مکان های جداگانه نگهداری کند. یک گروه online redo log در واقع یک online redo log file وکپی های اضافی از آن را شامل می شود. هر کپی مشابه، یک عضو از گروه online redo log محسوب می شود.هر گروه به کمک یک شماره تعریف می شود مثلا گروه۱ ، گروه۲ و … . نگهداری اعضای متعدد از یک گروه Online redo log آن را در برابر از دست دادن redo log محافظت می کند.به طور ایده آل مکان اعضا باید روی دیسک های مجزا باشد به طوری که شکست یک دیسک موجب از بین رفتن کل online redo log نشود.
تصویر زیر نحوه ی ایجاد کپی های متعدد از online redo log file ها را نمایش می دهد.در تصویر زیر ALOG1 و BLOG2 اعضای مشابه گروه ۱ می باشند.در حالی که ALOG2 و BLOG2 اعضای یکسان گروه ۲ هستند.هر عضو از یک گروه باید اندازه ی یکسان داشته باشند.LGWR به صورت همزمان عمل نوشتن را روی اعضای گروه ۱ (ALOG1 و BLOG2 ) انجام می دهد سپس به همین ترتیب نوشتن را بر روی گروه دوم با اعضای ALOG2 و BLOG2 ادامه می دهد و مجددا بر روی گروه ۱ می نویسد و … . LGWR هرگزعمل نوشتن را به طور همزمان بر روی اعضای گروه های مختلف انجام نمی دهد.

تصویر2- نحوه ی ایجاد کپی های متعدد از online redo log file ها

Redo Log File های آرشیو شده:

یک Archived redo log file در واقع کپی یک عضو پر شده و نوشته شده از یک گروه online redo log می باشد.این فایل به عنوان بخشی از دیتابیس در نظر گرفته نمی شود،اما یک کپی آفلاین از یک Online Redo Log File ساخته شده به وسیله ی دیتابیس می باشد و در یک مکان مشخص شده توسط کاربر نوشته شده است.
Redo log file های آرشیو شده بخش مهمی از استراتژی بکاپ و ریکاوری محسوب می شود. می توان در شرایط زیر از redo log file های آرشیو شده استفاده کرد:

  • بازیابی نسخه ی پشتیبان پایگاه داده
  • آپدیت کردن Standby Database (یک کپی مستقل از یک دیتابیس می باشد که می توان از آن به هنگام وقوع یک فاجعه در یک محیط با دسترسی سطح بالا استفاده کرد)
  • به دست آوردن اطلاعات در مورد سوابق یک پایگاه داده به کمک ابزار LogMiner.این ابزار امکان گرفتن کوئری از redo log file ها را به کمک رابط SQL برای ما فراهم می آورد.
حتما بخوانید :  مقاله Wi-Fi Fundamentals_3

عبارت Archiving یا آرشیو کردن در اصل عملیاتی است برای تولید یک redo log file آرشیو شده.عمل آرشیو کردن می تواند هم به صورت دستی و هم اتوماتیک انجام شده و تنها در زمانی ممکن است که دیتابیس در وضعیت ARCHIVELOG قرار داشته باشد.
یک redo log file آرشیو شده یک redo نوشته شده و log sequence number یک عضو یکسان با گروه Online redo log را در بر می گیرد.در تصویر بالا فایل های ALOG1 و BLOG2 اعضای یکسان گروه ۱ می باشند، اگر دیتابیس در وضعیت ARCHIVELOG قرار داشته باشد و آرشیو کردن به صورت خوردکار نیز فعال باشد، سپس روند آرشیو یا ARCn یکی از آن فایل ها را آرشیو خواهد کرد.اگر فایل ALOG1 خراب شود، سپس ARCn می تواند BLOG1 را بایگانی کند. یک کپی از redo log آرشیو شده هر گروه ساخته شده که قابلیت بایگانی را برای آن فعال کردیم ، شامل می شود.

ساختار یک Online Redo Log:

Online redo log file در واقع Redo رکورد ها را در بر می گیرد. یک redo record ازیک گروه از change vector ها ساخته شده است.که هر کدام آنها تغییرات یک Data block را توصیف می کنند. برای مثال به روز رسانی حقوق و دستمزد در جدول کارمندان یک redo رکورد را می سازد که تغییرات بلاک data segment را برای جدول، undo segment data block و تراکنش های جدول یا transaction table برای undo segment ها را توصیف می کند. Redo رکوردها تمامی ابر داده را برای تغییر داراهستند، از جمله موارد زیر:

  • SCN و time stamp تغییرات
  • ID تراکنش برای تراکنشی که تغییرات ایجاد می کند
  • SCN و time stamp وقتی که تراکنش commit می شود
  • نوع عملیاتی که تغییرات را ممکن می سازد
  • نام و نوع data segment های ویرایش شده.

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



درباره نویسنده

علیرضا نجاتی 602 نوشته در آرنه وب | قالب رایگان وردپرس | افزونه وردپرس دارد . مشاهده تمام نوشته های

دیدگاه ها


پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *