[z/OS]

Création d'une table DB2 pour la persistance des sessions

Les données de session sont collectées et stockées dans un DB2® tableau. Si vous utilisez DB2 pour la persistance des sessions, vous devez créer et définir une table DB2 associée au serveur d'applications.

A propos de cette tâche

Pour créer une table DB2 afin de collecter les données de session, procédez comme suit :

Procédure

  1. Demandez à l'administrateur DB2 de créer une table de base de données DB2 pour y stocker les données des sessions. (Pour plus d'informations sur la création DB2 bases de données voir le DB2 UDB pour OS/390® et z/OS® V7 Guide d'administration.)

    L'espace table dans lequel la table de base de données est créée doit être défini avec un verrouillage au niveau des lignes (LOCKSIZE ROW). Il doit également avoir une taille de page suffisamment grande pour les objets stockés dans le tableau au cours d'une session. L'exemple suivant correspond à la définition d'un espace table avec verrouillage de niveau ligne et une taille de page de pool de mémoire tampon de 32 Ko :

    CREATE DATABASE database_name
      STOGROUP SYSDEFLT
      CCSID EBCDIC;
    
    CREATE TABLESPACE tablespace_name IN database_name
      USING STOGROUP group_name
      PRIQTY 512
      SECQTY 1024
      LOCKSIZE ROW
      BUFFERPOOL BP32K;

    Le gestionnaire de sessions utilise la table DB2 définie dans cet espace table pour traiter les données des sessions. Cette table doit respecter le format suivant (à l'exception des longueurs VARCHAR, qui sont configurables) :

    CREATE TABLE database_name.table_name  (
      ID               VARCHAR(128) NOT NULL ,
      PROPID           VARCHAR(128) NOT NULL ,
      APPNAME          VARCHAR(64) ,
      LISTENERCNT      SMALLINT ,
      LASTACCESS       DECIMAL(19,0),
      CREATIONTIME     DECIMAL(19,0),
      MAXINACTIVETIME  INTEGER ,
      USERNAME         VARCHAR(256) ,
      SMALL            VARCHAR(3122)  FOR BIT DATA ,
      MEDIUM           VARCHAR(28869) FOR BIT DATA ,
      LARGE            BLOB(2097152),
      )
      IN database_name.tablespace_name;
    Note: Les attributs de longueur spécifiés pour VARCHAR ne sont que des exemples. Ces valeurs doivent être assez élevées pour prendre en charge la longueur du nom d'application et du nom d'attribut de chaque session.

    Un index unique doit être créé sur leID,PROPIDetAPPNAMEcolonnes de ce tableau. Voici un exemple de la définition d'index :

    CREATE UNIQUE INDEX database_name.index_name ON 
          database_name.table_name
          (ID     ASC,
          PROPID  ASC,
          APPNAME ASC);
    Remarque :
    1. Lors de l'exécution, le gestionnaire de sessions accède à la table cible avec l'identité du serveur J2EE sur lequel l'application web propriétaire est déployée. Tout conteneur Web configuré pour utiliser des sessions persistantes doit pouvoir accéder en lecture et en écriture à la table de base de données sujet.
    2. Le traitement de la session HTTP utilise l'index défini à l'aide duCREATE INDEXdéclaration pour éviter les blocages de base de données. Dans certaines situations, comme lorsqu'une taille de table relativement petite est définie pour la base de données, DB2 peut décider de ne pas utiliser cet index. Dans ce cas, des blocages de base de données peuvent se produire. Si c'est le cas, reportez-vous aux recommandations sur la façon de calculer l'espace nécessaire pour un index et ajuster la taille des tables utilisées en conséquence dans le guide d'administration DB2.
    3. Il peut s'avérer nécessaire d'ajuster DB2 afin d'utiliser avec efficacité la table de base de données des sessions et éviter les blocages lorsque vous y accédez. L'administrateur DB2 trouvera des informations spécifiques sur l'optimisation de la version de DB2 utilisée dans le guide d'administration de DB2.

    Vous devez définir un espace table LOB et définir une table auxiliaire dans cet espace table. L'exemple suivant illustre la définition d'un espace table LOB :

    CREATE LOB TABLESPACE LOB_tablespace_name IN database_name
        BUFFERPOOL BP32K
        USING STOGROUP group_name
        PRIQTY 512
        SECQTY 1024
        LOCKSIZE LOB;
    
    CREATE AUX TABLE database_name.aux_table_name
        IN database_name.LOB_tablespace_name
        STORES database_name.table_name
        COLUMN LARGE;

    Un index doit être créé pour cette table auxiliaire. Voici un exemple de la définition d'index :

    CREATE INDEX database_name.aux_index_name ON 
          database_name.aux_table_name;
  2. Avoir ton DB2 L'administrateur accorde le z/OS userID, sous laquelle la région du serveur est exécutée, l'accès approprié à cette DB2 tableau. Par exemple, exécutez la commande suivante pour accorder à l'ID utilisateur z/OS CBASRU1 utilisé pour l'exécution de la région du serveur l'accès à la table SESSIONS de la base de données SESSDB :
    GRANT ALL ON SESSDB.SESSIONS TO CBASRU1;
  3. Configurer DB2 table pour la persistance de la session.