SAS sur Mainframe : Que faire quand la bibliothèque WORK est pleine ?
Simon 29 Aufrufe
Schwierigkeitsgrad
Débutant
Veröffentlicht am :
Expertenrat
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.
Wichtiger Haftungsausschluss
Die auf WeAreCAS.eu bereitgestellten Codes und Beispiele dienen Lehrzwecken. Es ist zwingend erforderlich, sie nicht blind in Ihre Produktionsumgebungen zu kopieren. Der beste Ansatz besteht darin, die Logik zu verstehen, bevor sie angewendet wird. Wir empfehlen dringend, diese Skripte in einer Testumgebung (Sandbox/Dev) zu testen. WeAreCAS übernimmt keine Verantwortung für mögliche Auswirkungen oder Datenverluste auf Ihren Systemen.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.