Nouvelle Fonctionnalité – Oracle Data Guard Broker 12c

Dans les versions antérieures à la version Oracle Database 12.1.0.2 vous avez toujours dû enregistrer statiquement vos bases de données auprès des processus d’écoutes pour une utilisation avec le Broker. Pour cela, des entrées statiques, pour chaque base de données en Data Guard, sont à ajouter au niveau de la définition des processus d’écoutes.  Ces entrées ne doivent jamais être utilisées à d’autres fins par les DBA ou par les utilisateurs (Best Practice).

Cela a changé à partir de la version 12.1.0.2, un autre de ces boosters de productivité:) et qui facilitera la vie pour les DBAs:).
Lors de la mise en place et la configuration d’Oracle Data Guard pour des bases de données 12c, vous n’avez plus besoin d’enregistrer statiquement vos bases de données auprès des processus d’écoutes fournis et gérés par Oracle Restart, RAC One Node ou RAC, car le Broker utilisera le Clusterware pour arrêter et démarrer une instance lors d’un changement de rôle par exemple. Voir MOS Doc ID 1387859.1 pour plus de détails.

Par conséquent, les entrées statiques «_DGMGRL » ne sont plus nécessaires à partir de la 12.1.0.2.

 

Exemple pour tester cette nouvelle fonctionnalité

Comme on dit, « L’exemple persuade bien mieux que la meilleure des leçons ».

Pour ce test, nous allons utiliser une base de données ORCL (12.1.0.2) qui tourne derrière Oracle Grid Infra 12.2.0.1.

  • Environnent :

Primary server name/os: oradg1/Oracle Linux Server 7.3 (64 bit)

Standby server name/os: oradg2/Oracle Linux Server 7.3 (64 bit)

RDBMS Version (primary and standby): 12.1.0.2.0

Listener name/port (primary and standby): LISTENER/1521 (géré par la Couche GRID Infra)

GRID_HOME (primary and standby): /u01/app/grid/12.2.0

ORACLE_HOME (primary and standby): /u01/app/oracle/product/12.1.0/dbhome_1

Primary ORACLE_SID/DB_UNIQUE_NAME: ORCL/ORCLPRM

Standby ORACLE_SID/DB_UNIQUE_NAME: ORCL/ORCLSTB

Path DB files (primary and standby): +DATA/DB_UNIQUE_NAME/DATAFILE/

Recovery area (primary and standby): +RECO/DB_UNIQUE_NAME/ARCHIVELOG

 

  • Préparer la base de données Primaire :

Les étapes ci-dessous ont été exécutées en tant qu’Oracle :

[oracle@oradg1 ~]$ . oraenv
ORACLE_SID = [orcl] ? orcl
[oracle@oradg1 ~]$ sqlplus / as sysdba

La base de données est déjà en mode Archive log :

SQL> archive log list
Database log mode     
Archive ModeAutomatic archival     
EnabledArchive destination     USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 8
Next log sequence to archive 10
Current log sequence     10
  • Activer le mode Force Logging :
SQL> alter database force logging;
  • Vérifier le nombre de groupes de journalisation et la taille des membres :
SQL> select GROUP#,THREAD#,BYTES from v$log;
GROUP# THREAD#     BYTES
---------- ---------- ----------
1     1 209715200
2     1 209715200
3     1 209715200

SQL> select member from v$logfile;
MEMBER
-----------------------------------------------------------------------
+DATA/ORCL1PRM/DATAFILE/redo01.log
+DATA/ORCL1PRM/DATAFILE/redo02.log
+DATA/ORCL1PRM/DATAFILE/redo03.log
  • Création des groupes de journalisation Standby :
SQL> ALTER DATABASE ADD STANDBY LOGFILE SIZE 209715200;
SQL> ALTER DATABASE ADD STANDBY LOGFILE SIZE 209715200;
SQL> ALTER DATABASE ADD STANDBY LOGFILE SIZE 209715200;
SQL> ALTER DATABASE ADD STANDBY LOGFILE SIZE 209715200;
  • Network configuration

