Oracle 11.2, l'ASM nouveau est arrivé

Vous en aviez rêvé Oracle l’a réalisé ; Les fichiers autres que ceux de la base de données Oracle, y compris les logiciels de base de données peuvent désormais être stockés et gérés par ASM !
Par l’intermédiaire d’un nouveau système de fichiers nommé ASM Cluster File System (ACFS) qui s’appuie sur ASM Dynamic Volume Manager (ADVM), vous pourrez maintenant stocker tous les types de données dans ASM. De plus la responsabilité pour la gestion des disques revient de nouveau aux administrateurs système; on peut faire toute la gestion ASM sans connaître une seule commande SQL ! Voilà qui devrait stopper nombre de polémiques dans les services informatiques.
Pour le prouver j’ai installé uniquement les composants nécessaires à ASM sur le système Oracle Enterprise Linux 64bits de mon laptop. J’ai créé un utilisateur sysadmin et un groupe sysadmin pour travailler.

Je commence avec ASMLib

La première étape a consisté à découper un peu mon disque externe de manière à disposer de plusieurs partitions de 512Mo disponibles pour ASM. J’ai utilisé pour cela gparted, ce qui m’a permis de réduire une partition FAT32 en quelques clics et de disposer rapidement de 4 tranches (de /dev/sb7 à /dev/sb10)  de 512Mo.
J’utilise ASMLib pour facilité la découverte et le nommage des partitions, pour cela il faut configurer le module, l’initialiser puis créer des disques, voici les commandes que j’ai utilisées :

# cd /etc/init.d
# 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 []: sysadmin
Default group to own the driver interface []: sysadmin
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
# oracleasm init
Creating /dev/oracleasm mount point: /dev/oracleasm
Loading module "oracleasm": oracleasm
Mounting ASMlib driver filesystem: /dev/oracleasm
# oracleasm createdisk DATA1 /dev/sdb7
Writing disk header: done
Instantiating disk: done
# oracleasm createdisk DATA2 /dev/sdb8
Writing disk header: done
Instantiating disk: done
# oracleasm createdisk DATA3 /dev/sdb9
Writing disk header: done
Instantiating disk: done
# oracleasm createdisk DATA4 /dev/sdb10
Writing disk header: done
Instantiating disk: done

La vérification de l’accès aux partitions peut se faire avec la commande oracleasm listdisks

# oracleasm listdisks
DATA1
DATA2
DATA3
DATA4
$ ls -l /dev/oracleasm/disks
total 0
brw-rw---- 1 sysadmin sysadmin 8, 23 sep  7 11:32 DATA1
brw-rw---- 1 sysadmin sysadmin 8, 24 sep  7 11:32 DATA2
brw-rw---- 1 sysadmin sysadmin 8, 25 sep  7 11:33 DATA3
brw-rw---- 1 sysadmin sysadmin 8, 26 sep  7 11:33 DATA4

… avant de passer aux choses sérieuses

