تا قبل از نسخه 19c، ایجاد restore point در محیط primary، منجر به ایجاد آن در محیط standby نمی شد. در سناریوی زیر که در اوراکل نسخه 18cR3 اجرا شده است این مسئله را می بینید:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 – Production
Version 18.3.0.0.0
–Primary
SQL> select * from v$restore_point;
no rows selected
–Standby
SQL> select * from v$restore_point;
no rows selected
–Primary
SQL> create restore point before_upg;
Restore point created.
SQL> select NAME,SCN from v$restore_point;
NAME SCN
———- —————
BEFORE_UPG 870272395791
SQL> alter system switch logfile;
System altered.
–Standby
SQL> select NAME,SCN from v$restore_point;
no rows selected
در ادامه خواهیم دید که این قابلیت در نسخه 19c اضافه شده است:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
–Primary
SQL> select * from v$restore_point;
no rows selected
SQL> create restore point before_upg;
Restore point created.
SQL> select NAME,SCN from v$restore_point;
NAME SCN
———- ———-
BEFORE_UPG 4185734
–Standby
SQL> select NAME,SCN from v$restore_point;
NAME SCN
——————– ———-
BEFORE_UPG_PRIMARY 4185734
همانطور که می بینید، restore point ایجاد شده در primary به standby هم منتقل شده است البته با این تغییر جزئی که پسوند PRIMARY_ به restore_point اضافه شده است.
به restore point ایجاد شده در استندبای(BEFORE_UPG_PRIMARY)، اصطلاحا replicated restore point هم گفته می شود و حذف BEFORE_UPG در محیط primary منجر به حذف BEFORE_UPG_PRIMARY در محیط standby خواهد شد:
–Primary
SQL> drop restore point BEFORE_UPG;
Restore point dropped.
–Standby
SQL> select NAME,SCN from v$restore_point;
no rows selected
این قابلیت جدید دو محدودیت زیر را به همراه دارد:
محدودیت اول: اگر primary در وضعیت mount قرار داشته باشد، restore point جدید به standby منتقل نمی شود.
–Primary
SQL> startup mount force
SQL> create restore point bavi;
Restore point created.
SQL> col NAME format a10
SQL> select NAME,SCN from v$restore_point;
NAME SCN
———- ———-
BAVI 4292998
–Standby
SQL> select NAME,SCN from v$restore_point;
no rows selected
–Primary
SQL> alter database open;
Database altered.
–Standby
SQL> select NAME,SCN from v$restore_point;
no rows selected
محدودیت دوم: اگر restore pointی را در primary ایجاد کنیم که هم نام با ان restore pointی در standby موجود باشد، در این صورت از restore point جدید صرف نظر خواهد شد:
–Standby
SQL> select NAME,SCN from v$restore_point;
NAME SCN
——————– ———-
NAMJOOO_PRIMARY 4297629
–Primary
SQL> select NAME,SCN from v$restore_point;
no rows selected
SQL> create restore point NAMJOOO;
Restore point created.
SQL> select NAME,SCN from v$restore_point;
NAME SCN
———- ———-
NAMJOOO 4297776
–Standby
SQL> select NAME,SCN from v$restore_point;
NAME SCN
——————– ———-
NAMJOOO_PRIMARY 4297629
پس از ایجاد restore point، پیام زیر در alert log مربوط به standby مشاهده خواهد شد:
2020-10-26T09:27:52.871174-04:00
Restore point NAMJOOO_PRIMARY propagated from primary already exists