Vu que nous utilisons une base de données 12.1.0.2 gérée par Oracle Grid Infra 12.2.0.1, nous n’avons pas besoin d’enregistrer la base de données auprès du LISTENER. Il fallait juste ajouter les deux entrées TNS ou chaînes de connexion qui seront utiliser par le Broker.

Dans le fichier $ORACLE_HOME/network/admin/tnsnames.ora de la base primaire,, ajouter les deux chaînes ci-dessous :

# Oracle Data Guard – Broker 12c
ORCLPRM =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oradg1)(PORT = 1521))
(CONNECT_DATA =(SERVER = DEDICATED)
(SERVICE_NAME = orclprm)))

ORCLSTB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oradg2)(PORT = 1521))
(CONNECT_DATA =(SERVER = DEDICATED)
(SERVICE_NAME = orclstb)))
  • Préparation de la base de données Standby

  • Création de la base Standby

Sur le serveur standby oradg2 , nous avons déjà les deux moteurs Oracle Database 12.1.0.2 et Grid Infra 12.2.0.1 installés dans les mêmes destinations.

  • Copier les fichiers de paramètres d’initialisation et celui du mot de passe
[oracle@oradg1~]$ scp $ORACLE_HOME/dbs/intiORCL.ora oracle@oradg1: /u01/app/oracle/product/12.1.0/dbhome_1/dbs/initORCL.ora

[oracle@oradg1~]$ scp $ORACLE_HOME/dbs/orapwintiORCL.ora oracle@oradg1: /u01/app/oracle/product/12.1.0/dbhome_1/dbs/orapwORCL.ora

Après avoir copié les deux fichiers, éditer le fichier /u01/app/oracle/product/12.1.0/dbhome_1/dbs/initORCL.ora puis changer le db_unique_name de la base ORCLPRM en ORCLSTB.

  • Démarrage de l’instance de base de données ORCLSTB 
[oracle@oradg2 dbs]$ . oraenv
ORACLE_SID = [] orcl
ORACLE_HOME = [] /u01/app/oracle/product/12.1.0/dbhome_1
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@oradg2 ]$ sqlplus / as sysdba
Connected to an idle instance.

SQL> startup nomount pfile='$ORACLE_HOME/dbs/initORCL.ora';
SQL> create spfile from pfile='$ORACLE_HOME/dbs/initORCL.ora';
SQL> shutdown immediate
SQL> startup nomount
  • Network configuration

Dans le fichier $ORACLE_HOME/network/admin/tnsnames.ora de la base standby, ajouter les deux chaînes ci-dessous :

# Oracle Data Guard – Broker 12c
ORCLPRM =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oradg1)(PORT = 1521))
(CONNECT_DATA =(SERVER = DEDICATED)
(SERVICE_NAME = orclprm)))

ORCLSTB =
(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oradg2)(PORT = 1521))
(CONNECT_DATA =(SERVER = DEDICATED)
(SERVICE_NAME = orclstb)))
  • Duplication de la base de données Standby
[oracle@oradg2 ~]$ rman target sys@ORCLPRM auxiliary sys@ORCLSTB
target database Password:
auxiliary database Password:

RMAN>
RMAN> run 
{ 
duplicate target database for standby from active database;
}

SQL> select database_role from v$database;
DATABASE_ROLE
----------------
PHYSICAL STANDBY
  • Ajouter la base standby dans la couche Grid Infra

Pour permettre à la couche Grid Infrastructure de gérer automatiquement (arrêt, démarrage) la base de données standby ORCLSTSB, cette dernière doit être ajoutée dans le stack GI en tant que ressource. Une base de données est ajoutée dans GI à l’aide de la commande :

[oracle@oradg2 ~]$ srvctl add database -d <DB_UNIQUE_NAME> -o <ORACLE_HOME> -role <PRIMARY, PHYSICAL_STANDBY> -i <INSTANCE_NAME> -startoption <MOUNT, OPEN> -diskgroup <ATAP,RECOP> -node  <HOSTNAME> -pwfile <PWFILE_PATH> -p <SPFILE_PATH> -dbtype <SINGLE,RACRACONENODE | RAC | SINGLE > 

