testbed : 11gR2 RAC ASM
- Détails
- Catégorie : TestBed
- Publié le samedi 19 janvier 2013 21:54
- Écrit par Administrator
- Affichages : 23159
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"
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
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é
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ême
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 , 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
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? )
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é.