Archive Redo Log ها فایل هایی در اوراکل هستند که هرگونه تغییر در سطح پایگاه داده مانند پاک شدن مقداری از ستون salary از جدول employees را بصورت رکورد هایی در خود نگه می دارند. به محض commit شدن تراکنش ها، اینگونه تغییرات از محلی از حافظه SGA که Redo Log Buffer نام دارد توسط فرایند پس زمینه LGWR که مخفف LOG WRITER است تغییرات را در فایل ها می نویسند.پس از نوشتن روی اولین فایل و پر شدن آن فرایند به سراغ دومین فایل و پس از پرشدن آن به سراغ فایل بعدی و همین طور تا اینکه به سراغ آخرین فایل می رسد.اگر پایگاه داده در حالت NOARCHIVELOG باشد پس از پرشدن آخرین فایل به سراغ اولین فایل رفته و اطلاعات جدید را روی اطلاعات قبلی می نویسد ولی اگر پایگاه داده در حالت ARCHIVELOG باشد پس از پر شدن فایل یک پشتیبان از آن روی رسانه ای مانند دیسک یا نوار گرفته می شود. فایل های Redo Log ها در زمان Recovery بانک اطلاعاتی بسیار مهم و ضروری هستند. اولین کاری که باید انجام دهیم بررسی اینکه آیا پایگاه داده در حالت ARCHIVELOG است یا نه؟ برای اینکار از query زیر view ی به نام v$database بدست می آوریم.
;select log_mode from v$database
LOG_MODE
————
NOARCHIVELOG
و یا اینکه دستور زیر را در محیط SQL*PLUS اجرا کنید.
show parameter log_archive_start
NAME TYPE VALUE
———————————— ———– ——–
log_archive_start boolean FALSE
و یا از دستور زیر استفاده کنید :
;archive log list
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 34
Current log sequence 35
از خروجی های بالا معلوم می شود که پایگاه داده در حالت ARCHIVELOG نیست یا به عبارتی در حالت NOARCHIVELOG قرار دارد. برای تغییر از این حالت به حالت ARCHIVELOG یا به عبارتی فعال کردن Archiving ابتدا با کاربر SYS یا مجوز SYSDBA به سیستم لاگین کنید.
conn sys/passwd as sysdba
و سپس پایگاه داده را Shutdown کنید. پس از اینکار باید پایگاه داده را با حالت mount فعال یا startup کنید. mount حالتی است که فقط مدیران برای مدیریت پایگاه داده حق ورود دارند و کاربران معمولی در صورتی که پایگاه داده در این حالت باشد نمی توانند به آن لاگین کنند.
shutdown
startup mount
پس از اجرای دو دستور بالا باید دستور زیر را اجرا کنید.
;alter database archivelog
پس از تغییر در پیکربندی پایگاه داده با اجرای دستور بالا، با دستور زیر پایگاه داده را به حالت open می بریم که دیگر کاربران نیز می توانند به آن دسترسی داشته باشند.
;alter database open
پس از اجرای دستور های بالا، اجرای query زیر نشان می دهد که پایگاه داده در حالت ARCHIVELOG قرار دارد.
;select log_mode from v$database
LOG_MODE
————
ARCHIVELOG
اما آرشیو گیری خودکار هنوز غیر فعال است پس لازم است دستور های زیر را اجرا کنید.
;alter system archive log current
;alter system archive log all
یا اینکه از دستور زیر استفاده کنید.
;alter system archive log start
پس از اجرای هر یک از دستور های بالا اگر دستور زیر را اجرا کنید خواهید دید که Automatic Archival فعال است.
;archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 34
Next log sequence to archive 35
Current log sequence 35
استفاده از دستور های بالا برای فعال کردن Automatic Archival بصورت موقتی است و پس از Restart شدن پایگاه داده دوباره غیر فعال می شود. برای تنظیم دائمی آن باید از دستور زیر استفاده کنید.
;alter system set log_archive_start=TRUE scope=spfile
برای غیر فعال کردن حالت ARCHIVELOG باید دستور های زیر را اجرا کنید. اولین دستور مقدار پارامتر log_archive_start را از TRUE به FALSE تغییر می دهد. دومین دستور از فایل spfile یک پارامتر فایل می سازد. این فایل در زمان startup شدن توسط پایگاه داده خوانده می شود. سومین دستور هم پایگاه داده را shutdown می کند.
;alter system set log_archive_start=False scope=spfile
;create pfile from spfile
shutdown
سپس پایگاه داده را mount و با دستور alter database پیکربندی آنرا تغییر دهید.
;startup mount excluseve
;alter database noarchivelog
;alter database open