testbed : NoSQL 11.2.2.0

 Cet article décrit la procédure pour installer et paramétrer une base de données NoSQL 11gR2 (11.2.2.0)  sous Oracle Linux 6U3.

 

Prérequis

La version installé dans le présent article est la 11.2.2.0.26 version CE.

A l’heure où l’article est écrit il y a déjà la 11.2.2.0.39 qui est sortie.

Pour télécharger la 11.2.2.0.x, aller sur le lien Download NoSQL (ou bien mon ami google : download nosql oracle Wink)

 

Pour les OS linux, ils ont été créés avec Oracle VirtualBox, avec exactement les mêmes packages que dans l'excellent article testbed : 11gR2 RAC ASM. Ce sont donc des Oracle Entreprise Linux 6 Update 3.

 

Installation du moteur NoSQL

Prérequis

Pour installer Oracle NoSQL, préparez 2 serveurs Oracle Linux 6 (même type d’installation que dans testbed : 11gR2 RAC ASM) grâce à Oracle VirtualBox. Vous pouvez utiliser plus de serveurs mais ici, deux suffiront pour comprendre comment NoSQL s’installe.

Prérequis avant de commencer l’installation :

-          Les deux serveurs doivent pouvoir être pingable entre eux.

-          Le hostname doit être « résolvable » dans le /etc/hosts.

-          Les serveurs doivent être synchronisés au niveau temps. Il est recommandé d’avoir moins d’une demi-seconde d’écart. Comme nous utilisons VirtualBox pas de soucis de paramétrage NTP, les machines invités sont synchro à la machine hôte.

-          La version de java doit être au minimum JDK 1.6.0u25. La version de java est la 1.6.0u24 en suivant la documentation testbed : 11gR2 RAC ASM, il faut donc faire un upgrade. Ici nous avons installé la 1.6.0u43:

[nosql@nosqldc1 ~]$ java -version
java version "1.6.0_43"

 

Installation

Dans la documentation il n’est pas précisé s’il faut utiliser un compte particulier avec des droits particuliers. Il y a juste écrit :

You do not necessarily need root access on each node for the installation process.

Donc nous créons sur nos serveurs un compte nommé nosql (original non ?) :

[root@nosqldc1 ~]# useradd -u 2000 nosql

Créons alors le  répertoire /NOSQL dans lequel sera stocké le moteur NoSQL et la database (/NOSQL/DATA).

[root@nosqldc1 NoSQL]# mkdir -p /NOSQL
[root@nosqldc1 NoSQL]# mkdir -p /NOSQL/DATA

Décompressons alors le moteur

[root@nosqldc1 NoSQL]# unzip kv-ce-2.0.26.zip -d /NOSQL
[root@nosqldc1 ~]# chown -R nosql.nosql /NOSQL/

Et voilà le moteur NoSQL database est installé. Eh oui c’est plus simple qu’un moteur RAC… oui bon en fait c’est vrai, « installer n’est pas configurer », c’est souvent la configuration qui est plus délicate. Mais aussi une différence avec un moteur Oracle Database, il n’y a pas de compilation de binaire donc de dépendance à des packages.

 

Configuration

Nous nommerons par la suite KVHOME le répertoire d’installation /NOSQL/kv-2.0.26 des binaires de NoSQL, et nous nommerons KVROOT celui où seront mis les données soit /NOSQL/DATA.

KVHOME et KVROOT doivent être locaux aux serveurs. Evidement vous pouvez utiliser 2 filesystems différents, ici tout a été mis dans le même répertoire (/NOSQL) dans / par facilité.

Ce n’est pas obligatoire, mais peut être pratique, mettre dans le profile du compte nosql:

vi .bash_profile
export KVHOME=/NOSQL/kv-2.0.26
export KVROOT=/NOSQL/DATA

Il faut créer sur chaque nœud le fichier de configuration de boot (de NoSQL)

Sur nosqldc1:

java -jar $KVHOME/lib/kvstore.jar makebootconfig -root $KVROOT -port 5000 -admin 5001 -host nosqldc1 -harange 5010,5020 -capacity 1 -num_cpus 0

A la racine de KVROOT, il y a entre autre le fichier config.xml, que vous pouvez ouvrir. Il contient la configuration.

Puis sur nosqldc2, idem mais on ne précise pas le port d’admin, nosql1 sera le serveur d’admin par défaut au démarrage :

java -jar $KVHOME/lib/kvstore.jar makebootconfig -root $KVROOT -port 5000 -host nosqldc2 -harange 5010,5020 -capacity 1 -num_cpus 0

Pour une explication rapide des paramètres:

-root $KVROOT : là où seront les données

-port 5000 : le port TCP/IP pour se connecter à la base (c’est un peu le 1521 d’Oracle Database Wink )

-admin 5001 : le port TCP/IP d’administration

-host nosql2 : le nom du serveur sur lequel on installe. Le nom et donc l’IP sur laquelle on pourra se connecter.

-harange 5010,5020 : la plage de port pour les nœuds de réplication pour leur communication intrinsèque. Un nœud de réplication = port, donc ici 10 nœuds de réplication possible.

-capacity 1 : la capacité d’un nœud de stockage (ici nosql1 ou nosql2) à supporter un nœud de réplication. 1 est le par défaut, le mettre à plus de 1 dépend de la puissance du serveur.

-num_cpus 0 : le nombre de CPU disponible pour les nœuds de réplication.  Le par défaut est 0, et signifie que le nombre total de CPU du serveur pourra être utilisé.

Il y a aussi comme paramétrage possible :

-memory_mb 0 :Comme pour le cpu ci-dessus, mais pour la mémoire. 0 le par défaut et signifie toute la mémoire du serveur.

 

L’agent des nœuds de stockage (SNA : Storage Node Agent) de la base NoSQL peut être démarré sur chaque nœud comme suit:

nohup java -jar $KVHOME/lib/kvstore.jar start -root $KVROOT&

Pour vérifier que les process de la base NoSQL sont bien up:

[nosql@nosqldc1 NOSQL]$ jps -m
2822 kvstore.jar start -root /NOSQL/DATA
2904 Jps -m
2874 ManagedService -root /NOSQL/DATA -class Admin -service BootstrapAdmin.5000 -config config.xml

Nous constatons un process de plus sur nosql1, celui du service d’administration.

Pour vérifier que le client NoSQL peut contacter le SNA (Storage Node Agent)

[nosql@nosqldc1 NOSQL] java -jar $KVHOME/lib/kvstore.jar ping -port 5000 -host nosqldc1

[nosql@nosqldc1 NOSQL]$ java -jar $KVHOME/lib/kvstore.jar ping -port 5000 -host nosqldc1
SNA at hostname: nosqldc1, registry port: 5000 is not registered.
       No further information is available