Une des nouveautés de la version 11.2 est l’association d’ASM et du clusterware dans la Grid Infrastructure et donc vraiment indépendamment du logiciel de base de données.
Vous pouvez le télécharger depuis le site OTN pour linux 32bits ou 64bits. Une fois que vous aurez adhéré à la licence de distribution OTN, le fichier zip peut être téléchargé; sa taille est d’environ 1 Go.
Une fois le produit décompressé sur un répertoire dédié, il vous reste à l’installer, et contrairement à certains de chez nous (n’est-ce pas arkzoyd ;)),  j’aime bien d’abord voir les écrans défiler, surtout que du coup, j’ai pu tester quelques nouvelles fonctionnalités appréciables, comme la génération automatique de scripts pour corriger les pré-requis qui ne serait pas atteints.
Donc une installation en mode graphique, via l’exécution du runInstaller de l’infrastructure Grid en tant qu’utilisateur sysadmin. Je vous dispense des copies d’écrans pour ne pas alourdir inutilement cet article.
Contraintes obligatoires:  le nom de votre machine doit être associé à votre adresse IP dans le fichier /etc/hosts (ce qui n’est pas le cas si vous êtes en configuration DHCP), et vous devez pouvoir accéder au serveur X (avec xhost + ou ssh -X par exemple) depuis l’utilisateur sysadmin:

  • Le premier écran concerne les options d’installation, il faut choisir « Installer et configurer Oracle Grid Infrastructure pour un serveur autonome ». Cette option installera une couche CRS « light » utilisant un registre OCR stocké dans un fichier local, pas de voting disk, et les binaires nécessaires pour la couche ASM.
  • L’écran suivant permet la sélection des « langues du produit » ; à vous de voir mais il n’y a pas d’occitan 😉
  • Le 3ème écran « Créer un groupe de disque ASM »  va initialiser l’instance +ASM et créer un groupe de données. Pour cela, il faut préciser le nom du groupe, (e.g. « DATA »), la redondance (e.g. « Externe »). Cochez les disques que vous souhaiter intégrer au groupe; pour ma part, j’ai pris DATA1 et DATA2 ce qui me donnera 1Go de disponible. Si les disques n’apparaissent pas, il faut « modifier le chemin de repérage » (précisez ORCL:* avec ASMLib)
  • L’écran suivant vous demande de saisir le mot de passe de l’instance ASM , j’ai choisi d’utiliser le même mot de passe pour tous les comptes. Ne tenez pas compte de l’erreur INS-30011 comme quoi votre mot de passe ne répond pas à la politique sécuritaire d’Oracle, pour vos tests
  • Puis il faut définir les « Groupes du système d’exploitation privilégiés ». J »ai choisi de laisser le groupe sysadmin pour les 3 responsabilités OSDBA, OSOPER, OSASM (là aussi, voilà une nouveauté dans la répartition des responsabilités)
  • Il faut ensuite « Indiquer l’emplacement d’installation » , pour moi ORACLE_BASE=/opt/appli/product et ORACLE_HOME=/opt/appli/product/grid
  • S’il n’y a pas d’inventaire Oracle, l’écran suivant le demande. « Créer un inventaire » sous le répertoire /opt/appli/product/oraInventory par exemple.
  • C’est sur l’écran suivant « Effectuer les vérifications des pré-requis »  que l’on trouve une nouvelle subtilité. Je n’avais pas du tout modifié ma configuration noyau, je me suis donc retrouvé avec pratiquement tout le paramétrage ne répondant pas aux critères (nombre de sémaphores, segments de mémoire partagée etc..) soit au total plus d’une dizaine de valeurs. J’ai simplement appuyé sur le bouton « Corriger et vérifier une nouvelle fois », une boite de dialogue m’a demander d’exécuter le script de correction nommé /tmp/CVU_11_2.0.1.0_sysadmin/runfixup.sh sous root depuis un autre terminal, ce que j’ai fait, j’ai ensuite validé et cliqué sur « OK ». Voici ce qui a été réalisé dans mon cas : 
    # ./runfixup.sh
    Response file being used is :./fixup.response
    Enable file being used is :./fixup.enable
    Log file location: ./orarun.log
    Setting Kernel Parameters...
    kernel.sem = 250 32000 100 128
    fs.file-max = 6815744
    net.ipv4.ip_local_port_range = 9000 65500
    net.core.rmem_default = 262144
    net.core.wmem_default = 262144
    net.core.rmem_max = 4194304
    net.core.wmem_max = 1048576
    fs.aio-max-nr = 1048576
    uid=502(sysadmin) gid=502(sysadmin) groupes=502(sysadmin)
    context=root:system_r:unconfined_t:SystemLow-SystemHigh

    Suite à cela, le test des pré-requis est relancé et je n’ai plus d’erreur … Ce script généré automatiquement fait gagner beaucoup de temps et évite des erreurs potentielles de saisie dans le fichier sysctl.conf. En fait tout n’a pas été parfait ! Il restait la taille du swap, trop petit selon l’installer, que j’ai décidé d’ignorer en cochant la case du statut en face du test. J’ai également du ajouter les packages manquant avant de poursuivre. Voici leur liste pour information :

    elfutils-libelf-devel-0.125
    libaio-devel-0.3.106 (i386)
    libaio-devel-0.3.106 (x86_64)
    sysstat-7.0.2
    unixODBC-2.2.11 (i386)
    unixODBC-2.2.11 (x86_64)
    unixODBC-devel-2.2.11 (i386)
    unixODBC-devel-2.2.11 (x86_64
  • La suite est beaucoup plus classique avec un affichage du récapitulatif ou on peut voir que la taille requise pour l’installation est de 2.95 Go. Autre petit plus il y a un bouton « Enregistrer le fichier de réponse »  qui va permettre de stocker un fichier de réponse réutilisable pour les installations en mode silencieux cette fois.
  • L’installation se termine traditionnellement par la demande d’exécution de scripts par root : orainstRoot.sh sous le répertoire de l’inventaire et root.sh sous le répertoire d’installation de l’infrastructure Grid. L’exécution de root.sh déclenche la configuration du clusterware « light » et le démarrage du process ohasd qui gère le démarrage et la surveillance des ressources qui lui sont associées, comme l’instance +ASM qui est ensuite opérationnelle. Voici la sortie de l’exécution du script, notez le vocabulaire utilisé comme (1) « Oracle High Availability Services » pour le process ohasd qui est inscrit dans le fichier /etc/inittab pour être appelé au démarrage du serveur; (2) la création d’une sauvegarde automatique du registre, (3) la mise à jour de l’inventaire pour une configuration à un seul noeud :
     ./root.sh
    Running Oracle 11g root.sh script...
    The following environment variables are set as:
        ORACLE_OWNER= sysadmin
        ORACLE_HOME=  /opt/appli/product/grid
    Enter the full pathname of the local bin directory: [/usr/local/bin]:
       Copying dbhome to /usr/local/bin ...
       Copying oraenv to /usr/local/bin ...
       Copying coraenv to /usr/local/bin ...
    Creating /etc/oratab file...
    Entries will be added to the /etc/oratab file as needed by
    Database Configuration Assistant when a database is created
    Finished running generic part of root.sh script.
    Now product-specific root actions will be performed.
    2009-09-07 14:55:30: Checking for super user privileges
    2009-09-07 14:55:30: User has super user privileges
    2009-09-07 14:55:30: Parsing the host name
    Using configuration parameter file:
    /opt/appli/product/grid/crs/install/crsconfig_params
    Creating trace directory
    LOCAL ADD MODE
    Creating OCR keys for user 'sysadmin', privgrp 'sysadmin'..
    Operation successful.
    CRS-4664: Node pc-ele successfully pinned.
    Adding daemon to inittab
    CRS-4123: Oracle High Availability Services has been started.
    ohasd is starting
    pc-ele     2009/09/07 14:56:47
    /opt/appli/product/grid/cdata/pc-ele/backup_20090907_145647.olr
    Successfully configured Oracle Grid Infrastructure for a Standalone Server
    Updating inventory properties for clusterware
    Démarrage d'Oracle Universal Installer...
    Vérification de l'espace de swap : il doit être
    supérieur à 500 Mo.   Réel 1983Mo    Succès
    The inventory pointer is located at /etc/oraInst.loc
    The inventory is located at /opt/appli/product/oraInventory
    'UpdateNodeList' a réussi.

Vous pouvez maintenant créer ce fameux système de fichiers ASM ! Pour cela il est recommandé de vérifier que les 4 modules nécessaires sont bien chargés par le noyau :

# lsmod|grep oracle
oracleacfs   877320 0
oracleadvm   221760 0
oracleoks    276880 2 oracleacfs,oracleadvm
oracleasm     83752 1

. Attention ils ne sont pas chargés automatiquement au démarrage. Il faut créer un fichier type
/etc/init.d/acfsload contenant les lignes suivantes:

#!/bin/sh
# chkconfig: 2345 30 21
description: Load Oracle ACFS drivers at system boot
/u01/app/grid/product/11.2.0/grid/bin/acfsload start -s

Il faut également lui donner les bons droits et le charger dans la configuration de linux :

chmod u+x /etc/init.d/acfsload
chkconfig --add acfsload
chkconfig --list acfsload

Pour créer le volume, j’ai utilisé asmcmd qui contient maintenant toutes les commandes de gestion et d’administration d’ASM, comme par exemple startup ou shutdown. Tapez la commande help pour vous en rendre compte.
Deux variables sont à déclarer, une fois que l’on est connecté avec l’utilisateur sysadmin :

export ORACLE_SID=+ASM
export PATH=$ASM_HOME/bin:$PATH

Avant de pouvoir créer le  volume nommé volume1 dans le groupe DATA

ASMCMD> volcreate -G DATA -s 500M volume1

Il faut noter l’information correspondant au « Volume Device » de la commande volinfo car elle sera réutilisée ensuite, dans
mon cas:  /dev/asm/volume1-39 :

ASMCMD> volinfo -a
Diskgroup Name: DATA
         Volume Name: VOLUME1
         Volume Device:/dev/asm/volume1-319
         State: ENABLED
         Size (MB): 512
         Resize Unit (MB): 256
         Redundancy: UNPROT
         Stripe Columns: 4
        Stripe Width (K): 128
         Usage:
         Mountpath:

J’ai ensuite créé le système de fichiers associé par les commandes unix traditionnelles :

# mkdir /acfsdata
# mkfs -t acfs -b 4k /dev/asm/volume1-319
mkfs.acfs:
version  = 11.2.0.1.0.0
mkfs.acfs: on-disk
version  = 39.0
mkfs.acfs:
volume =/dev/asm/volume1-319
mkfs.acfs: volumesize  =536870912
mkfs.acfs: Format complete.
# mount -t acfs /dev/asm/volume1-319 /acfsdata

Je retrouve bien le système de fichier monté sur le répertoire  /acfsdata. Il ne reste plus qu’à l’utiliser les commandes Linux :

# df -h /acfsdata
Sys. defich.          Tail.  Occ.Disp. %Occ. Monté sur
/dev/asm/volume1-319  512M   38M  475M  8% /acfsdata

J’ai réalisé quelques tests de performance basiques en comparant les opérations entre un système de fichier de type ext3 sur le disque interne de mon laptop, un système de fichier de type ext3 sur un disque usb externe, et le système de fichier acfs sur le même disque usb externe, bien que peu significatif sur un l’environnement utilisé (disque interne de laptop et disque USB), voici le tableau des résultats, les chiffres donnés correspondant à une valeur moyenne sur 10 répétitions de la commande :

Commande ext3 interne ext3 usb externe acfs usb externe
dd if=/dev/zero of=/fs/475M
bs=1M count=450
2,8s    170Mo/s 2,9s    165Mo/s 1,74s    270Mo/s
cp /<fs_ext3_interne/475M /fs_externe 4,8 s 4,1 s

On constate de très bonnes performances du système de fichier acfs par rapport au classique ext3, avec près  de 50% de mieux pour le dd et près de 15% de mieux sur la copie.
Maintenant que vous avez un système de fichier à disposition, je vous laisse le soin de procéder à d’autres tests, mais avant de terminer cet article, voici quelques captures d’écrans du tout nouvel assistant dédié à ASM: asmca. Avec lui vous pouvez réaliser de manière graphique les opérations précédentes et visualiser l’espace dans les groupes de disques. Si vous aimez les assistants, cet outil est pour vous :
GroupesASM
VolmesASM
acfsASm
C’est propre et c’est pratique, alors si vous souhaitez vous faciliter la vie…
C’est tout pour aujourd’hui, mais vous pourrez aussi découvrir les autres nouvelles fonctionnalités, comme celles qui permettent de choisir une zone optimale pour le placement des données, l’attribution de droits de type ACL sur les fichiers et la possibilité, réclamée par tous de pouvoir renommer un groupe de disque ASM, sans avoir à le supprimer. N’hésitez pas à nous faire part de vos retours d’utilisation de cette nouvelle mouture, qui s’annonce assez incroyable.

17 réflexions sur “Oracle 11.2, l'ASM nouveau est arrivé”

  1. Ping : Pendant les vacances, consultez les dix articles les plus lus du blog EASYTEAM « EASYTEAM LE BLOG

  2. Une bouteille à la mer
    Je n’ai jamais été capable de compléter une installation grid avec serveur autonome, après la lectures de 5-6 sites et 25 essais d’installation j’ai toujours un plantage à la fin. Le support Oracle est dans l’incapacité la plus complète pour m’aider.
    [INS-20802]

    1. Comme tout ce qui est installation Oracle , 2 éléments sont primordiaux, les pré-requis et les JVM déja installés (ou installations précédentes). En dehors de cela il peut y avoir des bugs spécifiques sur votre plate forme. Le sauvetage de naufragé n’est pas l’objectif de ce blog, mais en contactant Easyteam via le formulaire à l’url suivante https://easyteam.fr/contact nous pourrons vous proposez de l’aide.
      Cdlt

  3. Navré Grégory mais je n’ai pas bien compris ce que tu voulais dire.
    Est-ce que la doc veut dire qu’il faut installer Grid Infrastructure en « full » pour que cette problématique soit solutionnée ? Qu’est-ce que ça implique ?
    ++

    1. Oui. C’est ce que je voulais mettre en avant: une solution possible c’est d’installer le version multiserver de la grid infrastructure sur 1 seul serveur:
      . Ça résoud les problèmes techniques dont vous discutez
      . C’est supporté en terme technique et de licenses
      En plus avec un Stockage externalisé ça facilite les évolutions vers RAC ou RAC one node. Bien sur il faut un peu plus de travail, une adresse IP scan, une équivalence SSH…
      Mais je vous fais confiance à tous les 2 pour faire fonctionner le redémarrage automatique et dans le bon ordre des services avec Oracle restart.

  4. oups, ca parait plus clair tout d’un coup 🙂
    merci pour l’info stforlong
    ps. c’est assez maladroit de la part d’oracle je trouve. proposer une solution sur une release finale alors même que son implémentation est « hasardeuse »…
    ah larry, on va tout nous mener lol

    1. Il est possible d’installer la Grid Infrastructure sur vos les serveurs les serveurs qui utilise Oracle comme l’indique le Licensing Guide. La syntaxe exacte, c’est :
      The Grid Infrastructure can be installed and used on any server where any of the following conditions are met:
      […]
      3. Oracle Clusterware is used to protect a software product from failures. Oracle Clusterware can be used to protect a software product in cases that do not meet conditions 1 or 2 above if either of the following conditions are met:
      o The software being protected is from Oracle
      o The software being protected uses an Oracle database
      Et avec la Grid Infrastructure au lieu de restart, les problèmes de redémarrage sont tous réglés.

      1. Intéressant ca, ca voudrait dire que je suis pas obligé de licencier du RAC ni même de la base pour utiliser GI, tant que je l’utilise pour un produit oracle sous licence !

    2. Est ce que vous avez déjà essayé et réussi cette installation (GI en cluster sur un seul noeud au lieu de oracle restart)? ou c’est juste une interprétation de ce que dit oracle?

      1. Pour l’instant c’est uniquement une interprétation de la documentation. La demande de nos clients à porter seulement sur des installations d’infrastructure à plusieurs noeuds. Je ferais une nouvelle entrée dans le blog dés que je l’aurai testé. Par contre nous avons testé la mixité d’une version Grid 11GR2 et d’une base de données 11GR1 , elle nécessite quelques patches spécifiques pour que cela fonctionne correctement.

  5. Hello,
    merci pour cet excellent tutorial.
    J’avoue toutefois avoir un pb qui comme à m’agacer.
    J’ai suivi la procedure sans soucis. Par contre, pour une raison inconnue, à chaque reboot je perds mes FS !!
    Je suis obligé de reactiver le volume asm puis de remonter les fs avec mount.acfs -o all
    une idée ?
    PS1. mon instance +ASM tourne bien
    PS2. j’ai bien mis mes script dans l’init.d + activation runlevel 3/5
    merci
    phil

    1. Bonjour Phil,
      Il semblerait qu’avec ce type d’installation ‘Oracle Grid Infrastructure pour un serveur autonome’ (aka Oracle Restart) , il n’y ait pas tous les mécanismes en place pour le restart, voici un petit extrait de la doc:
      « Oracle Restart does not support root-based Oracle ACFS resources for this release. As a result, the following operations are not automatically performed:
      * Loading Oracle ACFS drivers
      * Mounting Oracle ACFS file systems listed in the Oracle ACFS mount registry
      * Mounting resource-based Oracle ACFS database home file systems
      The Oracle ACFS resources associated with these actions are not created for Oracle Restart configurations. »
      Il faut donc trouver une astuce pour réaliser ces opérations, c’est en partie fait, mais apparemment il manque encore des choses, je vais regarder cela de plus près, le premier qui y arrive préviens les autres

    1. Pourquoi certains font fonctionner Oracle sur CentOS quand ils peuvent utiliser OEL? Fedora et Ubuntu, je comprends… mais CentOS ?

  6. Qui te dit que je n’ai pas aussi essayé de l’installer avec l’interface graphique?

    1. J’en suis sur. Je pense vraiment que les deux modes sont complémentaires et répondent chacun à des besoins différents. Continuons à en décrire les différentes caractéristiques et surtout continue à nous faire profiter pleinement de ta maîtrise du mode silencieux pour tous les outils graphiques qui le possèdent.

Les commentaires sont fermés.