یکی از قابلیتهای جدیدی که در اوراکل 12c ارائه شد، FAR SYNC DATA GUARD می باشد که شباهت هایی هم به cascade standby دارد.
با کمک این ویژگی، می توان از ماشین(یا سرور) سومی که نقش واسط را بین سرور primary و data guard ایفا می کند، استفاده کرد بطوری که redoها از سرور primary به این سرور ارسال شده و سپس از آنجا به سمت دیتاگارد هدایت شوند.
استفاده از این قابلیت سبب می شود تا در صورت بالا بودن تعداد data guardها، سربار کمتری بر روی بانک primary ایجاد شود همچنین در صورت وجود مشکلات شبکه ای بین بانک اصلی و دیتاگارد، این ویژگی می تواند مفید واقع شود.
بانک یا instance مربوط به FAR SYNC، شامل کنترل فایل، pfile، پسورد فایل و standby redo log file می باشد و در این بانک، خبری از data file نخواهد بود همچنین آرشیولاگها در این سرور ایجاد خواهند شد و این بانک تنها در حالت mount قرار خواهد گرفت.
در ادامه متن، مراحل پیاده سازی FAR SYNC را شرح داده ایم.
مرحله 1. در اولین مرحله، پارامترهایی که باید بر روی هر سه بانک اعمال شوند، را تنظیم می کنیم:
پارامترهای بانک اصلی:
*.db_unique_name=test
*.log_archive_config=’DG_CONFIG=(test,usef_stb,far)’;
*.log_archive_dest_2=’service=far SYNC AFFIRM alternate=log_archive_dest_3 db_unique_name=far’
*.log_archive_dest_3=’service=usef_stb ASYNC max_failure=1 alternate=log_archive_dest_2 db_unique_name=usef_stb’
*.log_archive_dest_state_3=alternate
پارامترهای بانک FAR SYNC:
*.db_unique_name=far
*.log_archive_config=’DG_CONFIG=(test,usef_stb,far)’;
*.log_archive_dest_2=’service=usef_stb ASYNC db_unique_name=usef_stb’;
*.fal_server=test;
*. control_files=’/u01/far.ctl’
پارامترهای data guard:
*.db_unique_name=usef_stb
*.log_archive_config=’DG_CONFIG=(test,usef_stb,far)’;
*.fal_server=far,test;
مرحله 2. فایل tnsnames.ora را در این مرحله تنظیم می کنیم:
far =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.22.136.4)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(sid = far)))
USEF_STB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.22.136.6)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(sid= usef_stb)))
TEST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.22.137.82)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(sid = test)))
مرحله 3. کنترل فایلی را در محیط primary ایجاد کرده و آن را به سرور FAR SYNC منتقل می کنیم:
alter database create far sync instance controlfile as ‘/u01/far.ctl’;
بعد از انتقال کنترل فایل به بانک FAR، آن را در حالت mount استارت می کنیم:
SQL> startup mount force;
Total System Global Area 1.2684E+10 bytes
Fixed Size 3724928 bytes
Variable Size 2013268352 bytes
Database Buffers 1.0637E+10 bytes
Redo Buffers 29827072 bytes
Database mounted.
توجه! در صورتی که این بانک با آپشن open استارت شود، با خطای زیر مواجه خواهیم شد:
ORA-16476: far sync instance does not allow Open operation
مرحله 4: فایلهای standby logfile group را به این بانک اضافه می کنیم:
alter database add standby logfile group 20 size 100m;
alter database add standby logfile group 21 size 100m;
دستور زیر، نقش این بانک را نشان می دهد:
SQL> select database_role from v$database;
DATABASE_ROLE
—————-
FAR SYNC
توجه! پسورد فایل موجود در بانک اصلی را باید به محیط دیتاگارد و FAR SYNC منتقل کرد و یا پسوردفایلی با همان فرمت را برای این دو بانک ایجاد نمود.
مرحله 5. بعد از راه اندازی بانک FAR SYNC، دیتاگارد را در سرور دیگری راه اندازی می کنیم:
rman target sys/sys@test auxiliary sys/sys@usef_stb
duplicate target database for standby from active database nofilenamecheck;
به بانک استندبای، standby redo log را اضافه کرده و سپس آن را در وضیعت recover قرار می دهیم:
alter database add standby logfile group 25 size 100m;
alter database add standby logfile group 26 size 100m;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE;
نقش این بانک، به صورت زیر خواهد بود:
SQL> select database_role from v$database;
DATABASE_ROLE
—————-
PHYSICAL STANDBY
مرحله 6: مراحل زیر را برای راه اندازی broker انجام می دهیم.
ابتدا پارامتر مربوط به بروکر را در هر سه بانک TRUE می کنیم:
alter system set dg_broker_start=true;
:سپس، پیکربندی زیر را در بانک اصلی انجام می دهیم
dgmgrl /
DGMGRL> CREATE CONFIGURATION hamsandb AS PRIMARY DATABASE IS test CONNECT IDENTIFIER IS test;
Configuration “hamsandb” created with primary database “test”
DGMGRL> ADD DATABASE usef_stb AS CONNECT IDENTIFIER IS usef_stb;
Database “usef_stb” added
DGMGRL> ADD FAR_SYNC far AS CONNECT IDENTIFIER IS far;
far sync instance “far” added
DGMGRL> enable configuration;
DGMGRL> edit database test set property redoroutes='(local:far sync)’;
Property “redoroutes” updated
DGMGRL> edit far_sync far set property redoroutes='(test:usef_stb)’;
Property “redoroutes” updated
DGMGRL> enable far_sync far;
Enabled.
DGMGRL> show configuration;
Configuration – hamsandb
Protection Mode: MaxPerformance
Members:
test – Primary database
far – Far sync instance
usef_stb – Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS (status updated 54 seconds ago)