artarad-oracle-database

بازسازی پایگاه‌داده Standby با استفاده از پشتیبان Incremental

بازسازی پایگاه‌داده Standby با استفاده از پشتیبان Incremental

در این مبحث به تشریح نحوه همسان‌سازی پایگاه‌داده Standby از طریق یک پشتیبان Incremental می‌پردازیم که طبق سناریوی زیر اجرا می‌شود:
• پایگاه‌داده Standby دارای تاخیر قابل ملاحظه‌ای در مقایسه با پایگاه‌داده اصلی می‌باشد، که در این وضعیت کپی و اعمال آرشیولاگ‌ها از پایگاه داده اصلی به دلیل اعمال تراکنش‌های Commit شده و Commit نشده و به تبع آن Rollback تراکنش‌های Commit نشده زمان‌بر خواهد بود. با استفاده از پشتیبان Incremental به دلیل اعمال تراکنش های Commit شده می توان به مراتب سریع‌تر از روش اعمال آرشیولاگ ها پایگاه داده Standby را بازسازی نمود.


• در دسترس نبودن برخی آرشیولاگ های پایگاه داده اصلی که بر روی Standby اعمال نشده است. در این شرایط می توان با ایجاد پشتیبان Incremental از پایگاه داده اصلی که دارای آخرین تغییرات از زمان بازیابی پایگاه داده Standby است و اعمال این پشتیبان بر پایگاه داده Standby نسبت به همسان سازی Standby با پایگاه داده اصلی اقدام نمود.

مرور کلی:
• Redo Transport بر روی پایگاه داده اصلی متوقف شود.
• انجام سوییچ لاگ بر روی پایگاه داده برای برخی آرشیولاگ های پایگاه داده اصلی که به Standby ارسال نشده است.
• تغییرنام آرشیولاگ های جدید تولید شده در پایگاه داده اصلی به جهت شبیه‌سازی شرایط
• ریستارت Redo Transport – دریافت خطای برطرف نشدن شکاف به علت Logهای از دست رفته
• ساخت کنترل فایل برای پایگاه داده Standby روی پایگاه داده اصلی
• تهیه پشتیبان Incremental روی پایگاه داده اصلی از #SCN پایگاه داده Standby
• انتقال پشتیبان به پایگاه داده Standby و Catalog نمودن آن با RMAN
• سوار نمودن پایگاه داده Standby به کنترل فایل جدید پایگاه داده Standby
• لغو Managed Recovery پایگاه داده Standby و اعمال پشتیبان Incremental به پایگاه داده Standby
• فعال نمودن Managed Recovery پایگاه داده Standby

پیاده‌سازی و اجرا:
بررسی توالی لحظه‌ای Log پایگاه داده اصلی

PRI>archive log list;

Database log mode Archive Mode

Automatic archival Enabled

Archive destination USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence 40

Next log sequence to archive 42

Current log sequence 42

بررسی صحت ارسال تمامی آرشیولاگ های گذشته به پایگاه داده Standby

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