[oracle@oradg2 ~]$ srvctl add database -d ORCLSTB -o /u01/app/oracle/product/12.1.0/dbhome_1 -role PHYSICAL_STANDBY  -startoption MOUNT -diskgroup DATA,RECO -pwfile '/u01/app/oracle/product/12.1.0/dbhome_1/dbs/orapwORCL' -p '/u01/app/oracle/product/12.1.0/dbhome_1/dbs/spfileORCL.ora' -dbtype SINGLE -node oradg2 -i orclSQL> shutdown immediate[oracle@oradg2 ~]$ srvctl start database -d ORCLSTB
  • Démarrer Oracle Data Guard Broker

Avant de créer une configuration Oracle Data Guard, Oracle broker devra être démarrer sur les deux bases de données :

Serveur oradg1:
[oracle@oradg1 ~]$ . oraenv
ORACLE_SID = [orcl] ?
[oracle@oradg1 ~]$ sqlplus / as sysdba

SQL> alter system set dg_broker_start=true scope=both;

Serveur oradg2:
[oracle@oradg2 ~]$ . oraenv
ORACLE_SID = [orcl] ?
[oracle@oradg2]$ sqlplus / as sysdba

SQL> alter system set dg_broker_start=true scope=both;
  • Création d’une configuration oracle Data Guard via DGMGRL
[oracle@oradg1 ~]$ . oraenv
ORACLE_SID = [orcl] ?
The Oracle base remains unchanged with value /u01/app/oracle

[oracle@oradg1]$ dgmgrl /

DGMGRL> create configuration dg_config_orcl as primary database is orclprm connect identifier is orclprm;
DGMGRL> add database orclstb as connect identifier is orclstb maintained as physical;
  • Activer la configuration
DGMGRL> enable configuration;
Pour vérifier la configuration :

DGMGRL> show configuration
Configuration - dg_config_orcl
Protection Mode: MaxPerformance
Members:
orclprm - Primary database
orclstb - Physical standby 
databaseFast-Start Failover: DISABLED
Configuration Status:SUCCESS 
(status updated 55 seconds ago)
  • Vérifier la synchronisation des deux bases de données :
SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
  • Base Primaire :
SEQUENCE# FIRST_TIM NEXT_TIME
---------- --------- ---------
18 28-DEC-18 28-DEC-18
19 28-DEC-18 28-DEC-18
20 28-DEC-18 28-DEC-18
  • Résultat sur la base Standby:
SEQUENCE# FIRST_TIM NEXT_TIME
---------- --------- ---------
18 28-DEC-18 28-DEC-18
19 28-DEC-18 28-DEC-18
20 28-DEC-18 28-DEC-18
  • Tester le Switchover

Démarrer DGMGRL et connectez-vous à la base de données Standby en tant que SYS :

[oracle@oradg1 ~]$ dgmgrl sys/oracle@orclstb
DGMGRL> show configuration
Configuration - dg_config_orcl
Protection Mode: MaxPerformance
Members:
orclprm - Primary database
orclstb - Physical standby 
databaseFast-Start Failover: DISABLED
Configuration Status:SUCCESS 
(status updated 35 seconds ago)
DGMGRL> switchover to orclstb;
Performing switchover NOW, 
please wait...New primary database "orclstb" is opening…
Oracle Clusterware is restarting database "orclprm" … ********************
Connected to "orclprm"Connected to "orclprm"
Switchover succeeded, new primary is "orclstb"

DGMGRL> show configuration
Configuration - dg_config_orcl
Protection Mode: MaxPerformance
Members:
orclprm - Physical standby database
orclstb - Primary database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS (status updated 50 seconds ago)

Comme vous pouvez le constater, le Broker a utilisé la couche Grid Infrastructure pour redémarrer la base de données orclprm.

Découvrez également notre formation Oracle Dataguard Administration.

2 réflexions sur “Nouvelle Fonctionnalité – Oracle Data Guard Broker 12c”

  1. Bonjour,

    Est ce que vous avez cours des cours concernant :

    – installation de la grid control
    – dataguar
    – rac

    Bravo pour tous les supports de cours

    Cordialement,
    Sahli

  2. thierry gascard

    Bonjour et merci,
    Tu peux ajouter la gestion du service par le grid infra pour être complet.
    Bonne journée

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *