هم اوراکل و هم PostgreSQL از فایلهای مرتبط با کنترل برای پیگیری وضعیت پایگاه داده استفاده میکنند، اما طراحی و مسئولیتهای آنها بسیار متفاوت است.
تفاوت اصلی
- فایل کنترل اوراکل (Oracle Control File): یک جزء بزرگ و چندمنظوره که فرادادههای (متادیتا) حیاتی پایگاه داده را مدیریت میکند.
- فایل pg_control در PostgreSQL: یک فایل کوچک که عمدتاً وضعیت پایگاه داده و چکپوینتها (checkpoints) را پیگیری میکند.
۱. نقش و مسئولیتها
الف) اوراکل – فایل کنترل به عنوان نقطه مرجع مرکزی عمل میکند. این فایل جزئیاتی درباره موارد زیر را ذخیره میکند:
- فایلهای داده (Data files)
- فایلهای لاگ (Redo log files)
- تاریخچه بکآپ و ریکاوری
- جزئیات چکپوینت
این فایل به اینستنس (instance) پایگاه داده نشان میدهد که هر چیزی در کجا قرار دارد.
ب) PostgreSQL – فایل pg_control نقش محدودی دارد. این فایل موارد زیر را ذخیره میکند:
- وضعیت کلاستر پایگاه داده
- مکان آخرین چکپوینت
این فایل فرادادههای دقیق درباره فایلها را نگهداری نمیکند.
۲. مدیریت فیزیکی فایلها
الف) اوراکل – فایل کنترل به طور صریح تمام اجزای فیزیکی (فایلهای داده، فایلهای لاگ، بکآپها) را به هم مرتبط میکند. اگر یک فایل داده جابجا شود، فایل کنترل نیز باید متناسب با آن بهروزرسانی شود.
ب) PostgreSQL – مکان فایلهای داده را ذخیره نمیکند. PostgreSQL فایلها را از طریق ساختار دایرکتوری خود در سطح فایلسیستم مدیریت میکند.
۳. افزونگی (Redundancy) و دسترسیپذیری
الف) اوراکل – فایلهای کنترل معمولاً در دیسکهای مختلف کپی یا مالتیپلکس میشوند (۲ تا ۳ نسخه) تا از بروز نقطه شکست واحد (single point of failure) جلوگیری شود.
ب) PostgreSQL – تنها یک فایل pg_control وجود دارد. افزونگی به فضای ذخیرهسازی یا فایلسیستم زیرساختی (مانند RAID یا replication) بستگی دارد.
۴. فرمت و نحوه خواندن آنها
الف) اوراکل – با فرمت باینری ذخیره میشود و از طریق Viewهای پایگاه داده مانند V$CONTROLFILE قابل دسترسی است.
ب) PostgreSQL – این فایل هم باینری است، اما با استفاده از ابزار pg_controldata خوانده میشود.
۵. اطلاعات بکآپ (نسخه پشتیبان)
الف) اوراکل – فرادادههای بکآپ را ذخیره کرده و با اطلاعات recovery catalog یکپارچه میشود.
ب) PostgreSQL – تاریخچه بکآپ را ذخیره نمیکند. ابزارهای خارجی مانند pgBackRest یا موارد مشابه، بکآپها را مدیریت میکنند.
۶. چکپوینتگذاری و ریکاوری
الف) اوراکل – از شمارههای تغییر سیستم (SCN) برای پیگیری همگامسازی بین تمام فایلهای داده در طول راهاندازی (startup) و ریکاوری استفاده میکند.
ب) PostgreSQL – شناسههای تراکنش (XID) و مکان WAL (Write-Ahead Log) آخرین چکپوینت را ذخیره میکند. این موارد کمک میکنند تا مشخص شود پس از بروز خرابی (crash)، ریکاوری باید از کجا آغاز شود.
۷. تاثیر از دست دادن فایل
الف) اوراکل – از دست دادن تمام نسخههای فایل کنترل بسیار بحرانی است. ریکاوری نیازمند بازیابی از بکآپ یا بازسازی دستی فایل کنترل است.
ب) PostgreSQL – اگر pg_control از دست برود، میتوان آن را با استفاده از pg_resetwal دوباره ایجاد کرد، اما این کار پرخطر است و میتواند منجر به خرابی احتمالی دادهها شود.