Non ce n’est pas un message d’erreur, tout va bien, le ping répond qu’il n’y a que le SNA qui est up. En fait c’est un peu comme un « lsnrctl status », qui répondrait que le listener est up mais qu’il n’y a aucune base de donnée Oracle d’enregistrée.

 

Configurer le "magasin"

Nous avons un moteur qui tourne, c’est bien, mais maintenant il faut configurer le KVStore : collection de nœud de stockage (Storage Node SN)

Pour configurer, il faut utiliser l’utilitaire runadmin. C’est un outil de ligne de commande :

[nosql@nosqldc1 NOSQL]$  java -jar $KVHOME/lib/kvstore.jar runadmin -port 5000 -host nosqldc1
kv->

Nommons le KVstore :

kv->  configure -name monmagasin
Store configured: monmagasin

Crééons le Data Center

kv-> plan deploy-datacenter -name "Toulouse" -rf 2 -wait
Executed plan 1, waiting for completion...
Plan 1 ended successfully

kv-> show plans
     1 Deploy Datacenter (1)    SUCCEEDED

Nous avons mis ici 2 à la variable rf (Replication Factor), cela signifie que nous aurons des Shards de 2 RN (Replication Node).

kv-> show topology
store=monmagasin  numPartitions=0 sequence=1
  dc=[dc1] name=Toulouse repFactor=2

Maintenant il faut créer le process d’administration sur un SN en particulier… choisissons au hasard nosqldc1

kv-> plan deploy-sn -dc dc1 -host nosqldc1 -port 5000 –wait

kv-> plan deploy-admin -sn sn1 -port 5001 –wait

kv-> show topology
store=monmagasin  numPartitions=0 sequence=2
  dc=[dc1] name=Toulouse repFactor=2
sn=[sn1]  dc=dc1 nosqldc1:5000 capacity=1 RUNNING

Créeons un pool de SN, et mettons y le sn1 (nosqldc1):

kv-> pool create -name ToulousePool

kv->pool join -name ToulousePool -sn sn1
Added Storage Node(s) [sn1] to pool ToulousePool

 

Comme nous avons créé précédemment un process d’administration, nous pouvons nous y connecter en http (nosqldc1:5001)…

 …et voir graphiquement ce que nous sommes en train de construire... comme c'est beau! Smile

 Nous ne voyons que nosqldc1, nous allons maintenant rajouter son copain nosqldc2.

Sur nosqldc2 nous vérifions que le moteur NoSQL est bien up:

[nosql@nosqldc2 DATA]$ jps -m
2580 Jps -m
2540 kvstore.jar start -root /NOSQL/DATA

Et à partir de nosqldc1 nous rajoutons nosqldc2 dans notre Data Center Toulouse (DC1):

kv->  plan deploy-sn -dc dc1 -host nosqldc2 -port 5000 -wait
Executed plan 5, waiting for completion...
Plan 5 ended with errors. Use "show plan -id 5" for more information

 

Aïe aïe… que ce passé-t-il donc ? Moi qui aime quand un plan se déroule sans accroc.

Voyons voir:

 

kv-> show plan -id 5
Plan Deploy Storage Node (5)
State:                 ERROR                       
Attempt number:        1                           
Started:               2013-04-13 19:55:23 UTC     
Ended:                 2013-04-13 19:55:23 UTC     
Plan failures:        
       Failure 1: 1/DeploySN failed.: Exception creating connection to: nosqldc2; nested exception is:
       java.net.NoRouteToHostException: No route to host
Total tasks:           1                           
Failed:               1                           
Failures:   Task   1       ERROR at   2013-04-13 19:55:23 UTC: DeploySN sn2(nosqldc2:5000): 1/DeploySN failed.: Exception creating connection to:
nosqldc2; nested exception is:
       java.net.NoRouteToHostException: No route to host: java.rmi.ConnectIOException: Exception creating connection to: nosqldc2; nested exception is:
       java.net.NoRouteToHostException: No route to host
       at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:614)
[...]
       at java.lang.Thread.run(Thread.java:662)
Caused by: java.net.NoRouteToHostException: No route to host
       at java.net.PlainSocketImpl.socketConnect(Native Method)
       at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
       at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
[...]
      at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128)
       at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595)
       ... 16 more

java.net.NoRouteToHostException: No route to host  --> Pourtant nosqldc2 est bien résolvable est joignable à partir de nosqldc1 et vice versa…

Comme souvent il faut penser au firewall...

[root@nosqldc1 ~]# /etc/init.d/iptables stop
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Unloading modules:                               [  OK  ]
[root@nosqldc1 ~]# chkconfig iptables off

Et même punition sur nosqldc2

Recommençons

 

kv-> plan deploy-sn -dc dc1 -host nosqldc2 -port 5000 -wait
Executed plan 6, waiting for completion...
Plan 6 ended successfully

 Parfait! J'aime quand un plan se déroule sans accroc.

kv-> show topology
store=monmagasin  numPartitions=0 sequence=3

  dc=[dc1] name=Toulouse repFactor=2

  sn=[sn1]  dc=dc1 nosqldc1:5000 capacity=1 RUNNING
  sn=[sn2]  dc=dc1 nosqldc2:5000 capacity=1 RUNNING

 Voyons cela graphiquement:

 

Ajoutons nosqldc2 (sn2) dans le pool  à son tour

kv-> pool join -name ToulousePool -sn sn2
Added Storage Node(s) [sn2] to pool ToulousePool

Créeons enfin notre Topology.

kv-> topology create -name topo -pool ToulousePool -partitions 300
Created: topo

kv-> plan deploy-topology -name topo -wait

Le 300, ici, représente le nombre maximal de Shards. Ce nombre ne pourra plus être changé, c’est pour la vie !!! Donc ici nous avons mis 300 Shards, donc nous ne devrons jamais avoir plus de 300 partitions.

Admirons cela en texte…

kv-> show topology
store=monmagasin  numPartitions=300 sequence=306
dc=[dc1] name=Toulouse repFactor=2

  sn=[sn1]  dc=dc1 nosqldc1:5000 capacity=1 RUNNING
    [rg1-rn1] RUNNING
          No performance info available
  sn=[sn2]  dc=dc1 nosqldc2:5000 capacity=1 RUNNING
    [rg1-rn2] RUNNING
          No performance info available

  shard=[rg1] num partitions=300
    [rg1-rn1] sn=sn1
    [rg1-rn2] sn=sn2

 … bof pas très visual tout ça…

En mode graphique…

… ah oui.

