2.4 Installation d'une base de données

L'application utilisateur utilise une base de données pour diverses tâches (stockage des données de configuration, stockage des données relatives aux activités de workflow, etc.). Pour pouvoir installer le module de provisioning basé sur les rôles et l'application utilisateur, vous devez avoir installé et configuré l'une des bases de données prises en charge pour votre plate-forme. Cela implique les opérations suivantes :

REMARQUE :si vous effectuez une migration vers une nouvelle version du module de provisioning basé sur les rôles, vous devez utiliser la même base de données d'application utilisateur que pour l'installation précédente, c'est-à-dire celle depuis laquelle vous effectuez la migration.

2.4.1 Remarques sur la configuration d'une base de données MySQL

L'application utilisateur requiert certaines options de configuration pour MySQL (voir ci-dessous).

Moteur de stockage et types de tables INNODB

L'application utilisateur se sert du moteur de stockage INNODB, ce qui permet de choisir des types de tables INNODB pour MySQL. Si vous créez une table MySQL sans indiquer son type, la table sera de type MyISAM par défaut. Pour vous assurer que votre serveur MySQL utilise INNODB, vérifiez que my.cnf (Linux ou Solaris) ou my.ini (Windows) contient l'option suivante :

default-table-type=innodb

Il ne doit pas contenir l'option skip-innodb.

Au lieu de configurer l'option default-table-type=innodb, vous pouvez ajouter l'option ENGINE=InnoDB aux instructions de création de table dans le script SQL de votre base de données.

Ensemble de caractères

Indiquez UTF-8 comme ensemble de caractères pour l'ensemble du serveur ou simplement pour une base de données. Indiquez UTF-8 sur l'ensemble du serveur en incluant l'option suivante dans my.cnf (Linux ou Solaris) ou my.ini (Windows) :

character_set_server=utf8

Pour indiquer le jeu de caractères d'une base de données au moment de la création de la base de données, utilisez la commande suivante :

create database databasename character set utf8 collate utf8_bin;

Si vous configurez le jeu de caractères pour la base de données, vous devez également indiquer celui de l'URL JDBC dans le fichier IDM-ds.xml, comme dans l'exemple suivant :

<connection-url>jdbc:mysql://localhost:3306/databasename?useUnicode=true&amp;characterEncoding=utf8&amp;connectionCollation=utf8_bin</connection-url>

Distinction de la casse

Assurez-vous que la distinction de la casse est cohérente sur les serveurs et plates-formes si vous prévoyez sauvegarder et restaurer des données sur des serveurs ou des plates-formes. Pour assurer cette cohérence, indiquez la même valeur (0 ou 1) pour les noms_tables_minuscules de tous vos fichiers my.cnf (Linux ou Solaris) ou my.ini (Windows), au lieu d'accepter la valeur par défaut (valeurs par défaut Windows à 0 et valeurs par défaut Linux à 1.) Indiquez cette valeur avant de créer la base de données qui contiendra les tables Identity Manager. Vous pouvez par exemple spécifier

lower_case_table_names=1

dans les fichiers my.cnf et my.ini pour toutes les plates-formes sur lesquelles vous souhaitez sauvegarder et restaurer une base de données.

Paramètre Ansi

Vous devez ajouter l'entrée ansi à votre fichier my.cnf (sous Linux) ou my.ini (sous Windows). Si vous ne le faites pas, les tables RBPM sont créées mais les données initiales des tables ne sont pas chargées et vous risquez de recevoir un message d'erreur de type Définition de page du conteneur de l'invité introuvable.

Une fois que vous avez ajouté l'entrée ansi, le fichier my.cnf (ou my.ini) doit se présenter comme suit :

# These variables are required for IDM User Application
character_set_server=utf8
default-table-type=innodb

# Put the server in ANSI SQL mode.
#See http://www.mysql.com/doc/en/ANSI_mode.html
ansi

Pour vérifier que la modification permettant d'utiliser le mode Ansi a bien été prise en compte, vous pouvez exécuter l'instruction SQL suivante sur votre serveur MySQL :

mysql> select @@global.sql_mode;
+-------------------------------------------------------------+
| @@global.sql_mode                                           |
+-------------------------------------------------------------+
| REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI |
+-------------------------------------------------------------+
1 row in set (0.00 sec)

Conditions relatives au compte utilisateur

Le compte utilisateur employé au cours du processus d'installation doit bénéficier d'un accès total à la base de données qui sera utilisée par l'application utilisateur (c'est-à-dire en être propriétaire). En outre, ce compte doit pouvoir accéder aux tables du système. Celles-ci peuvent varier en fonction de votre environnement.

Créez un utilisateur devant se loguer au serveur MySQL et accordez-lui des privilèges, par exemple :

GRANT ALL PRIVILEGES ON <nom_base_de_données.>* TO <nom_utilisateur>@<hôte> IDENTIFIED BY ‘mot_de_passe’

L'ensemble minimum de privilèges est CREATE, INDEX, INSERT, UPDATE, DELETE et LOCK TABLES. Pour obtenir des informations sur la commande GRANT, reportez-vous à http://www.mysql.org/doc/refman/5.0/en/grant.html.

