منبع اصلی نوشتار زیر در این لینک قرار دارد

مدیریت Redo Log ها و Archive Log ها – بخش اول

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



برچسب ها : , ,