Nous avons clairement 2 SN (nosqldc1 et nosqldc2), avec le même RG (Replication Group), ils forment donc un Shard.

 

[A SUIVRE]

Nous avons ici une configuration assez simple, avec un seul Shard.  Ici peut peut-être prochainement, comment rajouter des Shards ou alors cela sera dans la rubrique « about tech ».

testbed : 11gR2 RAC ASM

Cet article décrit la procédure pour installer une base de données RAC 11gR2 sous Oracle Linux 6U3 sous un PC Windows avec VitualBox comme logiciel de virtualisation "from scratch".

 

1-Pré-requis à télécharger

2-Montage "virtuel" du serveur RACDB1

3-Installation de l'OS: Linux Oracle 6U3

4-Installation du Guest Addon

5-Pré-requis pour le cluster RAC

6-Installation des disques partagés pour ASM

7-Installation et configuration d'ASMlib

8-Clonage de RACDB1 en RACDB2

9-Instalaltion du Grid Infrastructure

10-Création des diskgroups ASM

11-Installation du moteur RAC database

12-Création d'une base de données RAC

 

Pré-requis à télécharger

Machine hôte : PC intel core i5, 8Go de RAM, Windows 7 64bits. i5 on s'en moque, 8Go recommandé (avec 6 Go ça peut passer), Windows 7 pas important, 64bit obligatoire. 