IMPORTANT :le compte utilisateur doit également posséder des droits de sélection au niveau de la table mysql.user. Pour configurer les droits appropriés, la syntaxe SQL doit être la suivante :

USE mysql;
GRANT SELECT ON mysql.user TO <username>@<host>;

2.4.2 Remarques sur la configuration d'une base de données Oracle

Lorsque vous créez votre base de données Oracle, veillez à bien utiliser AL32UTF8 afin de définir un ensemble de caractères codés en Unicode. (Voir AL32UTF8.)

Lorsque vous créez un utilisateur pour votre base de données Oracle, vous devez générer les instructions suivantes à l'aide de l'utilitaire SQL Plus. Ces instructions créent l'utilisateur et définissent ses privilèges. Accordez les privilèges CONNECT et RESOURCE, par exemple :

CREATE USER utilisateur_IDM IDENTIFIED BY mot_de_passe

GRANT CONNECT, RESOURCE to utilisateur_IDM

UTF-8 sur Oracle 11g. Sur Oracle 11g, vous pouvez entrer la commande suivante afin de confirmer que la base prend en charge le codage UTF-8 :

select * from nls_database_parameters;

Si vous n'avez pas configuré la base pour UTF-8, les données renvoyées sont les suivantes :

NLS_CHARACTERSET
WE8MSWIN1252

Si vous avez configuré la base pour UTF-8, les données renvoyées sont les suivantes :

NLS_CHARACTERSET
AL32UTF8

2.4.3 Remarques sur la configuration d'une base de données MS SQL Server

Configurez votre base de données MS SQL Server comme suit :

  1. Installez MS SQL Server.

  2. Connectez-vous au serveur et ouvrez une application pour créer la base de données et l'utilisateur de la base de données (généralement l'application SQL Server Management Studio).

  3. Créez une base de données. SQL Server ne permet pas aux utilisateurs de sélectionner le jeu de caractères des bases de données. L'application utilisateur  stocke les données caractères SQL Server dans un type de colonne NCHAR qui prend en charge le codage UTF-8.

  4. Créez un login.

  5. Ajoutez le login en tant qu'utilisateur de la base de données.

  6. Accordez ces privilèges au login : CREATE TABLE, CREATE INDEX, SELECT, INSERT, UPDATE et DELETE.

L'application utilisateur requiert la version 3.0.3.0.1119.0 du pilote JDBC pour Microsoft SQL Server 2008. Notez que seuls les systèmes d'exploitation Sun Solaris, Red Hat Linux et Windows 2000 ou version ultérieure sont officiellement pris en charge avec ce pilote JDBC.

2.4.4 Remarques sur la configuration d'une base de données DB2

Cette section contient des remarques sur la configuration de DB2.

Sélection des fichiers JAR du pilote de base de données

Les fichiers JAR du pilote de base de données doivent être sélectionnés au cours de l'installation, dans l'écran Nom d'utilisateur et mot de passe de la base de données. Toutefois, le bouton Parcourir en regard du champ Fichier JAR du pilote de base de données ne vous permet de sélectionner qu'un seul fichier JAR. Or, pour DB2, vous devez fournir 2 fichiers JAR :

  • db2jcc.jar

  • db2jcc_license_cu.jar

Par conséquent, si vous exécutez le programme d'installation sous WebSphere (le seul serveur d'applications pris en charge avec DB2), vous pouvez sélectionner un fichier JAR mais vous devrez saisir manuellement le second fichier. Pour ce faire, utilisez le séparateur de fichiers approprié pour le système d'exploitation sous lequel s'exécute le programme. Vous pouvez aussi spécifier manuellement les deux fichiers.

Par exemple, sous Windows :

c:\db2jars\db2jcc.jar;c:\db2jars\db2jcc_license_cu.jar

Par exemple, sous Solaris et Linux :

/home/lab/db2jars/db2jcc.jar:/home/lab/db2jcc_license_cu.jar

Optimisation des bases de données DB2 pour éviter les blocages et les timeouts

Lorsque vous utilisez DB2, un message d'erreur indiquant que la transaction en cours a été annulée du fait d'un blocage ou d'un timeout peut apparaître. Il peut résulter de la présence simultanée d'un grand nombre d'utilisateurs et de bases de données.

DB2 propose plusieurs moyens de résoudre les conflits de verrous, notamment le réglage de l'optimiseur basé sur les coûts. Excellente source de la documentation d'administration de DB2, le guide des performances contient de nombreuses informations sur le réglage.

