22 Mai 2018
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 ..
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 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
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.