Logiciel de virtualisation : VirtualBox 4.2.6 (http://www.virtualbox.org/wiki/Downloads). L'installation de VirtualBox n'est pas décrite ici, mais bon c'est du "suivant, suivant" Wink

Serveur  : Oracle Entreprise Linux Update 3 (http://edelivery.oracle.com/linux)

Base de données : Oracle Entreprise Database 11.2.0.3 + patch 11.2.0.3.4 (http://support.oracle.com/)

Documentation : Oracle Grid Infrastructure Installation Guide 11.2 for Linux
                        Oracle Database Installation Guide 11.2 for Linux

 

Montage "virtuel" du serveur RACDB1

Pour monter un RAC, il faut au minimum 2 serveurs. Nous allons commencer par"fabriquer" le premier, que nous nommerons 11gR2-RAC1.

Pour cela sous VirtualBox, cliquez sur le bouton "nouvelle". Le fenêtre ci-dessous s'ouvre alors, renseignez le nom, le type (Linux) et la version du linux (Oracle 64bit). Cliquez sur suivant.

 

 Ensuite il faut insérer les barrettes mémoires. Oracle recommande 4Go. Comme dans l’exemple ci-dessous vous pouvez mettre 4Go ou plus, mais sachant qu’un RAC c’est 2 serveurs, attention de ne pas dépasser la quantité de RAM de votre PC, sinon gare au swap ! De toute façon se n'est pas définitif, ce ne sont que des barrettes virtuelles, on peut les modifier à tout moment Tongue Out

 

Puis il faut insérer les disques durs.  Nous allons commencer par en mettre 2. Un pour l’OS, l’autre pour les binaires Oracle. Nous commençons par un disque de 15Go pour Linux. Ce disque sera pour votre PC, un fichier. Ce qui est pratique, c’est que nous allons créer un disque dynamique, c'est-à-dire que le disque fait 15Go pour le linux hôte, mais le fichier sur votre PC s’agrandira au fur et à mesure que ce disque virtuel se remplira.
Suivre les captures d'écran ci dessous (remarque: je vous conseille de ne pas laisser l'emplacement par défaut pour les fichiers "disques durs" proposés par VirtualBox):

 

Le disque system est installé, rajoutons maintenant le disque pour les binaires Oracle. J’ai pris 35Go 25 ou 30 pourrait suffire, mais je préfère prendre large si jamais il faut patcher, upgrader, migrer…

 Pour rajouter le disque Oracle, cliquez sur Stockage, et suivre les captures d'écran ci-dessous:

Prendre 35Go et suivre le même mode opératoire que pour le disque système.

Après les disques durs occupons nous, des cartes réseaux. Qui dit RAC dit 2 interfaces réseaux, une pour le réseau public et une pour le réseau privé (interconnect).
Insérons donc nos 2 cartes réseaux virtuelles:

Sur les 2 premier onglets, cocher "Activer la carte réseau" et choisir "Accès par pont" pour la première et "Accès Interne" pour le seconde.

 

 La machine est fin prête, un petit tour dans le bios virtuel pour régler l'ordre de boot : 1-disque dur, 2-DVD/CD-ROM

 

 

 

 Installation de l'OS: Linux Oracle 6U3

 Le serveur est prêt, il faut maintenant installer l'operating system. Pour cela comme sur un "vrai" serveur, nous allons booter sur le lecteur DVD-ROM, après avoir inséré le DVD de la distribution Oracle Linux 6 Update3.

Pour cela il faut informer VirtualBox d'où se trouve l'ISO. Cliquez sur "Stockage" et faites comme sur la capture d'écran ci-dessous:

 

Bootons le serveur avec le gros bouton "Démarrer".

... ....

Ah !! enfin !! le pingouin en armure s’affiche, l'installation de l'OS peut commencer.

Choisissez le langage (je conseille English), puis choisissez votre clavier

Puis choisissez "Basic Storage Devices":

Nommez racdb1.localdomain le hostname, puis cliquez sur "Configure Network":

 Une fenêtre de Warning s'affiche, indiquant que les données sur le disque se trouvant sur le disque seront perdues. Pas de soucis, cliquez sur "Yes,discard any data".

 Pour les cartes réseaux, cliquez sur chacunes d'elles et faire "Edit"

Pour l'interface 0:
renommez le nom de la conexion en eth0
cochez "Connect automatically"
choisissez la méthode d'adressage "Manual"
mettez comme adresse : 10.10.0.10 / 255.255.255.0 / 10.10.0.1
ne mettez rien dans DNS Servers
laissez localdomain dans Search domains.


Pour l'interface 1:
renommez le nom de la conexion en eth1
cochez "Connect automatically"
choisissez la méthode d'adressage "Manual"
mettez comme adresse : 10.10.1.1 / 255.255.255.0 / vide
ne mettez rien dans DNS Servers
ne mettez rien dans dans Search domains.

 

 Ensuite une fois le réseau de fait, nous pouvons passer à la suite. Choisissez votre timezone puis le mot de passe root, puis quand vous arriver sur la question « Which type of installation would you like ? »,choisissez « Use All Space ».

Comme ci-dessous, choissisez le disque scci-0:0:0, celui de 15Go comme target pour l'installation

 Modifier alors les tailles des partitions, de telle sorte que swap fasse 4Go. Il faut diminuer la taille de lv_root (de 14856Mo à 10760) et mettre 4096 pour lv_swap. Vous devez obtenir:

 L'installateur vous demande pour le principe si vous êtes sûr de vouloir formater le disque et que tout va être perdu. Si vous êtes sûr de vous allez y à vos risques et périls, je décline toutes responsabilitéInnocent

Checkez que "install boot loader on /dev/sda" est bien cocher


 Maintenant nous arrivons sur la partie :choix d'installation des packages. Cliquez sur "Customize now" puis next

 

 Il serait trop lourd de mettre les captures d'écran des packages choissit. Vous pouvez choisir les packages que vous souhaitez, mais ceux ci-dessous sont fortement conseillés.

Base System

Base

Client management tools

Compatibility libraries

Hardware monitoring utilities

Java plateform

Large Systems Performance

Network file system client

Performance Tools

Perl Support

 

 Servers

Server Platform

System administration tools

 

 Desktops Desktop

Desktop Platform

Debugging and performance tools

Fonts

General Purpose Desktop

Graphical Administration Tools

Input Methods

X Window System

 

 Applications

 Internet Browser

 

 Development

Additional Development

Development Tools

 


L'installation sur le disque dur commence alors:

Une fois l'installation terminé, cliquez sur le bouton Reboot.
La machine reboot et démarre sur la partition de boot de /dev/sda

Au premier boot, une GUI s'ouvre pour finir de renseigner 2 ou 3 paramétrages:

Welcome : Forward


License Information : Yes, I agree to the License Agreement 
                              Forward


Set Up Software Updates : No, I prefere to register at a later time
                                      No thanks, I'll connect later
                                      Forward

Create User : ben... vous mettez qui vous voulez cela vous regarde

Date and Time : cela dépend de quand vous arrivez sur cette fenêtre

Kdump : nous ne sommes pas sur une production! c.a.d Décochez "Enable kdump"

 

Installation du Guest Addon

A chaque installation d'un OS dans VirtualBox, il faut le plus rapidement installer les "Additions invité" !! Des fois c'est mieux en anglais quand mêmeLaughing

 Cet addon, améliore les interactions entre l'hôte et l'invité comme entre autre le montage sous l'invité de répertoires de l'hôte, la possibilité de faire du copier/coller entre l'hôte et l'invité et plein d'autres choses...

 Première chose à faire, éditer le fichier /etc/grub.conf en tant que root et à la fin de la ligne de qui contient notre kernel actif, rajouter divider=10:

Ensuite dans la fenêtre hôte de VirtuaBox, cliquez "installer les Additions invité...":


Cliquer sur OK à l'autorun prompt, l'installation se lance alors:

 

Press Return ... et voilà c'est fini, l'addition est installée.

 

Pré-requis pour le cluster RAC

Avant toute chose, rappelez vous nous avons mis 2 disques à notre serveur, un pour / et l'autre pour l'installation des binaires Oracle. Nous allons ici formater le disque et en faire un filesystem que nous réserverons pour Oracle.

Sous root, vérifier que le device dev/sdb correspond bien au disque de 35Go

# fdisk -l /dev/sdb

Disk /dev/sdb: 37.6 GB, 37580963840 bytes
255 heads, 63 sectors/track, 4568 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000e6ef7

   Device Boot      Start         End      Blocks   Id  System

Une fois identifié, utiliser cfdisk pour le partionner en 1 partition primaire unique de toute la taille du disque:

# cfdisk /dev/sdb

 Choix:

 NEW
 PRIMARY
 par defaut tout
 WRITE
 yes

Voilà le disque partitionné. Nous créons alors un physical volum sur le disque:

# vgcreate orabin_vg /dev/sdb1

Puis un logical volum avec toute la volumétrie du disque:

# lvcreate -L 34G -n v_orabin orabin_vg

Nous pouvons maintenant créer le filesystem:

# mkfs.ext4 -m 0 /dev/orabin_vg/v_orabin

Création du point de montage:

# mkdir oracle

Editez le fichier fstab et rajoutez, les option de montage comme ci-dessous:

# vi /etc/fstab
             /dev/orabin_vg/v_orabin /oracle                 ext4    defaults        0 2

# mount -a
# df -h /oracle
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/orabin_vg-v_orabin
                       34G  176M   34G   1% /oracle

 

Maintenant nous attaquons la partie pré-requis... il faut lire la documentation listée en début d'article... que bien sûr vous avez téléchargé et lu.
Donc vous savez qu'il faut installer les rpm suivant avec le compte root, après avoir monté l'ISO du Linux 6U3:

# rpm -Uvh binutils-2.*
# rpm -Uvh compat-libstdc++-33*
# rpm -Uvh elfutils-libelf-0.*
# rpm -Uvh libaio-0.*
# rpm -Uvh libaio-devel-0.*
# rpm -Uvh sysstat-9.*
# rpm -Uvh glibc-2.*
# rpm -Uvh glibc-common-2.*
# rpm -Uvh glibc-devel-2.* glibc-headers-2.*

# rpm -Uvh ksh-2*

# rpm -Uvh make-3.*

# rpm -Uvh libgcc-4.*
#rpm -Uvh libstdc++-4.*
# rpm -Uvh libstdc++-4.*.i686*
# rpm -Uvh libstdc++-devel-4.*
# rpm -Uvh gcc-4.*x86_64*
# rpm -Uvh gcc-c++-4.*x86_64*
# rpm -Uvh --allfiles elfutils-libelf-0*x86_64* elfutils-libelf-devel-0*x86_64*
# rpm -Uvh elfutils-libelf-0*i686* elfutils-libelf-devel-0*i686*
# rpm -Uvh libtool-ltdl*i686*
# rpm -Uvh ncurses*i686*
# rpm -Uvh readline*i686*
# rpm -Uvh unixODBC*

 

Et vous savez aussi, qu'il faut modifier quelque paramètres du kernel, en ouvrant le fichier /etc/sysctl.conf avec le compte root, et mettre les lignes suivantes:

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

et qu'il faut exécuter la commande suivante pour qu'ils soient pris en compte :

# /sbin/sysctl -p

Arrêtons de faire semblant, continuons...

Modifiez les resource limits pour les futurs comptes oracle et grid, toujours sous le compte root, éditez le fichier /etc/security/limits.conf et ajoutez les lignes suivantes:

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240

grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240

 

Ensuite occupons nous du /etc/hosts, comme nous n'allons pas utilisé de DNS, qui normalement devrait être obligatoire pour le RAC et en particulier pour les adresses SCAN, entrons toutes les adresses:

## public
10.10.0.10    racdb1 racdb1.localdomain
10.10.0.11    racdb2 racdb2.localdomain

## interco - prive
10.10.1.1    racdb1-priv racdb1-priv.localdomain
10.10.1.2    racdb2-priv racdb2-priv.localdomain

## vip
10.10.0.12    racdb1-vip racdb1-vip.localdomain
10.10.0.13    racdb2-vip racdb2-vip.localdomain

## scan
10.10.0.14    racdb-scan racdb-scan.localdomain
10.10.0.15      racdb-scan racdb-scan.localdomain
10.10.0.16      racdb-scan racdb-scan.localdomain

Le firewall, à couper et à désactiver définitivement:

# service iptables stop
# chkconfig iptables off

La synchronisation horaire, le cluster y est sensible. Nous allons désactiver le ntp du Linux pour laisser faire le ctss d'Oracle (Cluster Time Synchronization Service).

# /sbin/service ntpd stop
# chkconfig ntpd off
# mv /etc/ntp.conf /etc/ntp.conf.ORI

 Nous lancerons la commande "crsctl check ctss" après l'installation du cluster pour vérifier si le ctss fait bien son boulot.

Maintenant attaquons nous aux comptes et groupes
En premier lieu les groupes:

# groupadd -g 1000 oinstall
# groupadd -g 1020 asmadmin
# groupadd -g 1021 asmdba
# groupadd -g 1022 asmoper
# groupadd -g 1031 dba
# groupadd -g 1032 oper

 Oui, cela fait beaucoup de groupe, il n'est pas obligatoire de faire tous ces groupes, cependant, je conseille de les créer, cela ne coûte rien. Si plus tard vous devez gérer plus finement les droits, vous serez bien content des les avoir crées avant l'installation. C'est assez laborieux de les rajouter après et de les faire prendre en compte au noyau Oracle. Si j'y pense, je ferais un article dessus.

En deuxième les users:

# useradd -u 1100 -g oinstall -G asmadmin,asmdba grid
# useradd -u 1101 -g oinstall -G asmdba,dba oracle

Et enfin en trois, leur profile

avec le compte grid, éditez le .bash_profile et ajoutez les lignes suivantes:

TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
export ORACLE_BASE=/oracle/oraBase
export ORACLE_HOME=/oracle/11.2.0.3/grid
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

if [ $USER = "grid" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
  else
    ulimit -u 16384 -n 65536
  fi
fi

avec le compte oracle, éditez le .bash_profile et ajoutez les lignes suivantes:

 TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

export ORACLE_BASE=/oracle/oraBase
export ORACLE_HOME=/oracle/11.2.0.3/database

export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

if [ $USER = "oracle" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
  else
    ulimit -u 16384 -n 65536
  fi
fi

 Préparons les répertoires pour le moteur (oracle et grid), l'ORACLE_BASE et l'Oracle inventory:

# mkdir -p  /oracle/11.2.0.3/grid
# mkdir -p /oracle/11.2.0.3/database
# mkdir -p /oracle/oraBase
# mkdir -p /oracle/oraInventory
# chown -R grid:oinstall /oracle
# chown -R oracle:install /oracle/11.2.0.3/database

 

Installation des disques partagés pour ASM

Dans ce paragraphe, nous allons crées les disques qui seront partagés entre les deux serveurs. Ce sont les disques ASM qui hébergeront le registre du cluster Oracle (OCR), le voting disk et les disques pour stoker les bases de données.

OCR et Voting seront mis dans les disques nommé ocrvot(n).vdi

Pour les disques de données, il y aura les disques data(n)_(m).vdi qui contiendront les datafiles, controlfiles, redologfiles et spfiles. Et comme nous allons faire cela bien, et que le coût de stockage n’est pas un problème pour nous Laughing, les disques seront mirrorés par le grid. D’où le n et le m, n indiquera le numéro de disk group (ex : +DATA1) qui sera constitué de deux failgroups (FG1 et FG2).

Il y aura aussi des disques nommés fra(n).vdi, ceux-là seront pour stocker la FRA (Flash Recovery Area).

 

Pour commencer à installer les disques partagés, il faut revenir sur notre hôte, pour les créer virtuellement.
Pensez à éteindre en premier la machine virtuelle RACDB1.

Ouvrez sur votre windows un invite de commande, et allez dans le répertoire où vous souhaitez que les disques virtuels partagés soient crées:

REM creation disque pour les OCR et VOTING disque
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" createhd --filename ocrvot1.vdi --size 1024 --format VDI --variant Fixed
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" createhd --filename ocrvot2.vdi --size 1024 --format VDI --variant Fixed
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" createhd --filename ocrvot3.vdi --size 1024 --format VDI --variant Fixed

REM creation disque pour les disques data
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" createhd --filename data1_1.vdi --size 10240 --format VDI --variant Fixed
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" createhd --filename data1_2.vdi --size 10240 --format VDI --variant Fixed
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" createhd --filename data2_1.vdi --size 10240 --format VDI --variant Fixed
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" createhd --filename data2_2.vdi --size 10240 --format VDI --variant Fixed

REM creation disque pour les disques fra
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" createhd --filename fra1.vdi --size 10240 --format VDI --variant Fixed
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" createhd --filename fra2.vdi --size 10240 --format VDI --variant Fixed

 Remarque: Contrairement aux 2 premier disques, que nous avons crée pour / et /oracle, la taille n'est pas dynamique et fixe, sinon cela ne fonctionnera pas avec des disques partagés. Donc attention 66Go de place à prendre!

REM attache en mode partage sur 11gR2-RAC1
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" storageattach 11gR2-RAC1 --storagectl "SATA" --port 2 --device 0 --type hdd --medium ocrvot1.vdi --mtype shareable
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" storageattach 11gR2-RAC1 --storagectl "SATA" --port 3 --device 0 --type hdd --medium ocrvot2.vdi --mtype shareable
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" storageattach 11gR2-RAC1 --storagectl "SATA" --port 4 --device 0 --type hdd --medium ocrvot3.vdi --mtype shareable

"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" storageattach 11gR2-RAC1 --storagectl "SATA" --port 5 --device 0 --type hdd --medium data1_1.vdi --mtype shareable
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" storageattach 11gR2-RAC1 --storagectl "SATA" --port 6 --device 0 --type hdd --medium data1_2.vdi --mtype shareable
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" storageattach 11gR2-RAC1 --storagectl "SATA" --port 7 --device 0 --type hdd --medium data2_1.vdi --mtype shareable
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" storageattach 11gR2-RAC1 --storagectl "SATA" --port 8 --device 0 --type hdd --medium data2_2.vdi --mtype shareable

"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" storageattach 11gR2-RAC1 --storagectl "SATA" --port 9 --device 0 --type hdd --medium fra1.vdi --mtype shareable
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" storageattach 11gR2-RAC1 --storagectl "SATA" --port 10 --device 0 --type hdd --medium fra2.vdi --mtype shareable

"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" modifyhd ocrvot1.vdi --type shareable
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" modifyhd ocrvot2.vdi --type shareable
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" modifyhd ocrvot3.vdi --type shareable

"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" modifyhd data1_1.vdi --type shareable
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" modifyhd data1_2.vdi --type shareable
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" modifyhd data2_1.vdi --type shareable
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" modifyhd data2_2.vdi --type shareable

"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" modifyhd fra1.vdi --type shareable
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" modifyhd fra2.vdi --type shareable

Voilà les disques virtuels ont été rattachés à la machine virtuel RAC1. Il faut démarrer 11gR2-RAC1et partitionner les nouveaux disques.
Avec le compte root, allez dans /dev, faites un ls -l sd* , pour visualiser les disques, puis faites un fdisk sur sdc, et entez dans l'ordre : n, p, 1, <ENTER>, <ENTER>, w (comme dans la capture ci-dessous)

# fdisk /dev/sdc
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x79bcbc5b.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-130, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130):
Using default value 130

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Et recommencez la même opération jusqu'à /dev/sdk... oui c'est fastidieux.

 

Installation et configuration d'ASMlib

Heureusement, nous avons pris Oracle Linux 6, les drivers d'ASMlib sont inclus dans le noyau, ce n'est plus la peine d'aller télécharger les bons rpm sur le site d'Oracle, il faut juste installer oracleasm-support.rpm que nous pouvons trouver sur le DVD de la distrib.

Montez donc le DVD, puis allez dans le répertoire Packages du DVD, puis installez le oracleasm-support:

# rpm -Uvh oracleasm-support-2.1.5-1.el6.x86_64.rpm

 Configurez ASMlib:

# oracleasm configure -i
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver.  The following questions will determine whether the driver is
loaded on boot and what permissions it will have.  The current values
will be shown in brackets ('[]').  Hitting <ENTER> without typing an
answer will keep that current value.  Ctrl-C will abort.

Default user to own the driver interface []: grid
Default group to own the driver interface []: asmadmin
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done

Démarrez ASMlib:

# /usr/sbin/oracleasm init
Creating /dev/oracleasm mount point: /dev/oracleasm
Loading module "oracleasm": oracleasm
Mounting ASMlib driver filesystem: /dev/oracleasm

 Créez les disques ASM (écriture dans l'entête des disques: instanciation):

/usr/sbin/oracleasm createdisk ocrvot1 /dev/sdc1
/usr/sbin/oracleasm createdisk ocrvot2 /dev/sdd1
/usr/sbin/oracleasm createdisk ocrvot3 /dev/sde1
/usr/sbin/oracleasm createdisk data1_1 /dev/sdf1
/usr/sbin/oracleasm createdisk data1_2 /dev/sdg1
/usr/sbin/oracleasm createdisk data2_1 /dev/sdh1
/usr/sbin/oracleasm createdisk data2_2 /dev/sdi1
/usr/sbin/oracleasm createdisk fra1 /dev/sdj1
/usr/sbin/oracleasm createdisk fra2 /dev/sdk1

 Enregistrez les disques dans ASMlib:

# /usr/sbin/oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...

 Et voilà, ASMlib voit les disques ASM:

#  /usr/sbin/oracleasm listdisks
DATA1_1
DATA1_2
DATA2_1
DATA2_2
FRA1
FRA2
OCRVOT1
OCRVOT2
OCRVOT3

 

Clonage de RACDB1 en RACDB2

Nous venons de finir RACDB1, bon y plus qu'à faire de même pour RACDB2... mais non bien sûr, nous allons cloner notre serveur.

La GUI de VirtualBox permet de cloner les machines, je crois que c'est nouveau depuis la version 4. Dans la version 3.6 que j'avais avant, je n'avais jamais remarqué le petit mouton. De toute façon, nous allons le faire en ligne de commande, pour bien maitriser la gestion des disques partageable pour ASM.

 Avant clonage, éteignez RACDB1, puis sous votre hôte, ouvrez une invite de commande et allez dans le répertoire où se trouvent vos disques virtuels. Lancez alors le clonage du disque système et celui des binaires Oracle:

 "C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" clonehd 11gR2-RAC1-OS.vdi 11gR2-RAC2-OS.vdi
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" clonehd 11gR2-RAC1-orabin.vdi 11gR2-RAC2-orabin.vdi

Maintenant que nous avons nos disques, en particulier celui de l'OS, nous pouvons créer avec la GUI notre nouveau serveur 11gR2-RAC2.

Suivez la même procédure que pour 11gR2-RAC1, pensez à bien mettre le disque 11gR2-RAC2-OS.vdi sur le port SATA 0 et 11gR2-RAC2-orabin.vdi sur le port SATA 1. Et aussi à bien mettre 2 cartes réseaux.
Pour les disques partageables ASM, içi nous n'avons qu'à les associer, en ligne de commande comme pour le précédent serveur:

"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" storageattach 11gR2-RAC2 --storagectl "SATA" --port 2 --device 0 --type hdd --medium ocrvot1.vdi --mtype shareable
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" storageattach 11gR2-RAC2 --storagectl "SATA" --port 3 --device 0 --type hdd --medium ocrvot2.vdi --mtype shareable
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" storageattach 11gR2-RAC2 --storagectl "SATA" --port 4 --device 0 --type hdd --medium ocrvot3.vdi --mtype shareable

"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" storageattach 11gR2-RAC2 --storagectl "SATA" --port 5 --device 0 --type hdd --medium data1_1.vdi --mtype shareable
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" storageattach 11gR2-RAC2 --storagectl "SATA" --port 6 --device 0 --type hdd --medium data1_2.vdi --mtype shareable
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" storageattach 11gR2-RAC2 --storagectl "SATA" --port 7 --device 0 --type hdd --medium data2_1.vdi --mtype shareable
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" storageattach 11gR2-RAC2 --storagectl "SATA" --port 8 --device 0 --type hdd --medium data2_2.vdi --mtype shareable

"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" storageattach 11gR2-RAC2 --storagectl "SATA" --port 9 --device 0 --type hdd --medium fra1.vdi --mtype shareable
"C:\Program Files\Oracle\VirtualBox4.2\VBoxManage.exe" storageattach 11gR2-RAC2 --storagectl "SATA" --port 10 --device 0 --type hdd --medium fra2.vdi --mtype shareable

 Dans la GUI, RAC1 et RAC2 se ressemble comme deux gouttes d'eau.

 

Démarrez 11gR2-RAC2, il vient juste d'être cloné, il faut donc changer sa configuration réseau.

Commencez par changer son nom de host, sous root:

# cd /etc/sysconfig
# vi network

 et changez la ligne:

HOSTNAME=racdb1.localdomain

par

HOSTNAME=racdb2.localdomain

 

Ensuite les adresses : IP et MAC

Pour récupérer les adresses MAC, executez:

# ifconfig -a|grep HWadd
eth2      Link encap:Ethernet  HWaddr 08:00:27:00:B4:F4  
eth3      Link encap:Ethernet  HWaddr 08:00:27:B6:CB:FA 

A priori, les interfaces sont monté automatiquement en eth2 et eth3, au lieu de eth0 et eth1. Cela semble logique que l'OS n'ait pas réussit en eth0 et eth1 car les fichiers de configuration qui proviennent du serveur RACDB1 n'ont pas les bonnes adresse MAC des cartes réseaux... mais pourquoi alors il les monte en eth2 et eth3 je ne sais pas...
Ce n'est pas grave, rétablissons une bonne configuration. Sous root, allez dans /etc/sysconfig/network-scripts. Editez les fichiers de configuration ifcfg-eth0 et ifcfg-eth1.
Dans chacun d'eux, supprimez la ligne commençant par UUID, mettez la bonne valeur pour IPADDR (eth0 IP public, eth1 IP privée) et mettez la MAC adresse de la carte réseau.

Rien de tel que l'exemple pour mieux comprendre:

ifcfg-eth0

DEVICE="eth0"
BOOTPROTO=none
NM_CONTROLLED="yes"
ONBOOT=yes
TYPE="Ethernet"
UUID="9829b0b3-ca6f-4385-aabd-cc49625bcda8"
HWADDR=08:00:27:63:63:64
IPADDR=10.10.0.10
PREFIX=24
GATEWAY=10.10.0.1
DOMAIN=localdomain
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=eth0

devient

DEVICE="eth0"
BOOTPROTO=none
NM_CONTROLLED="yes"
ONBOOT=yes
TYPE="Ethernet"
HWADDR=08:00:27:00:B4:F4
IPADDR=10.10.0.11
PREFIX=24
GATEWAY=10.10.0.1
DOMAIN=localdomain
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=eth0

et

ifcfg-eth1

DEVICE="eth1"
BOOTPROTO=none
NM_CONTROLLED="yes"
ONBOOT=yes
TYPE="Ethernet"
UUID="37985b12-3226-4ee9-ab4b-28cbe002383d"
IPADDR=10.10.1.1
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=eth1
HWADDR=08:00:27:BD:66:5E

devient

DEVICE="eth1"
BOOTPROTO=none
NM_CONTROLLED="yes"
ONBOOT=yes
TYPE="Ethernet"
IPADDR=10.10.1.2
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=eth1
HWADDR=08:00:27:B6:CB:FA

Reboot pour prise en compte:

init 6

Et démarrage de 11gR2-RAC1 pour tester le réseau. Des deux serveurs, "pinguez" son prochain et lui même et sur les 2 interfaces. Tout doit fonctionner parfaitement... sinon oubliez le RAC.

# ping racdb1
# ping racdb2
# ping racdb1-priv
# ping racdb2-priv

... y a plus qu'à...

 

Installation du Grid Infrastructure

Enfin nous pouvons commencer à installer la couche cluster d'Oracle : Grid Infrastructure. Tous les pré-requis sont installés... sauf un... l'équivalence ssh. En fait il n'est plus obligatoire de paramétrer l'équivalence ssh sur cette version, l'installateur peut le faire pour vous... cependant, d'expérience il vaut mieux le faire à main... on est jamais aussi bien servit que par soi-même.

Pour mettre en place l'équivalence ssh, les deux serveurs doivent être up.

Ensuite avec le compte grid sur RACDB1 exécutez:

# /usr/bin/ssh-keygen -t rsa
# /usr/bin/ssh-keygen -t dsa
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
# chmod 644 ~/.ssh/authorized_keys

Faite exactement les mêmes commandes ci-dessus sur RACDB2.

Une fois les clefs privées et publiques générées sur les deux serveurs, il faut se les échanger.

Toujours avec le compte grid:

sur RACDB1

# ssh grid@racdb2 cat ~/.ssh/authorized_keys >> ~/.ssh/authorized_keys

et sur RACDB2

ssh grid@racdb1 cat ~/.ssh/authorized_keys >> ~/.ssh/authorized_keys

Ensuite on fixe son "empreinte de doigt" chez son nouveau copain, et aussi on initialise une première connexion sur soi-même

A partir de RACDB1

# ssh racdb2
# ssh racdb1
# ssh racdb1
# exit
# exit
# ssh racdb2

(répondez yes à la question sur fingerprint)

Une fois l'équivalence faite pour le compte grid, rebelote avec le compte oracle. Ce n'est pas nécessaire pour l'installation du Grid Infrastructure de la faire pour le compte oracle, mais nécéssaire plus tard pour l'installation du moteur oracle RAC.

 Placez les sources du grid infrastructure dans un répértoire de votre Windows que vous allez partagez avec votre virtual machine 11gR2-RAC1. Dans la GUI de virtualbox de 11gR2-RAC1, partagez le dossier comme dans l'exemple ci-dessous:

 Ensuite il ne reste plus que sous RACDB1, à monter le répertoire et à dézipper les sources
Sous le compte root:

# mount -t vboxsf 11gR2-64bit /media/sources/
# cd /media/sources/
# mkdir /oracle/sources
# unzip p10404530_112030_Linux-x86-64_3of7.zip -d /oracle/sources
# cd /oracle/sources
# chown -R grid.oinstall grid

Avant de lancer l'installation du grid proprement dite, il est conseillé d'exécuter le CVU (cluster verify utility). Installez au préalable le cvuqdisk sous le compte root

cd /oracle/sources/grid/rpm
rpm -Uvh cvuqdisk-1.0.9-1.rpm 

Poussez le rpm sur racdb2, et installez y aussi le package.

Ultime étape avant l'installation; avec le compte root, exécutez le cluster verify:

# /oracle/sources/grid/runcluvfy.sh stage -pre crsinst -n racdb1,racdb2 -verbose

 Retrouvez la sortie standard du script  ici testbed 11gR2 RAC : Annexe 1 - cluverify

 Tout doit être"passed" ou "yes", la seule erreur est "PRVF-5636 : The DNS response time for an unreachable node exceeded "15000" ms on following nodes: racdb2,racdb1", vous pouvez l'ignorer (nous n'avons pas de DNS) l'installation du grid se passera sans problème... en théorie.

 

Avec le compte grid, lancez enfin l'installateur du grid infrastructure:

# cd /oracle/sources/grid/
# ./runInstaller

 

cliquez du le bouton Add, puis rajoutez le racdb2 dans les noeud du RAC

 

Rien à faire içi, comme nous avons bien travaillé, Oracle a compris tout seul, qu'elle devait être l'interface public et privée.

 

 



Vous pouvez ignorer ces 2 erreurs

 

 Avant de cliquer sur OK sur la fenêtre pop-up, suivez les instructions inscrites.

Vous pouvez retrouver les résultats obtenus sur cette page : testbed 11gR2 RAC : Annexe 2 - root.sh

Une fois les 4 scripts exécutés avec succès, cliquez alors sur OK

Si vous cliquez sur le boutons Details, vous retrouverez l'erreur de DNS, déjà remontée lors du cluster verify. Vous pouvez l'ignorer.

Voilà, la couche cluster (grid infrastructure) est enfin installée. Pour tester qu'il fonctionne bien, lancez sous le compte grid, la commande:

# crsctl status res -t

Le résultat attendu peut être consulté sur la page : testbed 11gR2 RAC : Annexe 3 - crsctl 

 

Création des diskgroups ASM

Le grid est installé, nous pouvons donc à présent créer les diskgroup ASM, où sera stocké nos base de données. Pour cela deux façons la friendly avec la GUI asmca ou alors la rugueuse avec sqlplus en ligne de commande. Nous allons faire la friendly Wink

Donc comme vu plus haut deux diskgroup DATA avec redondance et un diskgroup FRA sans redondance.


Sous le compte grid, exécutez la commande:

# ./asmca

... et la GUI s'ouvre:

Il existe déjà le diskgroup OCRVOT où est stocké les OCR et le voting, cliquez sur le bouton Create pour rajouter un nouveau diskgroup:

Nommez le diskgroup DATA1
Choisissez la redondance normal (mirroring ASM : RAID1 de chez Oracle)
Cochez les 2 disques DATA1_1 et DATA1_2, et respectivement sur chaque disques nommez le failure group DATA1_FG1 et DATA1_FG2.
Puis cliquez sur le bouton OK

Cliquez sur OK, puis répétez la même opération pour DATA2.

Pour le diskgroup FRA, choisissez la redondance Extenal (pas de redondance : un peu comme du JBOD), pas de colonne Failgroup à nommer.

A la fin, dans l'onglet diskgroup vous devez avoir:

Nous voyons l'influence de la redondance sur la volumétrie utile (usable).

 

Installation du moteur RAC database

Nous avons travaillé avec le compte root pour l'OS puis le compte grid pour le cluster et ASM, au tour du compte oracle maintenant pour la base de donnée.

Bon le plus dur est fait. Installer un moteur oracle et un jeu d'enfant. C'est presque du "suivant, suivant".

Comme pour le grid installé précedement, montez le répertoire windows où vous avez déposé les sources et décompressez les:

# mount -t vboxsf 11gR2-64bit /media/sources/
# cd /media/sources/
# mkdir /oracle/sources
# unzip p10404530_112030_Linux-x86-64_1of7.zip -d /oracle/sources
# unzip p10404530_112030_Linux-x86-64_2of7.zip -d /oracle/sources
# cd /oracle/sources
# chown -R oracle.oinstall database

# chmod g+w /oracle/oraBase

 Puis avec le compte oracle lancez l'installation:

 cd /oracle/sources/database
./runInstaller

 

Laisser l'anglais par défaut

Choisissez Entreprise Edition

Laisser par défaut Oracle Base : /oracle/oraBase

et Software location : /oracle/11.2.0.3/database

On vous demande si vous êtes sûr de mettre l'Oracle home en dehors de l'Oracle base : répondez YES (c'est qui qui décide içi? Cool)

Laissez les groupes par défaut

 

cliquez sur Ignore All puis Next

Ne cliquez pas sur OK de suite, exécutez d'abord en tant que root sur les 2 noeud le script /oracle/11.2.0.3/database/root.sh

 

 Création d'une base de données RAC

 

Nous arrivons à la dernière étape, l'installation proprement dite de la base de données en RAC, peut enfin commencer. Avec le compte oracle, lancez :

# dbca

Step 1 of 13 : Choisissez "Create a Database", puis bouton "Next"
Step 2 of 13 : Choisissez "Custom Database", puis bouton "Next"
Step 3 of 13 -->
Step 4 of 13 : Décochez "Configure Entreprise Manager" (nous l'activerons plus tard si le besoin s'en fait sentir)
Step 5 of 13 : Settez les password à votre guise, puis bouton "Next"
Step 6 of 12 (oui nous avons perdu un step) :-->

puis cliquez sur "Multiplex Redo Logs and Control Files..." -->

Step 8 of 12 : Décochez toutes les options sur l'onglet "Database Components", puis cliquez sur "Standard Database Components...", et déselectionnez tous sauf "Oracle JVM"
Step 9 of 11 (oui encore un step de perdu, tant mieux nous finirons plus vite!):
  onlget Memory : laissez tout par défaut sauf la Memory Size, réduisez la un peu (850Mo par exemple)
  onlget Sizing : laissez tout par défaut
  onlget Character Sets : vous pouvez laissez tout par défaut, je préfère choisir AL32UTF8 à la place du défaut WE8MSWIN1252, plus gourmand en place mais on stocke de l'UTF8
  onlget Connection Mode : laissez tout par défaut
Step 10 of 11 : tout par défaut, puis bouton Next
Step 11 of 11 :tout par défaut, puis bouton Finish

Une fois la base installée, vous pouvez cliquez sur le bouton Exit dans la fenêtre "Database Configuration Assistant"

... Voilà la base de données en RAC, nommée ARKONA, est crée. Nous avons bien travaillé.

 

Présentation TestBed

Dans cette rubrique, vous retrouvez les procédures qui permettent de créer les bancs d'essai, testbed in English, sur lesquels les articles techniques s'appuient.

Les testbed sont fait grâce à l’outil de virtualisation VirtualBox (http://www.virtualbox.org). Cet outil est gratuit, et à l’origine était développé par Sun. Il appartient maintenant à Oracle suite au rachat de Sun.

VirtualBox est très « user-friendly ». Sa simplicité, son ergonomie en fait le parfait outil de virtualisation à usage personnel. Si on le compare à Oracle VM Serveur, il n’y a pas photo, c’est comme comparer l’utilisation du fil à couper le beurre à celle d’une usine à gaz. Evidement ils n’ont pas la même finalité, Oracle VM Serveur est pour un usage professionnel.

 {jcomments off}