Aucune valeur de réglage n'est définie pour toutes les installations car le niveau de simultanéité et la taille des données varient. Toutefois, les conseils suivants sur le réglage de DB2 peuvent servir à votre installation :

  • La commande reorgchk update statistics actualisera les statistiques utilisées par l'optimiseur. Les mises à jour périodiques de ces statistiques peuvent suffire à minimiser le problème.

  • L'utilisation du paramètre de registre DB2 DB2_RR_TO_RS peut améliorer la simultanéité du fait du non-verrouillage de la clé de ligne suivante insérée ou mise à jour.

  • Augmentez la valeur des paramètres MAXLOCKS et LOCKLIST (base de données).

  • Augmentez la valeur de la propriété currentLockTimeout (pool de connexion de la base de données).

  • Utilisez l'assistant de configuration de base de données et optimisez-le pour accélérer les transactions.

  • Rendez VOLATILES toutes les tables de l'application utilisateur pour indiquer à l'optimiseur que la cardinalité variera considérablement. Pour rendre VOLATILE la table AFACTIVITY par exemple, vous pouvez émettre la commande : ALTER TABLE AFACTIVITY VOLATILE

    La commande ALTER TABLE doit être exécutée après le démarrage de l'application utilisateur et une fois les tables de la base de données créées. Pour plus d'informations, reportez-vous à la documentation sur cette instruction. Voici les instructions SQL pour toutes les tables de l'application utilisateur :

    ALTER TABLE AFACTIVITY VOLATILE
    ALTER TABLE AFACTIVITYTIMERTASKS VOLATILE
    ALTER TABLE AFBRANCH VOLATILE
    ALTER TABLE AFCOMMENT VOLATILE
    ALTER TABLE AFDOCUMENT VOLATILE
    ALTER TABLE AFENGINE VOLATILE
    ALTER TABLE AFENGINESTATE VOLATILE
    ALTER TABLE AFMODEL VOLATILE
    ALTER TABLE AFPROCESS VOLATILE
    ALTER TABLE AFPROVISIONINGSTATUS VOLATILE
    ALTER TABLE AFQUORUM VOLATILE
    ALTER TABLE AFRESOURCEREQUESTINFO VOLATILE
    ALTER TABLE AFWORKTASK VOLATILE
    ALTER TABLE AF_ROLE_REQUEST_STATUS VOLATILE
    ALTER TABLE ATTESTATION_ATTESTER VOLATILE
    ALTER TABLE ATTESTATION_ATTRIBUTE VOLATILE
    ALTER TABLE ATTESTATION_QUESTION VOLATILE
    ALTER TABLE ATTESTATION_REPORT VOLATILE
    ALTER TABLE ATTESTATION_REQUEST VOLATILE
    ALTER TABLE ATTESTATION_RESPONSE VOLATILE
    ALTER TABLE ATTESTATION_SURVEY_QUESTION VOLATILE
    ALTER TABLE ATTESTATION_TARGET VOLATILE
    ALTER TABLE AUTHPROPS VOLATILE
    ALTER TABLE DATABASECHANGELOG VOLATILE
    ALTER TABLE DATABASECHANGELOGLOCK VOLATILE
    ALTER TABLE DSS_APPLET_BROWSER_TYPES VOLATILE
    ALTER TABLE DSS_APPLET_CFG VOLATILE
    ALTER TABLE DSS_APPLET_CFG_MAP VOLATILE
    ALTER TABLE DSS_BROWSER_TYPE VOLATILE
    ALTER TABLE DSS_CONFIG VOLATILE
    ALTER TABLE DSS_EXT_KEY_USAGE_RESTRICTION VOLATILE
    ALTER TABLE DSS_USR_POLICY_SET VOLATILE
    ALTER TABLE JBM_COUNTER VOLATILE
    ALTER TABLE JBM_DUAL VOLATILE
    ALTER TABLE JBM_ID_CACHE VOLATILE
    ALTER TABLE JBM_MSG VOLATILE
    ALTER TABLE JBM_MSG_REF VOLATILE
    ALTER TABLE JBM_POSTOFFICE VOLATILE
    ALTER TABLE JBM_ROLE VOLATILE
    ALTER TABLE JBM_TX VOLATILE
    ALTER TABLE JBM_USER VOLATILE
    ALTER TABLE PORTALCATEGORY VOLATILE
    ALTER TABLE PORTALPORTLETHANDLES VOLATILE
    ALTER TABLE PORTALPORTLETSETTINGS VOLATILE
    ALTER TABLE PORTALPRODUCERREGISTRY VOLATILE
    ALTER TABLE PORTALPRODUCERS VOLATILE
    ALTER TABLE PORTALREGISTRY VOLATILE
    ALTER TABLE PROFILEGROUPPREFERENCES VOLATILE
    ALTER TABLE PROFILEUSERPREFERENCES VOLATILE
    ALTER TABLE PROVISIONING_CODE_MAP VOLATILE
    ALTER TABLE PROVISIONING_CODE_MAP_LABEL VOLATILE
    ALTER TABLE PROVISIONING_VIEW_VALUE VOLATILE
    ALTER TABLE PROVISIONING_VIEW_VALUE_LABEL VOLATILE
    ALTER TABLE SECURITYACCESSRIGHTS VOLATILE
    ALTER TABLE SECURITYPERMISSIONMETA VOLATILE
    ALTER TABLE SECURITYPERMISSIONS VOLATILE
    ALTER TABLE SEC_DELPROXY_CFG VOLATILE
    ALTER TABLE SEC_DELPROXY_SRV_CFG VOLATILE
    ALTER TABLE SEC_SYNC_CLEANUP_QUEUE VOLATILE