
اگر بخواهیم اوراکل را از نگاه معماری بررسی کنیم، سه فایل نقش قلب سیستم را بازی میکنند: Datafile، Redolog و Control File.
هر تغییری که در دیتابیس رخ میدهد از این سه مسیر عبور میکند.
برای همین اگر ساختار و تعاملشان را خوب بفهمی، عملاً ۸۰٪ مفاهیم اساسی اوراکل را یاد گرفتهای.
در ادامه همه چیز را انسانی، روان و بدون پیچیدگی توضیح میدهم؛ طوری که حتی اگر امروز DBA باشی، در این مقاله آموزش Oracle در بخش آموزش معماری اوراکل، درک عمیقتری پیدا میکنی.
اگر بخواهیم هستهی عملکرد اوراکل را درک کنیم، باید با پروسههای پسزمینه (Background Processes) آشنا شویم؛ همان اجزایی که در پشتصحنه فعالیت میکنند و باعث میشوند اطلاعات، ایمن و سریع در اختیار کاربران قرار گیرد.
پیشنهاد می کنم این مقاله زیر رو حتما مطالعه کنی.
در این مقاله شما می خوانید
Datafile چیست؟
Datafile همان جایی است که دادهٔ واقعی ذخیره میشود؛ یعنی جدولها، ایندکسها، بلاکهای داده و هر چیزی که باید پایدار باشد وارد Datafile میشود.
چند نکته مهم که همیشه باید در ذهن داشته باشی:
- Datafile محل ذخیره نهایی داده است، نه لحظهای.
- DBWR تنها فرآیندی است که از حافظه داده را به Datafile مینویسد.
- سیستم فایلها معمولاً بزرگ هستند مثل system01.dbf یا users01.dbf.
تصور کن Datafile مثل «دفتر اصلی حسابداری» است؛ تمام دادهها انتها به این دفتر میرسند.
Redolog چیست و چرا حیاتی است؟
Redo Log یک فایل خیلی مهم است که تمام تغییرات انجامشده روی داده را ذخیره میکند، نه خود داده را.
این تغییرات در حافظه ساخته میشوند و LGWR آنها را خیلی سریع روی دیسک مینویسد.
وظایف Redolog:
- تضمین ماندگاری تراکنش (Durability)
- امکان Crash Recovery
- ثبت تمام تغییرات با SCN
اگر دیتابیس ناگهان Crash شود، Redolog همان قهرمانی است که دیتابیس را بدون از دست رفتن تراکنشهای Confirm شده بالا میآورد.
Control File چیست؟
Control File مثل «نقشهٔ مغز دیتابیس» است.
تمام اطلاعات حیاتی مثل:
- SCN آخر
- مسیر و وضعیت Datafileها
- مسیر و وضعیت Redo Logها
- تاریخچه Backup و Checkpoint
- نام دیتابیس و زمان ایجاد آن
در این فایل ذخیره میشوند.
اگر Control File نباشد، دیتابیس حتی روشن هم نمیشود!
تعامل این سه فایل چگونه است؟
حالا میرسیم به بخش طلایی؛ جایی که میفهمیم این سه جزء چطور با هم کار میکنند.
سناریو:
کاربر این دستور را اجرا میکند:
UPDATE emp SET salary = 6000 WHERE empno = 100;
COMMIT;
مراحل پردازش در اوراکل:
مرحله ۱: داده از Datafile به Buffer Cache میآید
اوراکل اول بلوک مربوط به جدول را به حافظه میآورد و در آنجا تغییر میدهد.
Datafile در این لحظه هیچ تغییری نمیکند.
مرحله ۲: تولید Redo در Redo Buffer
تمام تغییرات بلوک در Redo Buffer ثبت میشود.
مثلاً:
“Block 157 changed: salary → ۶۰۰۰”
مرحله ۳: نوشتن Redo روی Online Redo Log
LGWR این تغییرات را روی فایلهای Redolog مینویسد.
این لحظهای است که Commit سریع انجام میشود.
مرحله ۴: نوشتن دادهها روی Datafile توسط DBWR
در Checkpoint یا نیاز به خالی کردن Buffer، دادهها به Datafile منتقل میشوند.
مرحله ۵: ثبت وضعیت جدید در Control File
Control File آخرین SCN، موقعیت Log و وضعیت فایلها را آپدیت میکند.
نتیجه : دیتا در نهایت هم امن است، هم قابل بازیابی.
تعامل در Crash Recovery
فرض کن برق قطع شده و دیتابیس وسط کار بوده. وقتی دوباره بالا میآید Oracle از Control File میفهمد:
- Datafile روی SCN 100 است
- وضعیت دیتابیس روی SCN 120 بوده
پس باید SCNهای ۱۰۱ تا ۱۲۰ را از Redolog بخواند و روی Datafile اعمال کند.
این یعنی هیچ تراکنش Confirm شدهای از بین نمیرود.
سوالات متداول درباره Redolog، Control File و Datafile در اوراکل
Redolog تمام تغییراتی را که روی دادهها انجام میشود بهصورت سریالی و قابلبازیابی ثبت میکند.
این فایل باعث میشود حتی اگر دیتابیس بهطور ناگهانی Crash شود، Oracle بتواند با استفاده از Redoها تغییرات Commit شده را دوباره روی Datafile اعمال کند و دیتابیس را بدون از دست رفتن تراکنش بالا بیاورد.
این دلیل اصلی حیاتی بودن Redolog برای Crash Recovery و Media Recovery است.
Datafile محل ذخیره واقعی و دائمی دادههاست و فقط توسط DBWR هنگام Checkpoint یا فشار حافظه نوشته میشود.
اما Redolog شامل تغییرات لحظهای است و LGWR آن را در لحظه Commit یا پر شدن Redo Buffer مینویسد.
به زبان ساده:
Datafile = ذخیره نهایی
Redolog = ثبت تغییر برای تضمین ماندگاری و بازیابی
Control File تمامی متادیتای حیاتی دیتابیس مثل SCN، وضعیت Redologها، مسیر Datafileها، تاریخچه Checkpoint و اطلاعات ساختار دیتابیس را ذخیره میکند.
اگر این فایل آسیب ببیند، دیتابیس حتی Mount هم نمیشود و Oracle قادر به تشخیص وضعیت دیتابیس نخواهد بود. به همین دلیل همیشه چند نسخه Multiplex از آن نگهداری میشود.
Oracle ابتدا Control File را بررسی میکند تا آخرین SCN دیتابیس را بفهمد.
سپس SCN موجود در Datafile را میخواند و اگر پایینتر بود، Redologهای مورد نیاز را استخراج میکند.
در مرحله بعد Redoهای عقبافتاده روی Datafile اعمال میشوند تا دیتابیس به آخرین وضعیت سالم برسد. این فرآیند باعث میشود هیچ تراکنش Commit شدهای از دست نرود.
جمعبندی
- Redo Log تضمین میکند هیچ تراکنش Commit شدهای از بین نرود.
- Datafile محل ذخیره نهایی تمام دادههای اصلی است.
- Control File مغز دیتابیس است؛ همه چیز را به هم مرتبط میکند.
تعامل این سه جزء مثل سه حلقهٔ یک زنجیر است؛ نبود هر کدام = دیتابیس ناقص یا از کار افتاده.
📥 اگر سوالی داری در مورد درباره Redolog، Control File و Datafile در اوراکل داری، در بخش کامنتها بپرس.
سؤالی درباره این مقاله داری؟
اگر نکتهای در این مقاله برات مبهم بود یا خواستی بیشتر بدونی، همین حالا برام بنویس تا دقیق و صمیمی پاسخت رو بدم — مثل یه گفتوگوی واقعی 💬
برو به صفحه پرسش و پاسخ
دیدگاهتان را بنویسید