ESC را فشار دهید تا بسته شود

زمیوس آموزش، یادگیری و سرگرمی

پروسه‌های پس‌زمینه (Background Processes) در اوراکل چه وظیفه‌ای دارند؟

اوراکل (Oracle Database) یکی از قدرتمندترین سامانه‌های پایگاه داده در دنیاست که بخش‌های مختلف آن برای پایداری و سرعت بالا طراحی شده‌اند.

اگر بخواهیم هسته‌ی عملکرد اوراکل را درک کنیم، باید با پروسه‌های پس‌زمینه (Background Processes) آشنا شویم؛ همان اجزایی که در پشت‌صحنه فعالیت می‌کنند و باعث می‌شوند اطلاعات، ایمن و سریع در اختیار کاربران قرار گیرد.

در واقع، هر Instance از دیتابیس اوراکل از سه جزء اصلی تشکیل می‌شود:

  1. حافظه اشتراکی (SGA)
  2. پروسه‌های پس‌زمینه
  3. فایل‌های داده و کنترل (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 داری، در بخش کامنت‌ها بپرس.

میثم راد

من یه برنامه نویسم که حسابی با دیتابیس اوراکل رفیقم! از اونایی ام که تا چیزی رو کامل نفهمم،ول کن نیستم، یادگرفتن برام مثل بازیه، و نوشتن اینجا کمک می کنه تا چیزایی که یاد گرفتم رو با بقیه به شریک بشم، با هم پیشرفت کنیم.

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

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