Configuration :
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
Oracle 10GR2
PTEST : base primaire
STEST : base standby
Remarque :Toutes les opérations SQL se font connecté en tant que “as sysdba”
1. Configuration des bases en archivelog et force logging
SQL> ALTER DATABASE FORCE LOGGING;
SQL> alter database archivelog ;
2. Créer une sauvegarde de la base primaire
A) Créer les standby controlfile
SQL> alter database create standby controlfile as ‘/u01/app/oracle/TEST/standby1.ctl’;
B) Créer les standby redo log .
SQL> ALTER DATABASE ADD STANDBY LOGFILE ‘/u01/app/oracle/TEST/srl01.log’ SIZE 10M REUSE;
SQL> ALTER DATABASE ADD STANDBY LOGFILE ‘/u01/app/oracle/TEST/srl02.log’ SIZE 10M REUSE;
SQL> ALTER DATABASE ADD STANDBY LOGFILE ‘/u01/app/oracle/TEST/srl03.log’ SIZE 10M REUSE;
SQL> ALTER DATABASE ADD STANDBY LOGFILE ‘/u01/app/oracle/TEST/srl04.log’ SIZE 10M REUSE;
Il est conseillé :
- de créer un fichier “standby redo log” de plus que les redo log
- d’avoir une taille des standby redo log >= taille des redo
log
C) Effectuer une sauvegarde de la base primaire ((il est possible de le faire à chaud par rman)
Arrêter la base primaire
Faire une copie physique dans un répertoire de sauvegarde des types de fichier suivants :
– datafiles
– online redo logs
– standby controlfile
– standby redolog
Redémarrer la base primaire
3. Modification ou création des paramètres d’initialisation des bases primaire et standby
Base ayant le rôle primaire (PTEST) :
log_archive_format=%t_%s_%r.arc
log_archive_dest_2=’service=STEST LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES, PRIMARY_ROLE) DB_UNIQUE_NAME=STEST’
log_archive_config=’DG_CONFIG=(PTEST,STEST)’
LOG_ARCHIVE_DEST_STATE_2=ENABLE
db_name=TEST
db_unique_name=PTEST
fal_server=STEST
fal_client=PTEST
DB_FILE_NAME_CONVERT=(‘/u01/app/oracle/TESTSTANDBY’,’/u01/app/oracle/TEST’)
LOG_FILE_NAME_CONVERT=(‘/u01/app/oracle/TESTSTANDBY’,’/u01/app/oracle/TEST’)
standby_archive_dest=/u01/app/oracle/flash_recovery_area/STEST/standby_archive
STANDBY_FILE_MANAGEMENT=AUTO
Base ayant le rôle standby (STEST) :
fal_server=PTEST
fal_client=STEST
DB_FILE_NAME_CONVERT=(‘/u01/app/oracle/TEST’,’/u01/app/oracle/TESTSTANDBY’)
LOG_FILE_NAME_CONVERT=(‘/u01/app/oracle/TEST’,’/u01/app/oracle/TESTSTANDBY’)
STANDBY_ARCHIVE_DEST=/u01/app/oracle/flash_recovery_area/STEST/standby_archive
log_archive_format=%t_%s_%r.dbf
STANDBY_FILE_MANAGEMENT=AUTO
log_archive_config=’DG_CONFIG=(PTEST,STEST)’
LOG_ARCHIVE_DEST_2=’service=STEST LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES, PRIMARY_ROLE) DB_UNIQUE_NAME=PTEST’
LOG_ARCHIVE_DEST_STATE_2=DEFER
CONTROL_FILES=(“/u01/app/oracle/TESTSTANDBY/standby1.ctl”, “/u01/app/oracle/TESTSTANDBY/standby2.ctl”, “/u01/app/oracle/TESTSTANDBY/standby3.ctl”)
4. Configurer le listener, Oracle services names de la base primaire et de la standby
A) Configurer les fichiers $ORACLE_HOME/network/admin/listener.ora pour l’enregistrement statique
listener.ora :
SID_LIST_LISTENER_PRIMARY =
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=TEST)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(SID_NAME=PTEST)
)
)
SID_LIST_LISTENER_STANDBY =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = TEST)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1 )
(SID_NAME = STEST)
)
)
LISTENER_PRIMARY =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = LINUX-ORA10-DATAGUARD-PRIMARY)(PORT = 1521))
)
)
LISTENER_STANDBY =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = LINUX-ORA10-DATAGUARD-PRIMARY)(PORT = 1522))
)
)
B) Configurer les $ORACLE_HOME/network/admin/tnsnames.ora
STEST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = LINUX-ORA10-DATAGUARD-PRIMARY)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =STEST)
)
)
PTEST
=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = LINUX-ORA10-DATAGUARD-PRIMARY)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =PTEST)
)
)
C) Redémarrer les listeners des deux bases.
$ORACLE_HOME/bin/lsnrctl start LISTENER_PRIMARY
$ORACLE_HOME/bin/lsnrctl start LISTENER_STANDBY
5. Copie du fichier de mot de passe ou génération avec $ORACLE_HOME/bin/orapwd
6. Faire un startup mount de la base standby :
SQL> startup mount
7. Démarrer le recovery sur la base standby
A l’aide de la commande suivante :
SQL> alter database recover managed standby database disconnect from session;
- Dès qu’un archive log est transmis par la base primaire, la base standby commence à effectuer le recovery.
- L’option “disconnect from session” permet de garder la main sur la session SQL dans laquelle la commande a été exécutée, le process est alors lancé en background.
8. Vérifier le transport des journaux
En forçant la création d’un archive log sur la base primaire :
SQL> alter system archive log current ;
L’archive log est alors transmis vers le répertoire d’archive de la base standby, et cette dernière fait automatiquement un recovery à partir du log transmis.
9. Vérifier que le data Guard fonctionne
en exécutant la requête suivante sur le primary et sur la standby:
SQL> select max(sequence#) from v$log_history;
Continuez votre lecture sur le blog :
- Se connecter à SQL Server à travers Oracle, quelle drôle d’idée ? (Capdata team) [OracleVintage]
- Une solution de “Disaster Recovery” sous Oracle Standard Edition avec DBVisit standby (Emmanuel RAMI) [GénéralOracle]
- PostgreSQL : la streaming replication en 12. (Emmanuel RAMI) [PostgreSQL]
- AWS Oracle RDS Read Replicas : un Active Dataguard en mode PaaS ? (Emmanuel RAMI) [AWSNon classéOracle]
- Installation ASM sur SUSE 10 en 64 Bits avec multipathing (EMC Powerpath) (Capdata team) [OracleVintage]