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/
- $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"
|
|
Unix |
-work /usr/tmp
|
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
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 */ |
|
|
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 |
|
|
Windows |
WORK=C:\DOCUME~1\fraand\LOCALS~1\Temp\SAS Temporary Files\_TD240 |
|
Unix |
WORK=/usr/tmp/SAS_work3CC40003C090_LOCHES |
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*/ |
|
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 : |
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---*/ |
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 |
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 |
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; |
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 :
|
|
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.
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

