Si vous avez eu l’opportunité de regarder les nouvelles fonctionnalités 11g Release 2 d’Oracle Data Guard et de son broker, vous avez découvert une liste de 33 améliorations répertoriées. Cela va du positionnement d’une propriété sur plusieurs bases de données avec dgmgrl
à la correction automatique de blocs corrompus, les cruelles ORA-01578
, grâce à Oracle Active Data Guard. Cela passe également désormais par la compression de l’ensemble du traffic réseau avec l’option Advanced Compression et par la garantie d’un délai de mise à jour des bases de données standby pour vos requêtes… Un véritable inventaire, à la Prévert, déjà si indispensable qu’on se demande comment on a fait jusqu’à maintenant !
Cela étant, vous m’accorderez que, le fait que ce soit dans la documentation ne signifie ni que ça marche, ni que ce soit simple. J’ai quelques bon contre-exemples sur cette version justement. Enfin, pour Data Guard, c’est une belle histoire et je vous propose donc de partager à travers une série de 5 articles quelques unes des fonctionnalités associées. Le plan que j’ai imaginé est le suivant :
- Le 1er article (celui-ci), présente comment créer une configuration Data Guard en 5 minutes, en plus du temps de copie de la base de données et comment effectuer une transition des roles des bases de données
- Le 2nd article, présente comment changer le mode de protection, activer Snapshot Standby et Real Time Query
- Le 3ème article illustre le fonctionnement de la correction automatique de blocs corrumpus sur la base de données primaire et standby
- Le 4ème article démontre comment garantir la fraicheur des données sur la standby
- Le 5ème article illustre l’utilisation du Block Change Tracking File sur la base standby et l’utilisation de la commande
recover database noredo
pour gérer la perte d’un fichier archivelog
Il me semble qu’il s’agit d’un tour d’horizon assez complet de l’état de l’art de Data Guard en 11g Release 2. Bien sur, si vous avez d’autres idées, n’hésitez pas à les partager en laissant vos commentaires…
J’espère que votre intérêt est aiguisé ! Maintenant, commençons par constituer un environnement pour nos tests en 5 minutes ou à peine plus.
Un environnement de test
Pour faire mes tests, j’ai utilisé Oracle 11g Release 2 sur Linux 32 bits. La base de données primaire et son instance s’appellent BLACK
. La base de données standby s’appellera forcément BLACK
mais son instance et son db_unique_name
s’appelleront WHITE
.
A quelques nuances près comme l’utilisation de oradim
sur Windows ou OpenVMS, vous pourrez réaliser des configurations tout aussi simplement sur votre système d’exploitation préféré. Sur cet environnement, il y a une seule base de données standby physique; les bases de données primaires et standby sont sur le même serveur. A ce propos, le fait que primaire et standby soient sur le même serveur rend la configuration plutôt plus complexe ! Cela nécessite que (1) vous utilisiez le paramètre db_unique_name
et (2) que l’arborescence des fichiers soit différente entre les bases de données primaires et standby.
D’autre part, vous noterez que l’arborescence de la base de données primaire est compatible OFA. Les fichiers de données résident sur un système de fichiers et n’utilisent pas une configuration Oracle Managed Files (OMF). Si, avec une configuration OMF (ou ASM), la configuration est encore plus simple, vous serez attentif à changer l’arborescence de manière pertinente dans le cas où vous n’utilisez pas OFA.
Avant de commencer
Voici quelques notes, en vrac, avant de démarrer :
- La commande
DUPLICATE ... FROM ACTIVE DATABASE
permet de créer la base de données standby en 8 lignes. Il faut noter quelques points à ce propos : (1) cette commande ne nécessite pas d’option d’après la lecture d’Oracle® Database Licensing Information, (2) cette commande ne permet pas (au moins d’après ma compréhension !) d’utiliser d’algorithme de compression, ni de paralléliser la copie de la base de données. Ce dernier point en particulier limite l’intérêt de cette approche pour des grosses bases de données. Dans ce cas, il faudra sans doute utiliser une approche en plusieurs étapes avec une commandeduplicate
depuis une sauvegarde. - La syntaxe RMAN
startup auxiliary
ne fonctionne plus ! Il faut désormais utiliser obligatoirementstartup clone
- Il n’est pas nécessaire d’avoir un fichier d’initialisation init.ora ou spfile pour démarrer la base de données auxiliaire; c’est sûrement vrai depuis 10g mais je l’ai découvert par hasard.
- La standby physique fonctionne désormais même lorsque le fichier de mot de passe est créé avec
ignorecase=n
et que le paramètresec_case_sensitive_logon
est positionné àtrue
- Le paramètre
StaticConnectIdentifier
du broker 11g R2 permet de positionner des alias TNS avec des enregistrements statiques de nom d’instance et qui, par conséquent fonctionnement même lorsque les instances sont arrêtées - La commande du broker
edit configuration set property
permet à partir de 11g R2 de changer une propriété de la configuration Data Guard sur l’ensemble des bases de données simultanément.
Service, fichier de mot de passe et configuration réseau
Comme le titre de ce paragraphe le suggère, configurer manuellement une base de données standby nécessite que vous commenciez par configurer le service pour cette nouvelle base de données, le fichier de mot de passe et les listeners et alias TNS. Commencez donc par le service; sur Linux et Unix, cela consiste à alimenter le fichier oratab
comme ci-dessous :
$ echo "WHITE:/u01/app/oracle/product/11.2.0/db_1:Y" >> /etc/oratab
L’étape suivante consiste à créer un fichier de mots de passe pour notre nouvelle instance standby. Le mot de passe utilisé, ainsi que la politique de respect de la casse, pour SYS
(si vous utilisez SYS
) doit être identique à celui de la base de données primaire. Voici comment configurer ce mot de passe sur le serveur de la standby :
. oraenv WHITE cd $ORACLE_HOME/dbs orapwd file=orapwWHITE entries=5
Ensuite, je vous conseille, pour simplifier la mise en oeuvre de la commande duplicate
et de la gestion des roles d’effectuer des enregistrements statiques des instances dans les listeners respectifs de BLACK
et de WHITE
:
. oraenv BLACK cd $ORACLE_HOME/network/admin cat listener.ora [...] SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1) (SID_NAME = BLACK) ) [...] ) lsnrctl reload LISTENER . oraenv WHITE cd $ORACLE_HOME/network/admin cat listener.ora [...] SID_LIST_LISTENER = (SID_LIST = [...] (SID_DESC = (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1) (SID_NAME = WHITE) ) ) lsnrctl reload LISTENER
Enfin, sur dans tous les $ORACLE_HOME
de vos configurations, ajoutez les alias TNS pour se connecter à BLACK
et WHITE
. Par exemple, dans mon cas, j’utilise le fichier tnsnames.ora
et j’ai ajouté les entrées ci-dessous:
cat tnsnames.ora BLACK = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = arkzoyd-black)(PORT = 1521)) ) (CONNECT_DATA = (SID = BLACK) ) ) WHITE = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = arkzoyd-white)(PORT = 1521)) ) (CONNECT_DATA = (SID = WHITE) ) )
Créer la base de données standby
Pour créer la base de données standby, il suffit de démarrer l’instance WHITE
depuis recovery manager en adaptant le script ci-dessous:
rman connect target sys/change_on_install@black connect auxiliary sys/change_on_install@white startup clone nomount;
Un message comme celui ci-dessous s’affiche :
startup failed: ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/db_1/dbs/initWHITE.ora' starting Oracle instance without parameter file for retrieval of spfile Oracle instance started Total System Global Area 159019008 bytes Fixed Size 1335192 bytes Variable Size 75497576 bytes Database Buffers 75497472 bytes Redo Buffers 6688768 bytes
Vous n’avez plus ensuite qu’à créer l’arborescence pour vos fichiers ; visiblement RMAN est capable de créer certains répertoires mais je n’ai pas eu l’opportunité de tester sans créer les répertoires pour les datafiles et archivelogs :
mkdir -p /u01/app/oracle/oradata/WHITE/archivelogs
Lancer enfin la commande duplicate
comme ci-dessous; vous remarquerez l’utilisation de seulement 4 paramètres :
DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DB_FILE_NAME_CONVERT 'BLACK','WHITE' SPFILE PARAMETER_VALUE_CONVERT 'BLACK','WHITE' SET LOG_FILE_NAME_CONVERT 'BLACK','WHITE' SET DB_UNIQUE_NAME 'WHITE';
Il ne vous reste plus qu’à patienter et le cas échéant, superviser l’avancement de la sauvegarde avec v$rman_status
et v$session_longops
; si vous n’utilisez qu’une base de test, en moins de 3 minutes, vous aurez constitué la base de données standby; voici un exemple d’exécution de la commande :
Starting Duplicate Db at 28-SEP-09 using target database control file instead of recovery catalog allocated channel: ORA_AUX_DISK_1 channel ORA_AUX_DISK_1: SID=9 device type=DISK contents of Memory Script: { backup as copy reuse targetfile '/u01/app/oracle/product/11.2.0/db_1/dbs/orapwBLACK' auxiliary format '/u01/app/oracle/product/11.2.0/db_1/dbs/orapwWHITE' targetfile '/u01/app/oracle/product/11.2.0/db_1/dbs/spfileBLACK.ora' auxiliary format '/u01/app/oracle/product/11.2.0/db_1/dbs/spfileWHITE.ora' ; sql clone "alter system set spfile= ''/u01/app/oracle/product/11.2.0/db_1/dbs/spfileWHITE.ora''"; } executing Memory Script Starting backup at 28-SEP-09 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=18 device type=DISK Finished backup at 28-SEP-09 sql statement: alter system set spfile= ''/u01/app/oracle/product/11.2.0/db_1/dbs/spfileWHITE.ora'' contents of Memory Script: { sql clone "alter system set audit_file_dest = ''/u01/app/oracle/admin/WHITE/adump'' comment= '''' scope=spfile"; sql clone "alter system set control_files = ''/u01/app/oracle/oradata/WHITE/control01.ctl'', ''/u01/app/oracle/flash_recovery_area/WHITE/control02.ctl'' comment= '''' scope=spfile"; sql clone "alter system set dispatchers = ''(PROTOCOL=TCP) (SERVICE=WHITEXDB)'' comment= '''' scope=spfile"; sql clone "alter system set log_archive_dest_1 = ''location=/u01/app/oracle/oradata/WHITE/archivelogs'' comment= '''' scope=spfile"; sql clone "alter system set LOG_FILE_NAME_CONVERT = ''BLACK'', ''WHITE'' comment= '''' scope=spfile"; sql clone "alter system set db_unique_name = ''WHITE'' comment= '''' scope=spfile"; shutdown clone immediate; startup clone nomount; } executing Memory Script sql statement: alter system set audit_file_dest = ''/u01/app/oracle/admin/WHITE/adump'' comment= '''' scope=spfile sql statement: alter system set control_files = ''/u01/app/oracle/oradata/WHITE/control01.ctl'', ''/u01/app/oracle/flash_recovery_area/WHITE/control02.ctl'' comment= '''' scope=spfile sql statement: alter system set dispatchers = ''(PROTOCOL=TCP) (SERVICE=WHITEXDB)'' comment= '''' scope=spfile sql statement: alter system set log_archive_dest_1 = ''location=/u01/app/oracle/oradata/WHITE/archivelogs'' comment= '''' scope=spfile sql statement: alter system set LOG_FILE_NAME_CONVERT = ''BLACK'', ''WHITE'' comment= '''' scope=spfile sql statement: alter system set db_unique_name = ''WHITE'' comment= '''' scope=spfile Oracle instance shut down connected to auxiliary database (not started) Oracle instance started Total System Global Area 1104814080 bytes Fixed Size 1335980 bytes Variable Size 671092052 bytes Database Buffers 419430400 bytes Redo Buffers 12955648 bytes contents of Memory Script: { backup as copy current controlfile for standby auxiliary format '/u01/app/oracle/oradata/WHITE/control01.ctl'; restore clone controlfile to '/u01/app/oracle/flash_recovery_area/WHITE/control02.ctl' from '/u01/app/oracle/oradata/WHITE/control01.ctl'; } executing Memory Script Starting backup at 28-SEP-09 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile copy copying standby control file output file name=/u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_BLACK.f tag=TAG20090928T221532 RECID=2 STAMP=698796932 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01 Finished backup at 28-SEP-09 Starting restore at 28-SEP-09 allocated channel: ORA_AUX_DISK_1 channel ORA_AUX_DISK_1: SID=134 device type=DISK channel ORA_AUX_DISK_1: copied control file copy Finished restore at 28-SEP-09 contents of Memory Script: { sql clone 'alter database mount standby database'; } executing Memory Script sql statement: alter database mount standby database contents of Memory Script: { set newname for tempfile 1 to "/u01/app/oracle/oradata/WHITE/temp01.dbf"; switch clone tempfile all; set newname for datafile 1 to "/u01/app/oracle/oradata/WHITE/system01.dbf"; set newname for datafile 2 to "/u01/app/oracle/oradata/WHITE/sysaux01.dbf"; set newname for datafile 3 to "/u01/app/oracle/oradata/WHITE/undotbs01.dbf"; set newname for datafile 4 to "/u01/app/oracle/oradata/WHITE/users01.dbf"; set newname for datafile 5 to "/u01/app/oracle/oradata/WHITE/streams_tbs01.dbf"; set newname for datafile 6 to "/u01/app/oracle/oradata/WHITE/x01.dbf"; backup as copy reuse datafile 1 auxiliary format "/u01/app/oracle/oradata/WHITE/system01.dbf" datafile 2 auxiliary format "/u01/app/oracle/oradata/WHITE/sysaux01.dbf" datafile 3 auxiliary format "/u01/app/oracle/oradata/WHITE/undotbs01.dbf" datafile 4 auxiliary format "/u01/app/oracle/oradata/WHITE/users01.dbf" datafile 5 auxiliary format "/u01/app/oracle/oradata/WHITE/streams_tbs01.dbf" datafile 6 auxiliary format "/u01/app/oracle/oradata/WHITE/x01.dbf" ; sql 'alter system archive log current'; } executing Memory Script executing command: SET NEWNAME renamed tempfile 1 to /u01/app/oracle/oradata/WHITE/temp01.dbf in control file executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME Starting backup at 28-SEP-09 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile copy input datafile file number=00001 name=/u01/app/oracle/oradata/BLACK/system01.dbf output file name=/u01/app/oracle/oradata/WHITE/system01.dbf tag=TAG20090928T221540 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:35 channel ORA_DISK_1: starting datafile copy input datafile file number=00002 name=/u01/app/oracle/oradata/BLACK/sysaux01.dbf output file name=/u01/app/oracle/oradata/WHITE/sysaux01.dbf tag=TAG20090928T221540 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:25 channel ORA_DISK_1: starting datafile copy input datafile file number=00003 name=/u01/app/oracle/oradata/BLACK/undotbs01.dbf output file name=/u01/app/oracle/oradata/WHITE/undotbs01.dbf tag=TAG20090928T221540 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03 channel ORA_DISK_1: starting datafile copy input datafile file number=00006 name=/u01/app/oracle/oradata/BLACK/x01.dbf output file name=/u01/app/oracle/oradata/WHITE/x01.dbf tag=TAG20090928T221540 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03 channel ORA_DISK_1: starting datafile copy input datafile file number=00005 name=/u01/app/oracle/oradata/BLACK/streams_tbs01.dbf output file name=/u01/app/oracle/oradata/WHITE/streams_tbs01.dbf tag=TAG20090928T221540 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01 channel ORA_DISK_1: starting datafile copy input datafile file number=00004 name=/u01/app/oracle/oradata/BLACK/users01.dbf output file name=/u01/app/oracle/oradata/WHITE/users01.dbf tag=TAG20090928T221540 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01 Finished backup at 28-SEP-09 sql statement: alter system archive log current contents of Memory Script: { switch clone datafile all; } executing Memory Script datafile 1 switched to datafile copy input datafile copy RECID=2 STAMP=698797010 file name=/u01/app/oracle/oradata/WHITE/system01.dbf datafile 2 switched to datafile copy input datafile copy RECID=3 STAMP=698797010 file name=/u01/app/oracle/oradata/WHITE/sysaux01.dbf datafile 3 switched to datafile copy input datafile copy RECID=4 STAMP=698797010 file name=/u01/app/oracle/oradata/WHITE/undotbs01.dbf datafile 4 switched to datafile copy input datafile copy RECID=5 STAMP=698797010 file name=/u01/app/oracle/oradata/WHITE/users01.dbf datafile 5 switched to datafile copy input datafile copy RECID=6 STAMP=698797010 file name=/u01/app/oracle/oradata/WHITE/streams_tbs01.dbf datafile 6 switched to datafile copy input datafile copy RECID=7 STAMP=698797010 file name=/u01/app/oracle/oradata/WHITE/x01.dbf Finished Duplicate Db at 28-SEP-09
Démarrer le broker et créer les standby logs
Remarquez qu’on aurait pu commencer par démarrer le broker et les standby logs. Avant ou maintenant, en fait, peu importe ! Démarrer le process dmon
sur les 2 instances et créer les fichiers de standby logs en prenant soin de vous assurer que la taille des fichiers est égale ou supérieure à celle des redologs, comme ci-dessous :
sqlplus sys/change_on_install@black as sysdba alter system set dg_broker_start=true; set num 15 select group#, thread#, bytes from v$log order by group#; alter database add standby logfile thread 1 group 4 ('/u01/app/oracle/oradata/BLACK/standby04.log') SIZE 52428800; alter database add standby logfile thread 1 group 5 ('/u01/app/oracle/oradata/BLACK/standby05.log') SIZE 52428800; alter database add standby logfile thread 1 group 6 ('/u01/app/oracle/oradata/BLACK/standby06.log') SIZE 52428800; exit; sqlplus sys/change_on_install@white as sysdba alter system set dg_broker_start=true; alter database add standby logfile thread 1 group 4 ('/u01/app/oracle/oradata/WHITE/standby04.log') SIZE 52428800; alter database add standby logfile thread 1 group 5 ('/u01/app/oracle/oradata/WHITE/standby05.log') SIZE 52428800; alter database add standby logfile thread 1 group 6 ('/u01/app/oracle/oradata/WHITE/standby06.log') SIZE 52428800; exit;
Créer et activer la configuration Data Guard
Pour terminer la configuration, il suffit de créer la configuration dans le broker et de l’activer; l’ensemble du paramétrage de la « managed » standby sera créé en conséquence :
dgmgrl sys/change_on_install@black create configuration worldwide as primary database is BLACK connect identifier is BLACK; Configuration "worldwide" created with primary database "black" add database white as connect identifier is white maintained as physical; Database "white" added show configuration Configuration - worldwide Protection Mode: MaxPerformance Databases: black - Primary database white - Physical standby database Fast-Start Failover: DISABLED Configuration Status: DISABLED enable configuration; Enabled. show configuration verbose; Configuration - worldwide Protection Mode: MaxPerformance Databases: black - Primary database white - Physical standby database Fast-Start Failover: DISABLED Configuration Status: SUCCESS
Pour terminer, enregistrez les alias TNS statique dans le nouveau paramètre d’Oracle 11g Release 2 StaticConnectIdentifier
; cela simplifie la lisibilité de la configuration ainsi que les arrêts/démarrages des instances depuis le broker:
edit database white set property StaticConnectIdentifier='WHITE'; edit database black set property StaticConnectIdentifier='BLACK';
Changer les rôles des bases de données
Vous voulà prêt à tester le changement de rôle des bases de données (et 2 minutes qui font 5 avec les 3 minutes précédentes!); toujours depuis l’interface en ligne de commande du broker :
switchover to WHITE;
Performing switchover NOW, please wait... New primary database "white" is opening... Operation requires shutdown of instance "BLACK" on database "black" Shutting down instance "BLACK"... ORA-01109: database not open Database dismounted. ORACLE instance shut down. Operation requires startup of instance "BLACK" on database "black" Starting instance "BLACK"... ORACLE instance started. Database mounted. Switchover succeeded, new primary is "white"
Et dans le sens inverse :
switchover to black;
Performing switchover NOW, please wait... New primary database "black" is opening... Operation requires shutdown of instance "WHITE" on database "white" Shutting down instance "WHITE"... ORA-01109: database not open Database dismounted. ORACLE instance shut down. Operation requires startup of instance "WHITE" on database "white" Starting instance "WHITE"... ORACLE instance started. Database mounted. Switchover succeeded, new primary is "black" show configuration verbose; Configuration - worldwide Protection Mode: MaxPerformance Databases: black - Primary database white - Physical standby database Fast-Start Failover: DISABLED Configuration Status: SUCCESS
Conclusion de ce premier article
Après ce premier article, personne ne dira plus jamais que Data Guard et les managed standby sont compliqués ! Après tout, si vous ne gardez que la substance de cette article, il y a, tout au plus, 15 lignes utiles. Et vous verrez bientôt qu’ensuite, c’est encore plus facile ! Est-ce que ça vous intéresse ?
14 réflexions sur “Oracle 11g Release 2 Data Guard (1/5) : 5 minutes pour créer une configuration”
Ping : Oracle Database 11g Release 2 Data Guard (6/5): Créer une standby logique avec le broker | EASYTEAM
Ping : Oracle Database 11g Release 2 Data Guard (6/5): Créer une standby logique avec le broker | EASYTEAM LE BLOG
Ping : Oracle Database 11g Release 2 Data Guard (7/5): Observer et Fast Start Failover « EASYTEAM LE BLOG
Bonjour,
Je pense que la vrai nouveauté du rman dans cette version 11gr2 est de pouvoir faire un duplicate de la base sans que la cible soit disponible:
DUPLICATE DATABASE TO WHITE
BACKUP LOCATION ‘/u02/oradata/backup_WHITE’; – emplacement du backup sur disque.
Bonne journée
Pardon j’ai oublié : et même sans se connecter au catalog !
Ping : Active Data Guard 11g Release 2 (5/5) : BCTF et RECOVER NOREDO sur la Standby « EASYTEAM Le BLOG
Ping : Oracle 11g Release 2 Data Guard (3/5) : Automatic Block Media Recovery « EASYTEAM Le BLOG
Ping : Oracle 11g Release 2 Data Guard (2/5) : Compression, Snapshot Standby, Real Time Query, etc « EASYTEAM Le BLOG
A propos de ma 3è suggestion, j’avais effectivement oublié que l’on pouvait avoir une hétérogénéité des OS entre la primary et la standby. A propos, est-ce que Oracle ne conseille pas fortement que la primary et la standby aient le même OS ?
Concernant ma question, je craignais que les switchovers et les transitions de rôles à l’aide de dgmgrl échouent du fait de l’absence d’une ligne avec global_dbname et le suffixe _DGMGRL. Mais vous avez effectivement montré que les transitions de rôles marchent. Et je me demande si la présence de la primary et de la standby sur la même machine physique n’y est pas pour quelque chose dans cette réussite ou si ce n’est pas le miracle du nouveau paramètre « staticConnectIdentifier ».
Je vais regarder ce nouveau paramètre mais votre éclairage ne sera pas de trop.
Cdlt,
Komlan
Hello,
Après un lecture attentive de ce premier du riche programme que vous nous avez proposé, je reviens avec trois suggestions et une question :
– Créer un fichier init.ora minimaliste pour la standby. Il ne devrait contenir qu’une ligne avec « db_name=BLACK ». Je pense que cela éviterait le message « startup failed », dans l’esprit des bonnes pratiques.
– Créer les standby redologs sur la primaire avant l’exécution de la commande duplicate. Cela éviterait de les créer manuellement deux fois (une fois sur la primaire et une 2è fois sur la standby) par la suite.
– Copier le fichier des mots de passe de la primaire sur la standby en lui donnant le nom adéquat.
Ces trois suggestions ont été mises en oeuvre il y a un mois dans un test 11gR1 dont le compte-rendu se trouve sur le blog bd-oracle passion (http://bkomlan.blogspot.com – Création d’une active dataguard, une procédure compacte).
Pensez-vous qu’avec des SID_DESC simplifiés dans les fichiers listener.ora, vous n’aurez pas de message ORA-12514 lors des switchovers et autres conversions à l’aide de dataguard broker (dgmgrl) ?
[A ma connaissance, jusqu’à la 11gR1, il fallait à peu près :
(SID_DESC =
(GLOBAL_DBNAME = _DGMGRL.)
(SERVICE_NAME = .)
(SID_NAME = )
(ORACLE_HOME = )
)
]
Encore une fois, merci pour le joli travail qui montre que l’on peut aller encore plus loin que je ne le pensais.
Cordialement,
Komlan
Attention (!!!!!)
L’outil de gestion des commentaires a massacré et rendu incompréhensibles plusieurs lignes de déclaration de service (in listener.ora) contenu dans mon dernier post.
Webmaster, au secours ! Que dois-je faire ou comment dois-je faire ?
Je tente une correction bricolée dans l’espoir que ça passe :
(SID_DESC =
(GLOBAL_DBNAME = [db_unique_name]_DGMGRL.[db_domain])
(SERVICE_NAME = [db_unique_name].[db_domain])
(SID_NAME = [ORACLE_SID])
(ORACLE_HOME = [ORACLE_HOME])
)
Cdlt,
Komlan
Concernant les 3 remarques :
1) Tout est une question de rapidité. Je voulais montrer que ça marche même sans init.ora.
2) D’accord. C’est ce que je voulais dire avec mon commentaire à propos du moment pour créer les standby logs
3) Est-ce que marche dans tous les cas ? On peut avoir une standby Windows d’une primaire Linux. Il faut s’assurer avec la copie d’avoir les bon droits et faire un scp si les serveurs sont distant. Je préfère la méthode orapwd. Cela dit, on fait comme on veut.
Je ne comprends pas la question à propos du paramétrage du listener.ora. Quel est le problème qu’on essaie de résoudre ? Il n’y a pas de ORA-12514 dans mon test.
A propos des messages d’erreurs, ça va vous faire plaisir, toutes les utilisations de crsctl, même avec succès, en 11.2 renvoient un message « CRS-« .
Cher Master,
Ah que oui je suis intéressé ! Je viens tout juste de faire un upgrade de ma certification de OCP 10g vers 11g (histoire de me forcer à étudier la théorie) et j’ai une furieuse envie de tester les nouvelles fonctionalités de la 11gR2 sur Linux (redhat). Vos articles sont appréciés et attendus. Au sein de ma société, on commence tout juste à mettre du 11g en production. Mais les nouvelles fonctionalités sont très intéressantes. Je considère pour ma part que la 11g… c’est de la 10g accomplie. Cela fait du bien d’avoir un explorateur qui nous dit « devinez ce que je viens de trouver sous une pierre … ». Un tout grand merci et on attend la suite avec gourmandise.
Très cordialement,
Michel
Bonjour, Brave collègue
C’est peu de dire que ça nous intéresse.
J’aurais bien souhaité prendre en charge une partie de ce travail avec vous, car c’est un joli rendez-vous du donner et du recevoir.
Bref je vous suivrai pas à pas et je ne manquerai pas de vous balancer de temps en temps des mails d’encouragement et quelques petites questions.
Bon courage !
Bien cordialement,
Komlan
Les commentaires sont fermés.