DBAtlas · Veritabanı operasyon atlası

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';
DBAtlas'ta aç →