Quitte ou double : passer d'une instance simple à une base en cluster

Avancé-expert

Transformez votre instance en une base en cluster, en utilisant uniquement la ligne de commande

Article lu   fois.

L'auteur

Profil ProSite personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Introduction

Cet article a pour but de vous présenter la manière de créer une base de données Oracle en cluster, et ce uniquement en passant par les lignes de commandes.

Oracle livre un utilitaire nommé rconfig pour faire de même. Il n'est ma foi pas si simple à utiliser, et n'enlève rien à l'aspect pédagogique de cet article qui vous permettra de mieux appréhender ce qui se trame en interne.

Oracle publie des assistants pour ce type d'installation, mais parfois dans ces environnements ma foi complexes, ces outils ne se comportent pas de la façon que l'on souhaite.

Le retour à la ligne de commande a ceci de sympathique qu'il A) permet de comprendre plus à fond les concepts et B) fonctionne dans la quasi totalité des cas.

Pour cet article, nous nous baserons sur les hypothèses suivantes:

  • Le cluster Oracle 10gR2 est installé et configuré correctement
  • Nous avons à disposition 2 machines linux (dvpora01 et dvpora02), en Korn linux
  • Nous travaillons avec des bases Oracle 10gR2 minimums dont le Oracle Home se situe, sur chacune des machines, sous /opt/oracle/db10gr2
  • Nous avons un point de montage partagé entre ces deux instances : /oradata/dbMaBase
  • La base en stand-alone actuelle est déjà installée et se nomme MaBase; ses tablespaces sont déjà situés sur la partie partagée du cluster

II. Préparer l'instance à sa transformation

Les 2 instances vont quasiment tout se partager, hormis 3 composants

  • Le nom de l'instance
  • Le UNDO tablespace
  • Les fichiers de journaux

Pour le premier élément, nous l'avons vu, il s'agit d'un des paramètres du spfile (ou, c'est selon, du init.ora)

Pour le undo tablespace, il nous faut en créer un deuxième sur l'instance existante. C'est ensuite au niveau du spfile que la distribution s'effectuera

 
Sélectionnez
create undo tablespace "UNDOTBS2" datafile size 100M autoextend on next 10M maxsize unlimited

En ce qui concerne les fichiers de journaux, il va nous falloir créer un second groupe de journaux, dédié au thread 2, les 2 existants étant par défaut dédiés au thread 1.

 
Sélectionnez
alter database add logfile thread 2 group 3 ('/oradata/redo/redo_03_02.rdo','/oradata/redom/redo_03_02.rdo') ;
alter database add logfile thread 2 group 4 ('/oradata/redo/redo_04_02.rdo','/oradata/redom/redo_04_02.rdo') ;

Il faut encore créer les bases catalogues du cluster dans la base

 
Sélectionnez
sqlplus / as sysdba @$ORACLE_HOME/rdbms/admin/catclust

III. Préparer les fichiers

Le fichier pfile (éventuellement spfile) se trouvant dans $ORACLE_HOME/dbs va devoir subir quelques transformations et être déplacé sur une partie de disque partagé

 
Sélectionnez
*.cluster_database_instances=2
*.cluster_database=true
*.remote_listener='LISTENERS_MaBase'
MaBase1.thread=1
MaBase2.thread=2
MaBase1.instance_number=1
MaBase2.instance_number=2
MaBase1.instance_name=MaBase1
MaBase2.instance_name=MaBase2
MaBase1.undo_tablespace='UNDOTBS1'
MaBase2.undo_tablespace='UNDOTBS2'

IV. Cataloguer la base dans le référentiel de l'ocr

Ajouter la base

 
Sélectionnez
srvctl add database -d MaBase -o /opt/oracle/db10gr2 -p /oradata/admin/spfileMaBase.ora

Ajouter les 2 instances

 
Sélectionnez
oracle> srvctl add instance -d MaBase -i MaBase1 -n dvpora01
oracle> srvctl add instance -d MaBase -i MaBase2 -n dvpora02

Ajouter les 2 services

 
Sélectionnez
oracle> srvctl add service -d MaBase -s MaBase -r "MaBase1,MaBase2"  -P basic

Démarrer le tout

 
Sélectionnez
oracle> srvctl start database -d MaBase
oracle> srvctl start service -d MaBase

A ce stade, la base devrait passer ONLINE, ainsi que l'instance MaBase1 et le service éponyme. L'instance MaBase2 et son service devraient avoir une cible (TARGET) à ONLINE mais un statut à OFFLINE... ce qui est normal pour l'instant.

V. Activer la base en cluster

Se connecter sur la base principale et activer la 2ème instance : c'est généralement l'oubli qui fait que seule la première des deux instances peut démarrer.

 
Sélectionnez
ALTER DATABASE ENABLE THREAD 2 ;

A ce niveau, soit l'instance MaBase2 démarre, suivie de son service, soit il est pafois nécessaire de l'arrêter et de la redémarrer explicitement

 
Sélectionnez
srvctl stop instance -d MaBase -i MaBase2
oracle> srvctl start instance -d MaBase -i MaBase2
oracle> srvctl stop service -d MaBase 
oracle> srvctl start service -d MaBase 
 
Sélectionnez

oracle> crs_stat -t

Name           Type           Target    State     Host        
------------------------------------------------------------
ora....SE1.srv application    ONLINE    ONLINE    dvpora01   
ora....SE2.srv application    ONLINE    ONLINE    dvpora02   
ora....ASE1.cs application    ONLINE    ONLINE    dvpora02   
ora....E1.inst application    ONLINE    ONLINE    dvpora01   
ora....E2.inst application    ONLINE    ONLINE    dvpora02   
ora.MABASE.db  application    ONLINE    ONLINE    dvpora02   
ora....E1.lsnr application    ONLINE    ONLINE    dvpora01   
ora....SE1.gsd application    ONLINE    ONLINE    dvpora01   
ora....SE1.ons application    ONLINE    ONLINE    dvpora01   
ora....SE1.vip application    ONLINE    ONLINE    dvpora01   
ora....E2.lsnr application    ONLINE    ONLINE    dvpora02   
ora....SE2.gsd application    ONLINE    ONLINE    dvpora02   
ora....SE2.ons application    ONLINE    ONLINE    dvpora02   
ora....SE2.vip application    ONLINE    ONLINE    dvpora02

Si tout se passe bien (= si le crs_stat -t vous retourne tous les éléments ONLINE), félicitations, vous devriez avoir maintenant une base en RAC à 2 noeuds.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2007 fadace. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.