date
Specify the date after which the spooled file will be eligible for removal from the system by the Delete Expired Spooled Files (DLTEXPSPLF) command. The date must be enclosed in apostrophes if date separator characters are used in the value.
Days until file expires (DAYS)
Specifies the number of days to keep the spooled file.
Note: A value must be specified for this parameter if the Expiration date for file (EXPDATE) parameter has a value of *DAYS. If the EXPDATE parameter has a value other than *DAYS, no value is allowed for this parameter.
1-366
Specify an interval in days after which the spooled file will be eligible for removal from the system by the Delete Expired Spooled Files (DLTEXPSPLF) command. The actual expiration date applied to the spooled file is calculated by adding the number of days specified to the date this command is executed.
The DLTEXPSPLF command has been added to V5R4. It will evaluate the spool files on the system and delete them when they have expired.
The following command can be used to create a job schedule entry which causes the DLTEXPSPLF command to delete all expired spooled files on your system every day:
ADDJOBSCDE JOB(DLTEXPSPLF) CMD(DLTEXPSPLF ASPDEV(*ALL)) FRQ(*WEEKLY) SCDDATE(*NONE) SCDDAY(*ALL) SCDTIME(010000) JOBQ(QSYS/QSYSNOMAX) TEXT('DELETE EXPIRED SPOOLED FILES SCHEDULE ENTRY')
It took 30 years, but IBM finally has the System Administrator in a good way to manage system spool files. Good job IBM!
[TABLE]
The preferred way is to do this by library. The steps for setting this up are quite easy, too. Here is how I do it on my system. (Note: I do this process for each individual application library I want to start journaling on):
1. Create a message queue to receive journal messages:
CRTMSGQ MSGQ(QGPL/Jrn_Name)
TEXT('Journal Messages')
2. Create a journal receiver (Tip: Put receivers in a different library)
CRTJRNRCV JRNRCV(JrnRcvLib/App1JR0001)
THRESHOLD(1000000)
3. Create a journal referencing the receiver just created:
4. Start journaling for all files in the library (Note: STRJRNLIB is a TAATOOL. If you don't have TAATOOLS on your system then you will have to start journaling manually using the appropriate system commands –
You might notice that in step four I also specified DLTRCV(*NO) ... This is because I prefer to delete journal receivers after I have saved them to tape. I don't want the system to automatically delete them for me.
Journaling your production object is a good way to enhance your ability to recover in the event of an outage. However, if you lose the system and you haven't saved your receivers to tape, you're out of luck. Save your receivers to tape often and move these tapes off site along with your regular backup tapes. Even better yet, use "remote journaling" to replicate your journal receivers to another system, in real time. (That's a whole topic I won't go into right now though.)
Another advantage to journaling data is that you have a detailed audit record of everything that has happened to your production data. This can be an invaluable resource to tap when you are trying to figure out "what happened" when something goes wrong.
The performance penalty for journaling has been decreasing significantly with just about every new release of OS/400. In today's environments, with faster disk drives and processors, I'd venture to say you wouldn't even be able to notice that you have turned on journaling.
I personally have created a separate ASP (Auxiliary Storage Pool) for my production journal receivers, too. This moves the disk IO associated with journaling to a separate set of disk arms. It also provides additional protection of your data. For example, if you were unfortunate enough to lose two disk drives in a RAID set that contained your production data your would have to recover this data from tape. If your receivers are in a separate ASP, then after restoring your data, you could apply the journaled transactions thereby fully recovering your production application data to the point of failure.
You ask, "How much disk space will this take?" ... It all depends on how "active" your data is. If you have 2,500 changes a day to a journaled set of objects, very little disk space is required. If you have 25,000.000 changes a day (like we do), you could eat up 60-100GB of disk space every few days! You do have control over how much disk space is used, though. Back up your receivers to tape often, and then remove them from disk using the DLRJRNRCV command.
[TABLE]
A while back I was asked the following question:
"We're implementing BRMS on one of our machines. We have 31 tapes pre-assigned for 3583. We use a tape library and the required volumes will be loaded into the library on a daily basis. How can we force BRMS to write specific data, to a specific tape, on a specific day, for incremental backups?"
I thought, "What a perfect time to describe how BRMS manages tapes!" I suggested that this system administrator consider this...
Instead of trying to "force" BRMS to work with your old BU tape control process, let BRMS work as it is designed. Let BRMS decide where to place data on your backup tapes. All you have to do then is assign unique volume serial numbers to each tape and make sure "scratched" tapes are mounted on your tape drive prior to running a backup.
Having BRMS manage your tape media and the placement of data on each volume, is just like allowing OS/400 to manage your disk drives and the placement of data on them. It doesn't mater where the data is put, as long as you can easily find it when you need it. Would you ever consider trying to force data stored on disk to a particular disk drive? Absolutely not! The system can do it much more efficiently that you ever could. The same idea applies when using tape storage and BRMS.
You don't need to worry about mounting certain tapes for certain days or placing certain kinds of data on specific tapes. BRMS will remember where everything is for you.
Let BRMS schedule moving backups data offsite, too.
Once you set up the BRMS policies to accomplish all of this, your backups will run themselves -- it is really slick when it is all set up.
[TABLE]
This great question came my way last year. It provided me the opportunity to explain a rather hidden 'feature' of BRMS.
"I am using BRMS to do a *SAVSYS, but it takes to long so I kill it. I use the BRMS Console. If I use a standard SAVSYS from a straight forward save, it only takes about 10 minutes max. After I kill the BRMS save, I check the tape and all the saves are on there. What's going on?
There is some additional overhead associated with a BRMS save, however, the only scenario I can think of that would add a lot of time to your SAVSYS would be if you have a system with multiple Auxiliary Storage Pools. In this kind of configuration, BRMS has a default option to save authority for every object in each user ASP. If you have a lot of ASP's, with a lot of objects, this can take considerable time. There is a way around this though. You can tell BRMS NOT to save authority data for users ASP's.
From your main BRMS menu enter:
GO BRMBKUPCY
From the Backup Policy Menu, take Option 2. Work with items to omit from
backup.
Add the following entries to omit saving user ASP authority from a SAVSYS or
SAVSECDTA save:
Type Backup item
*SAVSYS *USRASPAUT
*SECDTA *USRASPAUT
Your backup should run much faster now!
[TABLE]
There is a great toolset available for purchase called TAATOOL. It contains a command called CHKSAV that will check to see if you have saved all the libraries on your system! If you aren't able to acquire this set of tools, you could create something that might suffice using the DSPOBJD command to display information for all the libraries on your system to an OUTFILE and then query this file for "SAVE Date / SAVE Time / SAVE Command" etc...
Example: DSPOBJD OBJ(QSYS/*ALL) OBJTYPE(*LIB) OUTPUT(*OUTFILE) OUTFILE(QTEMP/XX)
runqry *none xx
You will then see all the information available to you. You will probably want to select the following fields for a report:
Your auditors will then be able to see when each library on your system was saved, which SAV command was used and what tape volume this library was saved to. Of course, my favorite backup/recovery product IBM's BRMS, provides a set of comprehensive reports that show what is saved but more importantly what hasn't been saved on your system. Along with these reports is the system recovery report that provides step-by-step instructions on how to completely recover your system in the event of a catastrophic disaster.
[TABLE]
As with most special user authorities, the *SAVSYS special authority grants a significant level of additional capability to a user and you should think twice about granting it to anyone.
Any user of the iSeries has the necessary rights to use the OS/400 SAV* commands. Therefore, they can save any objects they have sufficient authority too. Sufficient authority in this case would be having *OBJEXIST rights to the object. Object existence rights provide authority to control the object's existence and ownership.
By default, users have *OBJEXIST rights to all the objects they own. Therefore, they can save any of their own data. They don't have the authority to restore anything though because access to the RST* commands are *PUBLIC *EXCLUDE by default.
The *SAVSYS special authority gives a user the additional ability to save objects they don't have *OBJEXIST rights to.
One very important implication of this is the fact that when an object is saved, you can also specify that it's storage be freed.
IBM's definition of this feature is: "Freeing storage during a save means that the storage occupied by the data portion of the specified objects being saved is freed as part of the save operation."
In affect, you can remove from the system everything but the header of an object saved in this manner.
Therefore someone with *SAVSYS authority could do the following:
1. Save any object on the system to a save file specifying that its storage be freed.
2. Delete the save file.
Wow! ... Anyone with *SAVSYS authority has the ability to delete any object from the system.
Do you really want anyone other than an operator or system administrator to have this kind of authority on your system?
[TABLE]
Restore things in this order:
Note: If all objects are in the same library, they will automatically be restored in the correct order.
1. Journals
2. Based-on physical files
3. Other journaled objects associated with those journals (*DTAARA's and stream files)
4. Dependent logical files
5. Journal receivers
Note: Journal receivers can be restored at any time after the journals. They do
not have to be restored after the journaled objects.
This information is available with additional details, in this IBM manual:
iSeries
Backup and Recovery
Version 5
SC41-5304
The "bible" of save/restore for the iSeries system!