SAS sur Mainframe : Que faire quand la bibliothèque WORK est pleine ?
Simon 29 vistas
Nivel de dificultad
Débutant
Publicado el :
Consejo del experto
Simon
Sur z/OS, l'erreur "Full" signale souvent l'épuisement des 16 extensions (extents) autorisées plutôt qu'un disque physiquement saturé. La règle d'or ? Allouez toujours 90% de l'espace estimé en allocation primaire via le JCL pour minimiser la fragmentation et éviter les échecs en fin de traitement.
Sur un PC (Windows), cela signifie généralement que votre disque dur est plein. Mais sur un Mainframe (z/OS), la logique est plus subtile : le disque n'est pas forcément plein, mais vous avez dépassé l'espace qui vous était alloué.
Voici comment comprendre et résoudre ce problème d'allocation d'espace, basé sur les conseils d'experts du forum.
1. Le Diagnostic : L'allocation d'espace sur Mainframe
Contrairement à Windows où un fichier grandit tant qu'il y a de la place, le Mainframe exige que l'espace soit défini à l'avance (pré-alloué) via des Extents.
Le système fonctionne en deux temps :
Allocation Primaire : Un gros bloc d'espace réservé au démarrage du job.
Allocations Secondaires : Des petits blocs supplémentaires que le système va chercher si le bloc primaire est plein (généralement limité à 15 ou 16 extensions).
2. Solution 1 : La Compression (Le réflexe immédiat)
Avant de demander plus d'espace disque à l'administration, essayez de réduire la taille de vos données. L'expert David suggère d'activer la compression binaire. Sur des données volumineuses comportant du texte ou des répétitions, cela peut réduire la taille de 50% à 80%.
/* Compression activée pour cette table spécifique */
data WORK.A (compress=yes);
set DB2.GRANDE_TABLE;
run;
/* OU activée globalement pour toute la session */
options compress=yes;
1
/* Compression activée pour cette table spécifique */
2
DATA WORK.A (compress=yes);
3
SET DB2.GRANDE_TABLE;
4
RUN;
5
6
/* OU activée globalement pour toute la session */
7
options compress=yes;
Note : Cela augmente légèrement l'usage CPU, mais réduit considérablement les I/O (Entrées/Sorties), ce qui est souvent bénéfique sur Mainframe.
3. Solution 2 : Modifier les Paramètres JCL (WORK)
Parfois, un seul disque physique (DASD volume) ne suffit pas pour contenir votre table temporaire, même en utilisant tout l'espace disponible (environ 4300 cylindres sur les anciens modèles 3390).
L'expert Chuck explique comment étendre la bibliothèque WORK sur plusieurs volumes physiques. Cela nécessite de modifier le JCL pour concaténer plusieurs allocations disques.
Note : Cette technique est réservée aux utilisateurs avancés ayant accès à la configuration JCL détaillée.
Si vous rencontrez l'erreur "File Full" sur Mainframe :
Comprimez (COMPRESS=YES) : C'est simple et souvent suffisant.
Augmentez l'allocation (WORK='Prim Sec') : Demandez plus de cylindres dans votre JCL.
Vérifiez le SMS : Parfois, la classe de stockage (Storage Management Subsystem) limite automatiquement la taille des fichiers. Il faudra alors contacter l'administrateur système.
Aviso importante
Los códigos y ejemplos proporcionados en WeAreCAS.eu son con fines educativos. Es imperativo no copiarlos y pegarlos ciegamente en sus entornos de producción. El mejor enfoque es comprender la lógica antes de aplicarla. Recomendamos encarecidamente probar estos scripts en un entorno de prueba (Sandbox/Dev). WeAreCAS no acepta ninguna responsabilidad por cualquier impacto o pérdida de datos en sus sistemas.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.