Oracle Data Guard (fiziksel standby) kurulumu
Belirti
Amaç: Oracle için fiziksel standby (Data Guard) ile felaket kurtarma ve yüksek erişilebilirlik kur; primary çökerse standby'a geçebil.
1. Primary'yi FORCE LOGGING ve ARCHIVELOG moda al
Standby'ın primary ile tutarlı kalması için tüm değişikliklerin redo'ya yazılması şarttır. FORCE LOGGING NOLOGGING işlemlerini bile loglar. ARCHIVELOG modu için veritabanı MOUNT durumunda açılır.
Oracle
ALTER DATABASE FORCE LOGGING;
-- ARCHIVELOG için:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;2. Standby redo log dosyalarını ekle
Standby redo log (SRL), online redo'dan bir grup fazla ve aynı boyutta olmalıdır. Hem primary hem standby üzerinde oluşturulur; real-time apply için gereklidir. Örnekte online redo 200M ise SRL de 200M olur.
Oracle
ALTER DATABASE ADD STANDBY LOGFILE ('/u01/oradata/srl01.log') SIZE 200M;
ALTER DATABASE ADD STANDBY LOGFILE ('/u01/oradata/srl02.log') SIZE 200M;
ALTER DATABASE ADD STANDBY LOGFILE ('/u01/oradata/srl03.log') SIZE 200M;
ALTER DATABASE ADD STANDBY LOGFILE ('/u01/oradata/srl04.log') SIZE 200M;3. log_archive_dest ve ilgili parametreleri ayarla
Primary üzerinde redo'yu standby'a taşıyacak dest_2 tanımlanır. DB_UNIQUE_NAME, LOG_ARCHIVE_CONFIG (her iki tarafın db_unique_name'i), FAL_SERVER ve STANDBY_FILE_MANAGEMENT=AUTO ayarlanır. Böylece standby'da dosyalar otomatik oluşur.
Oracle
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl_prim,orcl_stby)';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=orcl_stby ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl_stby';
ALTER SYSTEM SET FAL_SERVER='orcl_stby'; -- rol değişimi için; standby'da FAL_SERVER='orcl_prim'
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;4. Standby'ı RMAN DUPLICATE FOR STANDBY ile oluştur
Standby sunucuda parola dosyası ve statik listener/tnsnames kurulduktan sonra, RMAN primary'ye ve standby'a (AUXILIARY) bağlanır. FROM ACTIVE DATABASE ağ üzerinden yedeksiz kopyalar; DORECOVER redo'yu uygular.
Oracle
rman TARGET sys/parola@orcl_prim AUXILIARY sys/parola@orcl_stby
RUN {
DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE
DORECOVER
NOFILENAMECHECK;
}5. Redo apply (MRP) başlat ve doğrula
Standby MOUNT durumunda iken managed recovery başlatılır; real-time apply için USING CURRENT LOGFILE kullanılır. Apply sürecinin (MRP0) çalıştığını v$managed_standby ile doğrula.
Oracle
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
SELECT process, status, sequence# FROM v$managed_standby WHERE process LIKE 'MRP%';6. Data Guard Broker'ı etkinleştir
Broker, konfigürasyonu merkezîleştirir ve failover/switchover'ı tek komuta indirir. Her iki instance'ta DG_BROKER_START=TRUE yapılır, sonra dgmgrl ile konfigürasyon oluşturulur ve etkinleştirilir. 12c+'da redo taşımayı broker yönetir: elle ayarlanmış LOG_ARCHIVE_DEST_2 varsa ADD DATABASE ORA-16698 verir; önce ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='' ile temizleyin.
Oracle
ALTER SYSTEM SET DG_BROKER_START=TRUE;
-- dgmgrl içinde:
CREATE CONFIGURATION dgconf AS PRIMARY DATABASE IS orcl_prim CONNECT IDENTIFIER IS orcl_prim;
ADD DATABASE orcl_stby AS CONNECT IDENTIFIER IS orcl_stby;
ENABLE CONFIGURATION;7. Senkronizasyon boşluğunu (gap) izle ve testi tamamla
Primary ile standby arasındaki sequence farkı sürekli izlenmelidir; fark büyüyorsa ağ/apply darboğazı vardır. dgmgrl SHOW CONFIGURATION 'SUCCESS' göstermeli. İsteğe bağlı bir switchover ile rol değişimini test et.
Oracle
-- dgmgrl (SHOW DATABASE, Transport Lag / Apply Lag değerlerini gösterir):
SHOW CONFIGURATION;
SHOW DATABASE orcl_stby;
-- SQL (standby): SELECT name, value FROM v$dataguard_stats WHERE name LIKE '%lag';