oracle data guard installation - ghdrako/doc_snipets GitHub Wiki

Installation

  • Creating a Physical Standby Task 1: Create a Backup Copy of the Primary Database Data Files
  • Creating a Physical Standby Task 2: Create a Control File for the Standby Database
    • Create the control file for the standby database (the primary database does not have to be open, but it must at least be mounted).
SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/boston.ctl'; -- on primary

The ALTER DATABASE command designates the database that is to operate in the standby role; in this case, a database named boston. You cannot use a single control file for both the primary and standby databases. They must each have their own file.

  • Creating a Physical Standby Task 3: Create a Parameter File for the Standby Database
SQL> CREATE PFILE='/tmp/initboston.ora' FROM SPFILE;

Create a server parameter file from this parameter file, after it has been modified to contain parameter values appropriate for use at the physical standby database.

CHECKLISTA – Konfiguracja Oracle Data Guard (Primary + Standby)

  1. Wymagania wstępne Obie bazy (primary i standby) muszą:
  • mieć takie same wersje Oracle i system operacyjny (lub zgodne).
  • mieć unikalne DB_UNIQUE_NAME.
  • mieć skonfigurowaną archiwizację (ARCHIVELOG mode).
  • mieć wspólny password file (orapwd) i użytkownika sys z uprawnieniem sysdba.
  1. Parametry w init.ora lub spfile
  • Na Primary:
ALTER SYSTEM SET DB_UNIQUE_NAME='PRIMARY' SCOPE=SPFILE;
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(PRIMARY,STANDBY)';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/arch PRIMARY VALID_FOR=(ALL_LOGFILES,ALL_ROLES)';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=STANDBY LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=STANDBY';
ALTER SYSTEM SET FAL_SERVER='STANDBY';
ALTER SYSTEM SET FAL_CLIENT='PRIMARY';
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT='AUTO';
  • Na Standby:
ALTER SYSTEM SET DB_UNIQUE_NAME='STANDBY' SCOPE=SPFILE;
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(PRIMARY,STANDBY)';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/arch STANDBY VALID_FOR=(ALL_LOGFILES,ALL_ROLES)';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=PRIMARY LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PRIMARY';
ALTER SYSTEM SET FAL_SERVER='PRIMARY';
ALTER SYSTEM SET FAL_CLIENT='STANDBY';
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT='AUTO';
  1. Utwórz kopię bazy (np. RMAN)
  • Na Primary:
rman target /
RUN {
  BACKUP DATABASE PLUS ARCHIVELOG;
}
  • Skopiuj dane (np. RMAN DUPLICATE, scp, RMAN active duplicate) do standby. Przykład:
rman target sys@primary auxiliary sys@standby
RUN {
  DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER;
}
  1. Konfiguracja tnsnames.ora i listener.ora
  • Każda instancja musi widzieć drugą przez TNS.
  • Listener musi działać i nasłuchiwać poprawnie na obu serwerach.
  1. Włączenie Data Guard Broker (opcjonalnie, ale zalecane) Na obu serwerach:
ALTER SYSTEM SET DG_BROKER_START=TRUE SCOPE=BOTH;
  1. Konfiguracja Data Guard Broker (dgmgrl)
dgmgrl sys@primary
CREATE CONFIGURATION dg_config AS PRIMARY DATABASE IS 'PRIMARY' CONNECT IDENTIFIER IS 'primary';
ADD DATABASE 'STANDBY' AS CONNECT IDENTIFIER IS 'standby' MAINTAINED AS PHYSICAL;
ENABLE CONFIGURATION;
  1. Sprawdzenie stanu
dgmgrl
SHOW CONFIGURATION;
SHOW DATABASE 'PRIMARY';
SHOW DATABASE 'STANDBY';
  1. Switchover / Failover (opcjonalnie test)
  • Switchover:
DGMGRL> SWITCHOVER TO 'STANDBY';
  • Failover (gdy primary niedostępny):
DGMGRL> FAILOVER TO 'STANDBY';

9 Przydatne komendy

-- Zatrzymanie aplikowania logów na standby (do backupu np.)
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

-- Wznowienie
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;