Joined: 23 Feb 2009 Posts: 11 Location: Jefferson City MO
Hello, I keep getting the following error within DFSORT...
Code:
ICE143I 0 BLOCKSET SORT TECHNIQUE SELECTED
ICE250I 0 VISIT http://www.ibm.com/storage/dfsort FOR DFSORT PAPERS, EXAMPLES AND MORE
ICE000I 0 - CONTROL STATEMENTS FOR 5694-A01, Z/OS DFSORT V1R5 - 01:39 ON TUE FEB 24, 2009 -
OPTION DYNALLOC=(,32)
ICE140I 0 END OF PARAMETERS FROM DFSPARM - SYSIN OR SORTCNTL/PARAMETER LIST CONTROL STATEMENTS FOLLOW
SORT FIELDS=(00006.0,00000.4,A,00012.0,00039.0,A,00001.0,00005.0,A),FOR*
MAT=BI,FILSZ=E000001384787124
RECORD TYPE=F,LENGTH=(0050,0050,0050)
OPTION MSGPRT=ALL,MSGDDN=UTPRINT,MAINSIZE=065536K
ICE201I E RECORD TYPE IS F - DATA STARTS IN POSITION 1
ICE083A D RESOURCES WERE UNAVAILABLE FOR DYNAMIC ALLOCATION OF WORK DATA SETS (970C)
ICE753I 0 FWK=(0,0) SWK=(0,0) TWK=(0,0) RWK=(0,0) TOTAL=(0,0) BLK=49120
ICE751I 0 C5-K90007 C6-K90007 C7-K90000 C8-K90007 E4-K90007 C9-BASE E5-K10929 E6-K90000 C4-K90000 E7-K11698
ICE750I 0 DC 0 TC 0 CS DSVVV KSZ 45 VSZ 45
ICE752I 0 FSZ=1384787124 RE IGN=0 C AVG=52 0 WSP=93527225 E DYN=0 49120
ICE052I 3 END OF DFSORT
There are a large number of records on this table...here is the count from the DSNUTILB utility....
Code:
DSNU304I -DB2D DSNURWT - (RE)LOAD PHASE STATISTICS - NUMBER OF RECORDS=230797854 FOR TABLE MMITCGTS.MMIT_CLAIM_INDEX
DSNU1147I -DB2D DSNURWT - (RE)LOAD PHASE STATISTICS - TOTAL NUMBER OF RECORDS LOADED=230797854 FOR TABLESPACE
MMITTSI1.MMISI001
DSNU016I DSNUGSAT - UTILITY BATCH MEMORY EXECUTION ABENDED, REASON=X'0000' CAUSE=X'001C3528'
DSNU016I DSNUGBAC - UTILITY BATCH MEMORY EXECUTION ABENDED, REASON=X'00E40345'
I have tried allocating my own SORTWKxx dd's....I have tried various DYNALLOC options. I can tell you that the dasd storage pool that the SORTWKxx are going to has over 4 million free tracks available which are situated on 3390 mod9' and mod27's. I have even tried to allocate the SORTWKxx to TAPE which is probably not a good thing since it appears this causes DFSORT to not use the BLOCKSET technique. I'd appreciate any help/ideas anyone can provide. Thanks!
I have already read and tried everything I can think of. I've exhausted my research capabilities and have tried many suggestions. I'm looking for some straight forward advice now. Just because my tag says new member...I'm not posting without reading manuals and using google to my full ability. I'm thinking something on our setup or the hook into DB2 is incorrect. Frank...if your out there I'd appreciate some advice.
First let's look at your space requirements. With an lrecl of 50 and FILSZ=E000001384787124 you have total file size of about 64GB. We usually estimate the work space requirement as about 1.3 times the file size so you're looking at around 80GB. That equates to almost 100,000 cylinders. So based on how much free space you have on individual volumes, you can determine how many work data sets you need. If you have a lot of volumes with at least 3000 cyls available, you can probably get by with 32 work data sets.
Now how do we get DFSORT to use 32 work data sets? For a DB2 Utility, you cannot override DYNALLOC via DFSPARM. You need to pass SORTNUM 32 in the utility control statements and this will cause the utility to pass DYNALLOC=(,32) to DFSORT. This is documented in info APAR II14047 which provides a whole bunch of useful information on using DFSORT with DB2 Utilities.
Another thing I would mention about this utility is that I see MAINSIZE=65536K is being passed. This sort would probably benefit from more virtual storage because it's so large. DB2 uses DFSORT's installation default for DSA as the maximum mainsize it will pass. So if you have a number of DB2 utilities with sorts of this magnitude, you should consider having your DFSORT installation default changed from its shipped value of DSA=64 to DSA=128.
Joined: 23 Feb 2009 Posts: 11 Location: Jefferson City MO
Thanks Dave!
I have 16 volumes in the pool that is being used for the sortwk datasets. This consist of 6 mod27's with 32000 cyl each free and 10 mod9's with around 9000 cyl each free. So should I specify SORTNUM 32 in the utility control statements. I cannot go over 32 as this causes dfsort to not use the blockset technique...correct? With plenty of space in this pool but only 16 volumes....is this an issue for dfsort? There are 5 indexes on this table so that means 5 sorts....does dfsort then take the sortnum times the number of indexes? I really appreciate the help?
I would first try SORTNUM 12. DB2 is going to pass DYNALLOC=(,12) to each of the sorts. If DB2 is able to maximize it's parallelism, I expect we'll have 6 concurrent sorts (1 for the data, 5 for the indexes). So that means we'll spread 72 work data sets across 16 volumes. You could try a smaller sortnum but that means fewer/larger work data sets. I think you have a better chance of them all fitting if we allocate more/smaller data sets. I don't see a way to avoid multiple work data sets on the same volume given the size of this utility and the number of volumes available.
Also, fyi, DFSORT blockset can support up to 255 work data sets. There is no limit of 32 for blockset.
Joined: 23 Feb 2009 Posts: 11 Location: Jefferson City MO
In the new job that I'm adding the SORTNUM 12 on the db2 control statement I will be removing all the allocated sortwk dd's in my JCL and let DFSORT do whatever it needs....Just wanted to make sure everyong is on the same page.
Earlier we estimated that this sort would need about 100,000 cylinders of work space. You coded 10 SORTWKnn statements all with a primary and secondary allocation of 4350 cylinders. So we started out with 43,500 cylinders of primary space. We received B37 abends on all 10 when trying to obtain additional secondary space. I just realized that's because you can't use more than 64K tracks (about 4369 cylinders) on any of these data sets unless you add DSNTYPE=LARGE to the SORTWKnn dd statements. This will cause them to be allocated as large format and thus be able to use additional space on the MOD9 and MOD27 volumes. DFSORT supports large format and in fact DFSORT's dynamic allocation allocates them that way. But when you use JCL work data sets, you have to specify DSNTYPE=LARGE to get them allocated as large format.
Joined: 23 Feb 2009 Posts: 11 Location: Jefferson City MO
OK..good info to know. The SORTNUM 12 using DFSORT's dynamic allocation is running now. It will take it some time so I'll post the results later tonight or in the morning. Thanks.
Joined: 23 Feb 2009 Posts: 11 Location: Jefferson City MO
Dave,
Sent you a couple emails with the sysouts of the last 2 runs. I'm currently running with my own work dsn allocations and have included the DSNTYPE=LARGE on each of those dd's. If you see anything that raises concern on those sysouts please let me know....I'm willing to try about anything at this point. Thanks.
Got a reply back from my colleague in DB2 development. According to the DB2 Utility Guide "If you omit SORTDEVT, SORTNUM is ignored" Sorry I was not aware of this. You need to specify
SORTDEVT SYSDA SORTNUM 12
This should cause the sort to use 12 work data sets instead of the default of only 4.