
اوراکل (Oracle Database) یکی از قدرتمندترین سامانههای پایگاه داده در دنیاست که بخشهای مختلف آن برای پایداری و سرعت بالا طراحی شدهاند.
اگر بخواهیم هستهی عملکرد اوراکل را درک کنیم، باید با پروسههای پسزمینه (Background Processes) آشنا شویم؛ همان اجزایی که در پشتصحنه فعالیت میکنند و باعث میشوند اطلاعات، ایمن و سریع در اختیار کاربران قرار گیرد.
در واقع، هر Instance از دیتابیس اوراکل از سه جزء اصلی تشکیل میشود:
- حافظه اشتراکی (SGA)
- پروسههای پسزمینه
- فایلهای داده و کنترل (Data Files و Control Files)
در این مقاله آموزش Oracle در بخش آموزش معماری اوراکل، میخواهیم دقیقا بررسی کنیم که هر کدام از این پروسههای پسزمینه چه وظیفهای دارند و چرا شناخت آنها برای هر DBA ضروری است.
در Oracle، ابزار این کار معمولاً Sequence است؛ اما زمانی که از دستورهای جمعی مثل Bulk Insert یا Parallel Insert استفاده میکنیم، گاهی مشاهده میشود که Sequence مقادیر تکراری یا نامرتب تولید میکند.
پیشنهاد می کنم این مقاله زیر رو حتما مطالعه کنی.
در این مقاله شما می خوانید
هر زمان Oracle Database راهاندازی میشود، مجموعهای از فرآیندهای سیستمی بهطور خودکار فعال میشوند که وظیفهی اصلیشان مدیریت حافظه، هماهنگی نوشتن دادهها در دیسک، مدیریت تراکنشها، و بازیابی در زمان بروز خطا است.
بدون این فرآیندها دیتابیس عملاً هیچ کاری نمیتواند انجام دهد.
⚙️ معرفی مهمترین پروسههای پسزمینه در اوراکل
DBWn – Database Writer
وظیفه: نوشتن بلوکهای تغییریافته از حافظهی SGA (Buffer Cache) به فایلهای داده بر روی دیسک.
هر زمانی کاربر دادهای را تغییر میدهد، بلوک مربوطه در حافظه «Dirty» میشود.
DBWn با توجه به سیاست حافظه یا در زمان Checkpoint، آن بلوک را به دیسک منتقل میکند تا تغییرات دائمی شوند.
مثال واقعی:
UPDATE employees SET salary = salary * 1.05 WHERE department_id = 50;
پس از اجرای این دستور، دادهها هنوز در حافظه هستند و DBWn آنها را در زمان مناسب به دیسک مینویسد.
LGWR – Log Writer
وظیفه: نوشتن اطلاعات مربوط به تراکنشها در فایلهای Redo Log برای تضمین پایداری دادهها.
در هر COMMIT، LGWR فعال میشود تا اطمینان حاصل شود که اطلاعات تراکنش در Redo Log ثبت شده.
به این ترتیب حتی اگر سرور از کار بیفتد، با فایلهای redo میتوان دادهها را بازیابی کرد.
مثال:
COMMIT;
در این مرحله LGWR بلادرنگ دادههای redo را مینویسد تا تراکنش نهایی شود.
CKPT – Checkpoint Process
وظیفه: هماهنگسازی عملیات بین DBWn و LGWR، ثبت شمارهی SCN در فایلهای کنترل و datafile header.
هدفی که CKPT دنبال میکند، کاهش زمان بازیابی در صورت وقوع crash است.
هر زمان checkpoint اتفاق میافتد، CKPT تطبیق بین حافظه و فایلها را برقرار کرده و وضعیت پایگاه داده را ثبت میکند.
SMON – System Monitor
وظیفه: بازیابی دیتابیس در صورت بروز crash و پاکسازی temporary segments بیاستفاده.
هنگامی که سیستم بهطور ناگهانی خاموش یا متوقف شود، SMON وارد عمل شده و تغییرات commit شده را بازیابی میکند تا دیتابیس به حالت پایدار برگردد.
مثال واقعی:
اگر برق سرور قطع شود، در زمان راهاندازی مجدد SMON با استفاده از اطلاعات redo logs، دیتابیس را به آخرین وضعیت امن بازمیگرداند.
PMON – Process Monitor
وظیفه: نظارت بر پروسههای کاربر و آزادسازی منابعی که پس از قطع ارتباط، بلااستفاده ماندهاند.
مثلاً اگر کاربر اتصالش را ناگهانی ببندد، PMON حافظه و لاکهای مربوط به آن session را آزاد میکند تا منابع آزاد شوند.
ARCn – Archiver
وظیفه: در حالت ARCHIVELOG، مسئول ذخیرهی نسخههای آرشیوی از redo log ها برای بازیابیهای آتی است.
با فعالسازی حالت آرشیو، ARCn تضمین میکند که پس از پر شدن هر redo log، یک کپی از آن در مسیر آرشیو ذخیره شود.
مثال:
ALTER DATABASE ARCHIVELOG;
پس از فعال شدن، ARCn فایلهایی مانند زیر ایجاد میکند:
/u01/app/oracle/archive/arch_20251115_001.arc
این پروسهها معمولاً در دیتابیسهای Enterprise یا RAC فعال هستند و هرکدام بخشی از اکوسیستم مدیریت کارایی، مانیتورینگ، یا ارتباطات را برعهده دارند.
| نام پروسه | وظیفه اصلی | نمونه عملی یا توضیح |
|---|---|---|
| DBWn | نوشتن دادههای تغییر یافته از حافظه به دیسک | پس از اجرای دستور UPDATE، بلوکهای «Dirty» از حافظه به Datafile منتقل میشوند. |
| LGWR | ثبت دادههای تراکنشها در فایلهای Redo Log | در زمان COMMIT، اطلاعات redo در فایلها نوشته میشود تا بازیابی ممکن باشد. |
| SMON | بازیابی دیتابیس پس از Crash و پاکسازی Segmentهای موقت | پس از خاموشی ناگهانی، در Startup اجرا میشود تا ساختار دیتابیس را بازیابی کند. |
| PMON | آزادسازی منابع Session پس از قطع ارتباط کاربر | پس از قطع اتصال، PMON حافظه و قفلهای مرتبط را آزاد میکند. |
برای فهم بهتر، رابطهی بین فرآیندها را خلاصه میکنیم:
| رویداد | فرآیندهای فعال | توضیح |
|---|---|---|
| اجرای DML | DBWn + LGWR | ثبت تغییرات در حافظه و نوشتن آنها در فایلهای داده و redo log. |
| اجرای COMMIT | LGWR | نوشتن تراکنش در redo log و تأیید نهایی عملیات برای کاربر. |
| اجرای checkpoint | CKPT + DBWn | بهروزرسانی شماره SCN در فایل کنترل و نوشتن دادههای تغییر یافته به دیسک. |
| وقوع crash | SMON | بازیابی instance از آخرین checkpoint و پاکسازی بخشهای ناقص. |
| قطع ارتباط | PMON | آزادسازی منابع، قفلها و session پس از قطع اتصال کاربر. |
| حالت آرشیو فعال | ARCn | ساخت نسخههای آرشیوی از فایلهای redo log برای پشتیبانگیری و بازیابی. |
🔍 مشاهدهی فرآیندهای فعال اوراکل در سیستم عامل لینوکس
در محیط لینوکس میتوان لیست پروسههای پسزمینه فعال اوراکل را مشاهده کرد:
ps -ef | grep ora_
نمونه خروجی:
oracle 1205 1 0 10:15 ? 00:00:00 ora_pmon_ORCL
oracle 1207 1 0 10:15 ? 00:00:00 ora_smon_ORCL
oracle 1209 1 0 10:15 ? 00:00:00 ora_dbw0_ORCL
oracle 1211 1 0 10:15 ? 00:00:00 ora_lgwr_ORCL
oracle 1213 1 0 10:15 ? 00:00:00 ora_ckpt_ORCL
oracle 1215 1 0 10:15 ? 00:00:00 ora_arc0_ORCL
هرکدام از این نامها نشاندهندهی یک background process فعال در instance مربوطه هستند.
سوالات متداول درباره پروسه های پس زمینه (Background Processes) در اوراکل
پروسههای پسزمینه (Background Processes) در اوراکل مجموعهای از فرآیندهای سیستمی هستند که بعد از اجرای دیتابیس بهطور خودکار فعال میشوند تا نوشتن دادهها، ثبت تراکنشها، بازیابی در زمان خرابی، و کنترل حافظه را مدیریت کنند.
بدون این فرایندها دیتابیس نمیتواند داده را ایمن و پایدار نگه دارد؛ بهعنوان مثال DBWn برای نوشتن داده روی دیسک، LGWR برای ثبت redo log، و SMON برای بازیابی پس از crash استفاده میشود.
DBWn وظیفه دارد دادههای تغییر یافته را از حافظه (Buffer Cache) به فایلهای داده در دیسک بنویسد؛ در حالی که LGWR اطلاعات مربوط به تراکنشها را در redo log files مینویسد تا تغییرات قابل بازیابی باشند. خلاصه تفاوت:
- DBWn → نوشتن دادههای واقعی در datafiles
- LGWR → نوشتن ثبت تراکنشها در redo logs
این دو با هم تضمین میکنند که هیچ تغییر از بین نرود حتی اگر سیستم دچار crash شود.
SMON (System Monitor) مسئول بازیابی دیتابیس در زمان راهاندازی بعد از crash است و بخشهایی مانند Temporary Segments را پاک میکند.
PMON (Process Monitor) مسئول مدیریت sessionهای کاربر است؛
اگر یک ارتباط قطع شود، PMON منابع مرتبط با آن کاربر را آزاد میکند تا حافظه و لاکها بیهوده مصرف نشوند.
به زبان ساده: SMON پایداری دیتابیس را تضمین میکند، PMON سلامت اتصال کاربران را حفظ میکند.
ARCn یا Archiver فقط زمانی فعال میشود که دیتابیس در حالت ARCHIVELOG باشد.
وظیفه آن گرفتن کپی از redo log ها بعد از پر شدنشان است تا بتوان در آینده از آنها برای Backup و Recovery استفاده کرد.
این فرآیند یکی از پایههای استراتژی بازیابی اوراکل است و برای محیطهای عملیاتی همیشه توصیه میشود فعال باشد.
جمعبندی
پروسههای پسزمینه در اوراکل، مانند موتور مخفی یک ماشین پیچیده عمل میکنند.
حتی اگر کاربران هیچوقت آنها را مستقیم نبینند، هر عملکرد حیاتی دیتابیس وابسته به آنهاست:
- DBWn تضمینکنندهی صحت نوشتههای داده
- LGWR حافظ transactions
- CKPT و SMON حافظ سازگاری و بازیابی
- PMON حافظ سلامت sessionها
- ARCn حافظ پشتیبان redo logs
شناخت این فرآیندها برای هر مدیر پایگاه داده (DBA) حیاتی است، زیرا در تمامی حوزهها از Performance Tuning گرفته تا Troubleshooting نقش مستقیم دارند.
📥 اگر سوالی داری در مورد پروسههای پسزمینه در Oracle داری، در بخش کامنتها بپرس.

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