MAX(SEQUENCE#)

————–

۴۱

توقف Redo Transport از پایگاه داده اصلی (dg01)

DGMGRL> show database dg01

Database – dg01

Role: PRIMARY

Intended State: TRANSPORT-ON

Instance(s):

dg01

Database Status:

SUCCESS

DGMGRL> edit database dg01 set state=’Transport-off’;

Succeeded.

DGMGRL> show database dg01

Database – dg01

Role: PRIMARY

Intended State: TRANSPORT-OFF

Instance(s):

dg01

Database Status:

SUCCESS

سوییچ لاگ روی پایگاه داده اصلی

PRI>alter system switch logfile;

alter system switch logfile;

alter system switch logfile;

archive log list;

Database log mode Archive Mode

Automatic archival Enabled

Archive destination USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence 44

Next log sequence to archive 45

Current log sequence 46

اطمینان از عدم ارسال لاگ های پس از توالی #۴۲ به پایگاه داده Standby

SBY> select max(sequence#) from v$archived_log

MAX(SEQUENCE#)

————–

۴۲

اطلاع از نام آرشیولاگ های تولید شده روی پایگاه داده اصلی که به پایگاه داده Standby منتقل شده است

PRI>set line 500

col name for a40

select sequence#, name from v$archived_log where sequence# > 42;

SEQUENCE# NAME

———- —————————————-

۴۳ /u01/app/oracle/flash_recovery_area/DG01

/archivelog/2013_11_02/o1_mf_1_43_9780s1

ch_.arc

۴۴ /u01/app/oracle/flash_recovery_area/DG01

/archivelog/2013_11_02/o1_mf_1_44_9780tl

t0_.arc

۴۵ /u01/app/oracle/flash_recovery_area/DG01

/archivelog/2013_11_02/o1_mf_1_45_9780tl

vo_.arc

تغییرنام آرشیولاگ ها به منظور شبیه‌سازی سناریو از دست رفتن آرشیولاگ ها

PRI>ho mv /u01/app/oracle/flash_recovery_area/DG01/archivelog/2013_11_02/o1_mf_1_43_9780s1ch_.arc /home/oracle/arch_43.arc

ho mv /u01/app/oracle/flash_recovery_area/DG01/archivelog/2013_11_02/o1_mf_1_44_9780tlt0_.arc /home/oracle/arch_44.arc

ho mv /u01/app/oracle/flash_recovery_area/DG01/archivelog/2013_11_02/o1_mf_1_45_9780tlvo_.arc /home/oracle/arch_45.arc

ریستارت Redo Transport

DGMGRL> edit database dg01 set state=’Transport-on’;

اطمینان از عدم اصلاح شکاف به وجود آمده به دلیل از دست رفتن لاگ های پایگاه داده اصلی

DGMGRL> show database dg01

Database – dg01

Role: PRIMARY

Intended State: TRANSPORT-ON

Instance(s):

dg01

Database Error(s):

ORA-16783: cannot resolve gap for database dg02

Database Status:

ERROR

DGMGRL> show configuration;

Configuration – dgconfig1

Protection Mode: MaxPerformance

Databases:

dg01 – Primary database

Error: ORA-16724: cannot resolve gap for one or more standby databases

dg02 – Physical standby database

Fast-Start Failover: DISABLED

Configuration Status:

ERROR

بررسی #SCN لحظه‌ای پایگاه داده Standby

SBY>select current_scn from v$database;

CURRENT_SCN

———–

۹۹۸۶۴۷

ایجاد کنترل فایل پایگاه داده Standby

PRI>ALTER DATABASE CREATE STANDBY CONTROLFILE AS ‘/home/oracle/standby_control.ctl’;

انتقال کنترل فایل پایگاه داده Standby به Standby Host

PRI> !scp /home/oracle/standby_control.ctl node2:/home/oracle/standby_control.ctl

اخذ پشتیبان Incremental روی پایگاه داده اصلی از #SCN پایگاه داده Standby
RMAN از SCN به عنوان مبدأ اخذ پشتیبان Incremental استفاده می‌کند. به جهت اخذ پشتیبان از تمام فایل ها، پشتیبان تمامی دیتا بلاک‌های تغییر یافته از SCN های بالاتر یا برابر نسبت به SCN پشتیبان Incremental را شامل می‌شود.
توجه:
RMAN پشتیبان های Incremental را به عنوان بخشی از استراتژی پشتیبان پایگاه داده اصلی در نظر نمی‌گیرد لذا این نوع پشتیبان مناسب استفاده در عملیات بازگردانی پایگاه داده نمی‌باشد.

RMAN> Backup incremental from SCN 987005 database tag=’FOR_STANDBY’ format ‘/home/oracle/%d_%t_%s_%p’;

Starting backup at 02-NOV-13

channel ORA_DISK_1: starting full datafile backup set

channel ORA_DISK_1: starting piece 1 at 02-NOV-13

channel ORA_DISK_1: finished piece 1 at 02-NOV-13

piece handle=/home/oracle/DG01_830395300_22_1 tag=FOR_STANDBY comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03

انتقال فایل های پشتیبان به Standby Host

PRI> !scp /home/oracle/DG01_830395300_22_1 node2:/home/oracle/DG01_830395300_22_1

Catalog نمودن پشتیبان Incremental در پایگاه داده Standby

RMAN> catalog backuppiece ‘/home/oracle/DG01_830395300_22_1’;

list backup tag FOR_STANDBY;

List of Backup Sets

===================

BS Key Type LV Size Device Type Elapsed Time Completion Time

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

۹ Incr 9.38M DISK 00:00:00 02-NOV-13

BP Key: 9 Status: AVAILABLE Compressed: NO Tag: FOR_STANDBY

Piece Name: /home/oracle/DG01_830395300_22_1

Keep: NOLOGS Until: 09-NOV-13

List of Datafiles in backup set 9

جستجوی نام کنترل فایل‌های لحظه‌ای

SQL> col value for a50

col name for a15

select name, value from v$parameter where upper(name)= ‘CONTROL_FILES’;

NAME VALUE

————— ————————————————–

control_files /u01/app/oracle/oradata/dg02/control01.ctl, /u01/a

pp/oracle/flash_recovery_area/dg02/control02.ctl

متوقف نمودن پایگاه داده Standby و تغییرنام کنترل فایل اصلی پایگاه داده Standby

SBY> Shu immediate;

!mv /u01/app/oracle/oradata/dg02/control01.ctl /u01/app/oracle/oradata/dg02/control01.bak

!mv /u01/app/oracle/flash_recovery_area/dg02/control02.ctl /u01/app/oracle/flash_recovery_area/dg02/control02.bak

بازیابی کنترل فایل پایگاه داده Standby انتقال داده شده از پایگاه داده اصلی

SBY> ! cp /home/oracle/standby_control.ctl /u01/app/oracle/oradata/dg02/control01.ctl

! cp /home/oracle/standby_control.ctl /u01/app/oracle/flash_recovery_area/dg02/control02.ctl

اجرای پایگاه داده Standby با کنترل فایل های جدید

SBY> startup mount;

اعمال پشتیبان Incremental در پایگاه داده Standby
با استفاده از دستور RMAN RECOVER به همراه انتخاب NOREDO اقدام به اعمال پشتیبان Incremental در پایگاه داده Standby می‌کنیم و تمامی بلاک‌های تغییر یافته دریافتی در پشتیبان Incremental در پایگاه داده Standby در مقایسه با پایگاه داده اصلی بروز رسانی می‌شود.

SBY> recover managed standby database cancel;

RMAN> RECOVER DATABASE from tag for_standby NOREDO;

Starting recover at 02-NOV-13

using channel ORA_DISK_1

channel ORA_DISK_1: starting incremental datafile backup set restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

destination for restore of datafile 00001: /u01/app/oracle/oradata/dg02/system01.dbf

destination for restore of datafile 00002: /u01/app/oracle/oradata/dg02/sysaux01.dbf

destination for restore of datafile 00003: /u01/app/oracle/oradata/dg02/undotbs01.dbf

destination for restore of datafile 00004: /u01/app/oracle/oradata/dg02/users01.dbf

destination for restore of datafile 00005: /u01/app/oracle/oradata/dg02/example01.dbf

channel ORA_DISK_1: reading from backup piece /home/oracle/DG01_830395300_22_1

channel ORA_DISK_1: piece handle=/home/oracle/DG01_830395300_22_1 tag=FOR_STANDBY

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:01

Finished recover at 02-NOV-13

هم‌اکنون پایگاه داده Standby به وسیله پشتیبان Incremental بروز رسانی شده است و می‌توان فرآیند Managed Recovery را در پایگاه داده Standby فعال نمود.

SBY>recover managed standby database disconnect;

Media recovery complete.

با فعال نمودن Managed Recovery در پایگاه داده Standby، هر Redo Log مورد نیاز در پایگاه داده Standby به همراه تغییرات از زمان تهیه پشتیبان Incremental به طور خودکار از سمت پایگاه داده اصلی فراخوانی و اعمال می‌گردد.
از پیشرفت #SCN پایگاه داده Standby اطمینان حاصل نمایید.

SBY>select current_scn from v$database;

CURRENT_SCN

———–

۱۰۰۵۷۲۹

DGMGRL> edit database dg01 set state=’transport-on’;

DGMGRL> show configuration;

Configuration – dgconfig1

Protection Mode: MaxPerformance

Databases:

dg01 – Primary database

dg02 – Physical standby database

Fast-Start Failover: DISABLED

Configuration Status:

SUCCESS

توجه:
به منظور بروز رسانی پایگاه داده Duplicate شده از این روش نمی‌توان استفاده نمود.

0 پاسخ

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

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

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

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