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”
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
Bonjour et merci,
Tu peux ajouter la gestion du service par le grid infra pour être complet.
Bonne journée
Les commentaires sont fermés.