Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
LAMI DBA

Articles autour des SGBD Oracle, SQL Server & PostgreSQL

DATAGUARD - CREATE STANDBY DATABASE -dbca

 

Hello,


depuis que lami-dba existe, il nous est déjà arrivé de parler de Dataguard à travers quelques articles qui pouvaient aborder des points précis et partant d'un environnement existant.


Aujourd'hui, nous allons repartir du début. Enfin pas tout à fait quand même...


J'ai donc un environnement constitué de deux serveurs les bien nommés rasta & prettyboy.
Et pour avoir une base de secours (la fameuse standby), il faut ce qu'on appelle une base primaire (ou primary si on veut la jouer internationnal).

Dans mon cas, ma base primaire se nomme rastadb et se trouve sur le serveur rasta.(Force Logging activé, fichier de password crée).
Mon serveur de secours prettyboy est lui prêt à recevoir sa standby ..

  • prérequis installés (package, user, ...)
  • Grid Infrastructure installé
  • Oracle Database installé (12.2)

 A part cela, rien de particulier.
Rien dans $ORACLE_HOME/dbs

[oracle@prettyboy admin]$ ls -lht $ORACLE_HOME/dbs
total 0
[oracle@prettyboy admin]$


Ni listener, ni tnsnames.ora

[oracle@prettyboy admin]$
[oracle@prettyboy admin]$ ls -lht $ORACLE_HOME/network/admin
total 12K
-rw-r--r-- 1 oracle oinstall   42 Feb 20 13:28 sqlnet.ora
drwxr-xr-x 2 oracle oinstall 4.0K Jan 16 15:46 samples
-rw-r--r-- 1 oracle oinstall 1.5K Aug 28  2015 shrept.lst
[oracle@prettyboy admin]$

Pour créer une standby, il existe plusieurs moyens. Les plus utilisés ( de mon point de vue) sont
  • Un bon vieux backup sur la source qu'on copie sur la destination + restauration
  • Pour les fainéants (à condition d'être en 11g), un duplicate from active database

Pour ceux qui suivent un peu ce blog, vous savez que je suis fainéant... et c'est pas aujourd'hui que je vais changer....
Depuis la version 12c R2, on peut créer une standby rapidement en une ligne de commande en utilisant dbca...

[oracle@prettyboy admin]$ dbca -silent -createDuplicateDB -primaryDBConnectionString 192.168.1.130:1521/rastadb -gdbName rastadb -sid rastadb -initParams db_unique_name=rastastby -CreateAsStandby
Enter SYS user password:

Listener config step
33% complete
Auxiliary instance creation
66% complete
RMAN duplicate
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/rastastby/rastadb4.log" for further details.
[oracle@prettyboy admin]$


Et voila... ma standby database est créée... si si

SQL>
SQL> select open_mode,database_role from v$database;

OPEN_MODE            DATABASE_ROLE
---------            ---------------
READ ONLY            PHYSICAL STANDBY

SQL>


Et c'est pas tout... le listener aussi...

[oracle@prettyboy admin]$
[oracle@prettyboy admin]$ lsnrctl status

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 22-MAY-2018 21:29:57

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=TCP)(HOST=prettyboy.localdomain)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date                22-MAY-2018 21:26:11
Uptime                    0 days 0 hr. 3 min. 46 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/12.2.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/prettyboy/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=prettyboy.localdomain)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
  Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "+ASM_DATA" has 1 instance(s).
  Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "rastadb" has 1 instance(s).
  Instance "rastadb", status UNKNOWN, has 1 handler(s) for this service...
Service "rastadbXDB" has 1 instance(s).
  Instance "rastadb", status READY, has 1 handler(s) for this service...
Service "rastastby" has 1 instance(s).
  Instance "rastadb", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@prettyboy admin]$


Et le fichier de mot de passe...aussi....

[oracle@prettyboy dbs]$
[oracle@prettyboy dbs]$ cd $ORACLE_HOME/dbs
[oracle@prettyboy dbs]$ ls -lht |grep pw
-rw-r----- 1 oracle oinstall 4.0K May 22 21:26 orapwrastadb
[oracle@prettyboy dbs]$


Et /etc/oratab... aussi

oracle@prettyboy dbs]$ cat /etc/oratab
+ASM:/u01/app/12.1.0/grid:N
rastadb:/u01/app/oracle/product/12.2.0/db_1:N
[oracle@prettyboy dbs]$


Pas belle la vie... Et même si vous aviez un script pour personnaliser votre standby database après la création pour par exemple ajuster certaines valeurs de paramètres, cela est possible.

[oracle@prettyboy admin]$ dbca -silent -createDuplicateDB -primaryDBConnectionString 192.168.1.130:1521/rastadb -gdbName rastadb -sid rastadb -initParams db_unique_name=rastastby -CreateAsStandby -customScripts /home/oracle/configureDB.sql

 

A l'issue de la création de la standby, mon script configureDB.sql sera executé.
Le monde n'étant cependant parfait, il y a quelques contraintes à utiliser dbca

  • dbca ne peut être utiliser pour créer des standby qui ne sont "multitenant"
  • On ne pourra créer qu'une "single standby". Pour un RAC, il faudra terminer la conversion à la mano.

Qui sait..cela évoluera peut être avec les prochaines versions.
En conclusion nous avons maintenant une standby database... il ne nous reste plus qu'à configurer ce bel ensemble (primary, standby)....

Mais cela fera l'objet de deux nouveaux articles.

  • CE que je qualifierai de "à l'ancienne", en configuration l'ensemble des paramètres afin d'avoir un dg opérationnel.
  • En utilisant dgmgrl (le broker).
Enjoy !


 

 

 

Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article