Artarad-Oracle-Data-Guard

تغییر حجم REDOLOG ها در سناریو DATAGUARD

تغییر حجم REDOLOG ها در سناریو DATAGUARD
مقدمه:
یکی از موارد مهم در راستای بهبود کارایی تنظیم مناسب تعداد و حجم Online RedoLog ها می باشد. این مورد هموارد در ابتدای راه اندازی پایگاه داده اوراکل قابل محاسبه دقیق نمی باشد و با عمر پایگاه داده و افزایش و کاهش میزان تغییرات، باید این فایل ها نیز تغییر کنند. در این مستند سعی می شود تغییر حجم این فایل ها در سناریو گارد بدون قطعی پایگاه داده به صورت گام به گام بررسی و اجرا گردد.


نام پایگاه داده primary : srprim
نام پایگاه داده standby : srps
مراحل اجرایی :
ابتدا با دستورات زیر در پایگاه داده Primary و Standby مشخصات اولیه Online Redolog های آنها را پیدا می کنیم.

PRIMARY

SQL> select status,instance_name,database_role from v$database,v$instance;

STATUS INSTANCE_NAME DATABASE_ROLE

—— ————- ————–

OPEN srprim PRIMARY

SQL> select group#,sum(bytes/1024/1024)”Size in MB” from v$log group by group#;

GROUP# Size in MB

——- ———-

۱ ۵۰

۲ ۵۰

۳ ۵۰

SQL> select group#,sum(bytes/1024/1024)”Size in MB” from v$standby_log group by group#;

GROUP# Size in MB

——- ———-

۶ ۵۰

۴ ۵۰

۵ ۵۰

۷ ۵۰

STANDBY

SQL> select status,instance_name,database_role from v$database,v$Instance;

STATUS INSTANCE_NAME DATABASE_ROLE

——- ————– —————-

MOUNTED srps PHYSICAL STANDBY

SQL> select group#, sum(bytes/1024/1024)”Size in MB” from v$loggroup by group#;

GROUP# Size in MB

—— ————-

۱ ۵۰

۲ ۵۰

۳ ۵۰

SQL> select group#,sum(bytes/1024/1024)”Size in MB” from v$standby_log group by group#;

GROUP# Size in MB

—— ———-

۴ ۵۰

۵ ۵۰

۶ ۵۰

۷ ۵۰

در ابتدا باید پارامتر Standby_file_management در سرور Standby را از auto به manual تغییر دهیم.

SQL> show parameter standby_file_management

NAME TYPE VALUE

———————– ——- ——-

standby_file_management string AUTO

SQL>

SQL>

SQL> alter system set standby_file_management=manual;

System altered.

SQL> show parameter standby_file_management

NAME TYPE VALUE

———————– ——- ——-

standby_file_management string MANUAL

در سرور Primary ابتدا Online Redolog های INACTIVE را drop کرده و مجدد با حجم مورد نظر می سازیم

SQL> select group#,status from v$log;

GROUP# STATUS

—— ——————-

۱ INACTIVE

۲ INACTIVE

۳ CURRENT

SQL> alter database drop logfile group 1;

Database altered.

SQL> alter database add logfile group 1 size 100M;

Database altered.

SQL> select group#,status from v$log;

GROUP# STATUS

—— ——-

۱ UNUSED

۲ INACTIVE

۳ CURRENT

SQL> alter database drop logfile group 2;

Database altered.

SQL> alter database add logfile group 2 size 100M;

Database altered.

SQL>

SQL> select group#,status from v$log;

GROUP# STATUS

—— ——-

۱ UNUSED

۲ UNUSED

۳ CURRENT

در این مرحله با اجرا دستور زیر گروه شماره ۳ را مجبور به سوئیچ کرده تا آن هم یه Inactive تغییر وضیعت داده تا بتوانیم این گروه را نیز تغییر حجم دهیم.

SQL> alter system archive log current;

SQL> select group#,status from v$log;

GROUP# STATUS

—— ——-

۱ ACTIVE

۲ CURRENT

۳ INACTIVE

SQL> alter database drop logfile group 3;

Database altered.

SQL> alter database add logfile group 3 size 100M;

Database altered.

حالا نوبت Standby Redolog ها می رسد ( این نوع log ها تازمانی که Primary تغییر وضعیت به Standby نداده باشد در سرور Primary کارایی ندارند)

