تا اینجایی که پیش رفتیم، اکثر شرکتها پیش میرن. اما اینجا رو فقط برخی از سازمانها پیش میرن. دلایل زیادی داره. من جمله اینکه دیتابیس اصلی ممکنه از لحاظ performance تحت تاثیر قرار بگیره. چون گارد از نوع sync و در مد high available قرار می گیره. شبکه باید کاملاً پایدار باشه و ... .
حالا بریم سراغ مهمترین هدف این مقاله: fast failover
1. بررسی وضعیت کلی Data Guard
روی یکی از نودها:
dgmgrl sys/oracle@vahiddbdc2
show configuration;
در این مرحله مطمئن شدیم که:
-
vahiddbdc2→ Primary -
vahiddb→ Physical Standby -
وضعیت Configuration →
SUCCESS -
Protection Mode → در ابتدا
MaxPerformance
2. ساخت سرویس اپلیکیشن روی هر دو دیتابیس (روی PDB و فقط برای PRIMARY)
روی هر دو نود (با نام دیتابیس خودش):
روی vahiddbdc2 (Primary فعلی):
srvctl add service -db vahiddbdc2 -service APP_SERVICE -pdb vahidpdb -role PRIMARY -policy AUTOMATIC
srvctl start service -db vahiddbdc2 -service APP_SERVICE
روی vahiddb (Standby فعلی):
srvctl add service -db vahiddb -service APP_SERVICE -pdb vahidpdb -role PRIMARY -policy AUTOMATIC
روی
vahiddbسرویس را دستی start نکردیم؛ چون قرار است فقط زمانی که این دیتابیس نقش PRIMARY گرفت، سرویس بهصورت خودکار توسط Clusterware/Broker بالا بیاید.
3. بررسی سرویسها در Listener
روی هر نود:
lsnrctl status
روی نود Primary باید ببینی:
Service "APP_SERVICE" ... status READY
و روی Standby سرویس APP_SERVICE نباید READY باشد (مگر اینکه اشتباهی دستی start شده باشد).
4. تنظیم Redo Transport روی SYNC برای Zero Data Loss
در dgmgrl:
EDIT DATABASE vahiddbdc2 SET PROPERTY LogXptMode='SYNC';
EDIT DATABASE vahiddb SET PROPERTY LogXptMode='SYNC';
5. تغییر Protection Mode به MaxAvailability
در همان dgmgrl:
EDIT CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY;
اینجا دیگه شرط Zero Data Loss برای FSFO فراهم میشود، چون:
-
Protection Mode = MAXAVAILABILITY
-
Redo Transport = SYNC
6. فعالسازی Fast-Start Failover (FSFO)
در dgmgrl:
ENABLE FAST_START FAILOVER;
و خروجی مهم: