support clients /

Gestion de la bibliothèque WORK

Cet article présente les spécificités et les options SAS disponibles pour optimiser la gestion de la bibliothèque temporaire de travail de SAS : WORK. Il propose des exemples faciles à mettre en œuvre en fonction de vos besoins.

Points techniques abordés :

  • Options systèmes spécifiques à WORK
  • Outil d'administration pour WORK

Introduction

Au démarrage de chaque session SAS, une bibliothèque de travail temporaire est automatiquement créée sous le chemin indiqué par l’option WORK, défini dans le fichier de configuration « $SASROOT/nls//sasv9.cfg », où :

  • $SASROOT représente le chemin de l'installation SAS,
  • LANG, la langue choisie pendant l’installation, à savoir « en » (anglais) ou « fr » (français).

Configuration standard de l'option WORK

OS  

WORK pointe par défaut vers

Windows

-WORK "!TEMP\SAS Temporary Files"
 (où TEMP est une variable d’environnement Windows.)

Unix

-work /usr/tmp
(selon l'espace temporaire de la machine)

Cette bibliothèque stocke les fichiers temporaires de travail SAS créés par l'utilisateur, ainsi que les fichiers internes SAS créés lors des traitements. Par défaut, ces fichiers seront supprimés lors de la fermeture de la session.

OS  

Nom du répertoire WORK spécifique à la session

Windows

_TDxxx où xxx est l'ID du processus (PID) de la session SAS

Unix

SAS_workcode_nodename
Où 
Workcode : est un code à 12 caractères.
nodename : est le nom de l'ordinateur UNIX.

Note : par défaut, les droits de ce répertoire sont restreints au seul propriétaire (rwx------)

Il est possible de stocker ou de récupérer des fichiers SAS dans cette bibliothèque.
Voici des exemples :

/* Les tables test1 et test2 sont créées dans la bibliothèque WORK */
data test1;
    x=1;
run;
data work.test2;
    y=1;
run;
proc datasets lib=work;quit;
 

/* La table test1 est copiée en test3 */
data test3;
   set test1;
run;

Détails

A présent, nous allons voir comment optimiser la gestion de cette bibliothèque. Les erreurs suivantes sont souvent rencontrées :

ERROR: An I/O error has occurred on file WORK.#xxnnnnn.UTILITY
ERROR: Write to WORK._tfxxnn.UTILITY failed. File is full and may be damaged
ERROR: Insufficient space in file WORK.@XXXXXXX.UTILITY
ERROR: insufficient authorization to access WORK library
ERROR: Library WORK does not exist

Ces erreurs indiquent soit un espace disque insuffisant ou bien un défaut d'autorisation lié au répertoire WORK.

Il est possible de retrouver le chemin exact de la WORK de la session SAS actuelle en utilisant le code suivant :

OS

/* Code */
proc options option=work;run;

Windows

WORK=C:\DOCUME~1\fraand\LOCALS~1\Temp\SAS Temporary Files\_TD240
                   Location for WORK SAS data library

Unix

WORK=/usr/tmp/SAS_work3CC40003C090_LOCHES
                   Location for WORK SAS data library

Dans un premier temps, les erreurs précédentes peuvent être éliminées simplement en vérifiant les éléments suivants :

  • Vérifier l'accès en écriture sur ce répertoire pour l'utilisateur
  • Libérer de l'espace disque sur ce disque ou cette partition, par exemple en supprimant les ressources non utilisées
  • Si nécessaire, changer la localisation de la WORK (vers un disque avec un accès en écriture et un espace disque suffisant) en modifiant  l’option WORK dans le fichier sasv9.cfg.
    Par exemple : de disque C: à disque D: où l'espace disponible est plus conséquent.
    -WORK "D:\WORKSAS" 

Les options suivantes, concernant la bibliothèque WORK, peuvent être utiles et intéressantes :

Option WORK

  • Distribution des bibliothèques WORK à travers plusieurs répertoires

Il s’agit d’une nouveauté de la version 9.2. Cette fonctionnalité élimine le problème potentiel de ne remplir qu’un seul volume avec tous les répertoires de travail. Pour cela, au lieu de positionner directement le chemin dans  l’option WORK, l'argument pointe vers un fichier qui contient une liste de répertoires que SAS peut utiliser pour l'attribution des bibliothèques de travail. Toutefois, une bibliothèque de travail créée lors de l’ouverture d’une session résidera intégralement sur le même disque.

OS

WORK pointe vers un fichier - exemple

Windows

–WORK "C:\SASWork\WorkLocations.txt"

/*Le fichier C:\SASWork\WorkLocations.txt contient*/

E:\SASWork
D:\SASWork
F:\SASWork
method=Random

Unix

-work /sasinfo/workfiles.conf

/*Le fichier /sasinfo/workfiles.conf contient*/

/disk1/sastempfiles
/disk2/sastempfiles
/disk3/sastempfiles
method=space
 

Lorsque l'argument de l’option WORK est une liste de répertoires dans un fichier, vous pouvez spécifier un algorithme pour choisir le répertoire à utiliser. Il y a deux valeurs possibles pour le paramètre «method » :

Method=Random  (valeur par défaut)
Method=Space

Avec METHOD = RANDOM, SAS choisit au hasard un emplacement  dans la liste des répertoires disponibles qui permet d'équilibrer la charge d'E/S sur plusieurs disques. Avec  METHOD = SPACE, SAS choisit le disque ayant le plus d'espace libre.

  • Pointage vers un chemin dynamique  

Il est également possible de paramétrer cette option  WORK vers un chemin plus dynamique en incorporant des variables d’environnement prédéfinies.
Par exemple, pour allouer la bibliothèque WORK dans un répertoire contenant le nom d'utilisateur.

OS

WORK pointe vers un chemin dynamique - exemple

Windows

Dans cet exemple !USERNAME est une variable système Windows prédéfinie.

-WORK "D:\DATA\!USERNAME\saswork"

L’utilisateur peut aussi créer des variables et les utiliser ex : !MYVAR

Unix

Créer une variable système dans $SASROOT/bin/sasenv_local.
Ici, $LOGNAME est une variable d'environnement Unix qui contient le nom de l'utilisateur connecté.

export WORKSAS /data/$LOGNAME/work

Ensuite, dans le fichier sasv9.cfg, déclarer la WORK :

-work !WORKSAS

Option WORKPERMS

Cette option est spécifique au système Unix.
Des problèmes de droits peuvent être rencontrés lors de tentatives de suppression manuelle ou de visualisation des fichiers temporaires créés dans le répertoire WORK par d'autres utilisateurs.

Pour définir les autorisations des fichiers temporaires créés dans la bibliothèque WORK, il faut utiliser l'option système WORKPERMS. La valeur par défaut est 700 et les fichiers sont restreints au seul propriétaire (rwx------).

Voici un exemple : pour attribuer les droits de lecture et d’exécution aux membres du groupe de l’utilisateur sur tous ces fichiers, il suffit d’initialiser l’option « workperms » avec une valeur de 750 dans le fichier de configuration, sasv9.cfg.  Tous les nouveaux fichiers dans la WORK seront ainsi créés avec les droits  (rwxr-x---).

OS

WORKPERMS – ajout de l'option dans sasv9.cfg

unix

/*Pour avoir rwxr–x---*/

-workperms 750

/*Pour avoir rwxrwxrwx*/

-workperms 777

Options WORKINIT / WORKTERM

La bibliothèque WORK ne peut pas être effacée ou réaffectée au cours d'une session SAS.
Les options  WORKINIT et WORKTERM contrôlent la création et la suppression de la bibliothèque de travail.

Option  

Description

WORKINIT
(par défaut)

Efface les fichiers temporaires dans la bibliothèque WORK qui appartiennent à une session précédente à l'invocation d'une nouvelle session SAS.

NOWORKINIT

Utilise un répertoire de WORK existant et garde les fichiers de la bibliothèque WORK au démarrage d'une nouvelle session SAS.


Option  

Description

WORKTERM
(par défaut)

Efface les fichiers de travail à la fin d'une session SAS.

NOWORKTERM

N'efface pas les fichiers de travail à la fin d'une session SAS

Par contre, entre deux exécutions (ex : des projets indépendants sous SAS® Enterprise Guide®), nous pouvons supprimer les tables temporaires pour libérer de l’espace physique en utilisant le code ci-dessous :

proc datasets lib=work kill;
quit;

Outil CLEANUP/CLEANWORK

Cet outil permet le nettoyage des fichiers temporaires restants.

Si une session SAS est interrompue (par exemple, en raison d'une fermeture brutale de la session SAS Enterprise Guide ou bien en utilisant la commande kill -9 sur unix), SAS ne supprimera pas le répertoire physique occupé par la bibliothèque temporaire. Il existe des outils qui permettent de nettoyer et libérer cette espace. Sur les environnements avec un grand nombre d'utilisateurs et/ou un niveau de charge conséquent, il est conseillé de planifier l'exécution de cette tâche au moins une fois par semaine.

OS

Mise en place de l'outil de nettoyage SAS

Windows

SAS Disk Cleanup Handler Utility  : cet utilitaire doit être configuré via l’outil générique de nettoyage de Windows « Microsoft Disk Cleanup Handler » (cleanmgr.exe). « SAS Disk Cleanup Handler » n’est pas livré par défaut avec l’installation SAS. Mais il est disponible en téléchargement: Il peut être planifié via Microsoft Task Scheduler.   

Etapes à suivre pour l’utiliser après l’installation :

  1. Démarrer> Programmes> Accessoires> Outils Système >  Nettoyage de disque        
    Sinon, Démarrer> Exécuter puis taper « cleanmgr »
  2. Cocher « SAS Temporary Files »
  3. Cliquer sur « OK »

Unix

CLEANWORK : cet utilitaire vous permet, à un instant donné, de vider les répertoires et fichiers restants dans le WORK. Les WORK liées avec les sessions SAS en cours ne seront pas impactées.

  • « cleanwork » est livré avec l’installation SAS. Il est contenu dans le répertoire   $SASROOT/utilities/bin/
  • Il peut être planifié via crontab / inittab

Dans l'exemple suivant, /REPERTOIRE_WORK est le chemin de la bibliothèque WORK

$> $SASROOT/utilities/bin/cleanwork /REPERTOIRE_WORK


Anitha DATCHANAMOURTY

Consultant Support Clients SAS France