Our SARSTC task failed with Abend U0061 and message "SARTPO61 DATABASE TAPE UTILIZATION CAPACITY IS FULL".
We are looking for ways to recover it , as it impacts a production System.
Release : 14.0
Component : View
The client's environment consisted of the following:
. SARINIT: NGENI=007
STORGRP0=/.../09999/...
STORGRP1=.../.../09999/...
STORGRP2=.../.../00001/...
STORGRP3=.../.../09999/...
STORGRP4=.../.../00001/...
STORGRP5=.../.../09999/...
STORGRP6=.../.../00001/...
STORGRP7=.../.../09999/...
STORGRP8=.../.../00001/...
STORGRP9=.../.../09999/...
. The client has not run SARPAC.
----------------------------------------------------------------------------------------------------------------------------------------
To get an understanding of what content was on the tapes, asked that the client run a SARPAC REPORT:
//XXXXXXXX JOB ...
//SARPAC EXEC PGM=SARPAC,PARM='VIEW_HLQ,REPORT' <=== MODIFY DB NAME
//STEPLIB DD DISP=SHR,DSN=VIEW.CVDELOAD <=== MODIFY, IF USED
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN DD DUMMY
//
The SARPAC REPORT showed:
. All 65,535 tape slots were occupied by an active tape.
. Some tapes showed a status of "INDEX ONLY".
. Most tapes contained 5 reports or less.
. Many tapes were 8 years or older.
------------------------------------------------------------------------------
Instructed the client to do the following:
. Set SARINIT NGENI=1
. In the STORGRPn parameters, change 00001 to 00020
. As there were no tape slots available:
. . Set SARINIT TBACKUP=NO
. Recycle the SARSTC task.
. Run a View backup, using "/F sarstc,DUMP".
. . As the View backup expires tapes with no active reports, several tapes were made available.
. Review the SARPAC REPORT, to find groups of tapes that can be run in SARPAC.
. Run SARPAC, for tape groups, using:
//XXXXXXXX JOB ...
//SARPAC EXEC PGM=SARPAC,PARM='VIEW_HLQ,REPORT' <=== MODIFY DB NAME
//STEPLIB DD DISP=SHR,DSN=VIEW.CVDELOAD <=== MODIFY, IF USED
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN DD *
TAPESEQ=nnnnn-nnnnn
TAPESEQ=nnnnn-nnnnn
/*
//
. Run SARPAC several times before the next View backup.
. Set SARINIT TBACKUP=YES, and recycle SARSTC.
. At the next View backup, more tapes will expire, expanding the available tape pool.
. Continue to run SARPACs, to move reports to new tapes.
----------------------------------------------------------------------------------------------------------
To recover the lost reports from another database/tape, the client was given this procedure:
. As none of the reports can be recalled from the tape in question, first would be to run a SARTSLST job, to create a //CTLCARDS file of SARBCH /DELETE transactions.
. Run the //CTLCARDS file through program SARBCH, which will remove the report entries from the index of the database.
. At the next View backup, View will expire the tape in question.
The client had another database from which the reports could be recovered.
A procedure to migrate the recovered reports to the current database would be to:
. Create files of SARBCH /LOAD transactions, to load reports to the secondary database disk layer:
//XXXXXXXX JOB ...
//SARBCH EXEC PGM=SARBCH,PARM='VIEW_HLQ' <=== MODIFY DB NAME
//STEPLIB DD DISP=SHR,DSN=VIEW.CVDELOAD <=== MODIFY, IF USED
//SYSPRINT DD SYSOUT=*
//REPORT DD SYSOUT=*
//SYSIN DD DISP=SHR,DSN=load.file_n <=== Modify /LOAD file name
//
. Create files of SARDBASE Selective UNLOAD transactions, to extract reports from the secondary database disk layer:
//XXXXXXXX JOB ...
//SARDBASE EXEC PGM=SARDBASE,PARM='VIEW_HLQ' <=== MODIFY DB NAME
//STEPLIB DD DISP=SHR,DSN=VIEW.CVDELOAD <=== MODIFY, IF USED
//SYSPRINT DD SYSOUT=*
//*******************************************
//* USE THE FOLLOWING SARUNLTB STATEMENT *
//* TO DO A "SELECTIVE" UNLOAD *
//*******************************************
//SARUNLTB DD DISP=SHR,DSN=unload.file_n <=== Modify, UNLOAD table file name
//SARUNLD DD DISP=(,CATLG,DELETE),
// DSN=XXXXXX.XXXXXX.SARUNLDn,
// DCB=(RECFM=VB,LRECL=32756,BLKSIZE=32760),
// UNIT=tape,LABEL=(1,SL)
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
UNLOAD
/*
//
Run the FIXGCRG program (supplied by Support) to change the generation number of the reports extracted from the secondary database to the generation number used on the primary database:
//FIXUNLD JOB ...
//$$$$$$@ EXEC PGM=IRXJCL,PARM='FIXGCRG'
//SYSEXEC DD DSN=YOUR.REXX.LIBRARY,DISP=SHR <=== Modify REXX library name
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD DUMMY
//SYSUDUMP DD SYSOUT=*
//INDD DD DSN=XXXXXX.XXXXXX.SARUNLDn,
// DISP=SHR
//OUTDD DD DSN=YOUR.NEW.UNLOAD.DSN,
// DISP=(,CATLG),UNIT=SYSDA,
// SPACE=(CYL,(500,50),RLSE),
// DCB=(RECFM=VB,LRECL=32756,BLKSIZE=32760)
Perform a backup of the primary database, using DFDSS or FDR utilities, or can be run using SARDBASE UNLOAD.
Run the below SARDBASE LOAD job, to load reports to the disk layer of the primary database:
//XXXXXXXX JOB ...
//SARDBASE EXEC PGM=SARDBASE,PARM='VIEW_HLQ' <=== MODIFY DB NAME
//STEPLIB DD DISP=SHR,DSN=VIEW.CVDELOAD <=== MODIFY, IF USED
//SYSPRINT DD SYSOUT=*
//SARLOAD DD DISP=SHR,DSN=YOUR.NEW.UNLOAD.DSN
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
LOAD
/*
//
Note: Please ensure that there is sufficient disk space on both the primary and secondary databases, for the SARBCH /LOAD step and the SARDBASE LOAD steps.