SQL> select group#,sum(bytes/1024/1024)”size in MB” from v$standby_log group by group#;

GROUP# size in MB

—— ————-

۶ ۵۰

۴ ۵۰

۵ ۵۰

۷ ۵۰

SQL> select group#,status from v$standby_log;

GROUP# STATUS

—— ————

۴ UNASSIGNED

۵ UNASSIGNED

۶ UNASSIGNED

۷ UNASSIGNED

همه آنهایی که UNASSIGNED هستند را می توان طبق مراحل زیر تغییر حجم داد.

 

SQL> alter database drop standby logfile group 4;

Database altered.

SQL> alter database add standby logfile group 4 size 100M;

Database altered.

SQL> select group#,sum(bytes/1024/1024)”size in MB” from v$standby_log group by group#;

GROUP# size in MB

—— ————-

۶ ۱۰۰

۴ ۱۰۰

۵ ۱۰۰

۷ ۱۰۰

خوب در این مرحله تمام redolog ها در سرور PRIMARY تغییر کردند حال نوبت سرور Standby می باشد.

STANDBY:

SQL> select group#,status from v$log;

GROUP# STATUS

—— ——————-

۱ CURRENT

۳ CLEARING

۲ CLEARING

درابتدا سرور Standby را مد ریکاوری خارج کرده و Redolog هایی که وضعیت Clearing دارند را طبق مراحل زیر تغییر حجم می دهیم.

SQL> alter database recover managed standby database cancel;

SQL> alter database clear logfile group 2;

Database altered.

SQL> alter database drop logfile group 2;

Database altered.

SQL> alter database add logfile group 2 size 100M;

Database altered.

SQL> alter database clear logfile group 3;

Database altered.

SQL> alter database drop logfile group 3;

Database altered.

SQL> alter database add logfile group 3 size 100M;

Database altered.

حال برای گروه ۱ که در وضعیت Current می باشد در سرور Primary یک آرشیو لاگ به وسیله دستور زیر ایجاد کرده و سپس همان مراحلی که برای گروه های ۲و ۳ انجام دادیم نیز برای گروه ۱ اجرا می گردد.

<<PRIMARY>>

SQL> alter system archive log current;

<<STANDBY>>

SQL> select group#,sum(bytes/1024/1024)”size in MB” from v$log group by group#;

GROUP# size in MB

—— ————-

۱ ۱۰۰

۲ ۱۰۰

۳ ۱۰۰

حال نوبت SRL( Standby Redo log) ها در سرور Standby می باشد.

SQL> select group#,sum(bytes/1024/1024)”size in MB” from v$standby_log group by group#;

GROUP# size in MB

—— ————–

۴ ۵۰

۵ ۵۰

۶ ۵۰

۷ ۵۰

SQL> select group#,status from v$standby_log;

GROUP# STATUS

—— ————-

۴ ACTIVE

۵ UNASSIGNED

۶ UNASSIGNED

۷ UNASSIGNED

برای گروهی که در وضعیت Active می باشد ابتدا باید Clear گردد و سپس drop ومجدد با حجم مورد نظر ساخته شود.
گروه هایی که در وضعیت UNASSIGEND می باشند فقط باید Drop و مجدد با حجم مورد نظر ساخته شوند.

 

SQL> select group#,sum(bytes/1024/1024)”size in MB” from v$log group by group#;

GROUP# size in MB

—— ————

۱ ۱۰۰

۲ ۱۰۰

۳ ۱۰۰

SQL> select group#,sum(bytes/1024/1024)”size in MB” from v$standby_log group by group#;

GROUP# size in MB

—— ————-

۴ ۱۰۰

۵ ۱۰۰

۶ ۱۰۰

۷ ۱۰۰

در ادامه با دستورات زیر در سرورStandby، آن را به مدار بر می گردانیم.

 

SQL> alter system set standby_file_management=auto;

System altered.

SQL> alter database recover managed standby database disconnect from session using current logfile;

Database altered.

در انتها با دستورات زیر از صحت عملکرد سرورها مطمئن می شویم

PRIMARY:

SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

————–

۷۰

STANDBY:

SQL> select max(sequence#) from v$archived_log where applied=’YES’;

MAX(SEQUENCE#)

————–

۷۰

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

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

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