TechTip: A Command That Is Not Used Enough: EDTRBDAP

DB2
Typography
  • Smaller Small Medium Big Bigger
  • Default Helvetica Segoe Georgia Times

More than once, I've gotten a call from a DB2 System i client complaining of slow database performance. Later in our conversation, the client will mention experiencing an abnormal system end sometime ago. We discover that several access paths were marked invalid after the crash and are still on the Edit Rebuild of Access Paths (EDTRBDAP) screen. No queries can use these access paths while they are marked invalid. The solution is to rebuild the access paths using the EDTRBDAP screen.

A DB2 fact is that all access paths currently in use during an abnormal system end are marked invalid and need to be completely rebuilt at a later time. Unbeknownst to most, the file parameter that specifies this later time defaults to after the IPL. (See DSPFD; search for RECOVER = *AFTIPL.) This does not mean the access path will be rebuilt while the box is coming up again on the IPL. This means that the access path will go to the EDTRBDAP screen and wait patiently for someone to rebuild it. The rebuild does not happen automatically.

You may ask, "Won't my access path be rebuilt when I first open the file?" Yes, this is true. However, since most applications do not directly query a logical file (nor should they), the logical file is never explicitly opened; thus, its access path is not rebuilt. The optimizer considering an index for use does not count as an explicit open. This can wreak havoc on your indexing strategy, as the indexes and keyed logical files remain invalid and unusable.
How to Use the EDTRBDAP Command
To check for any invalid access paths, simply type EDTRBDAP and hit Enter. The command has no parameters. Typing the command and hitting Enter will not start any work on the system. You will see a display screen of all the invalid access paths on the system. If all access paths on the system are valid, you will see "No Access Paths to Display." In some cases, several screens of access paths will be listed here. They have the sequence of *OPN, which means the access path will be rebuilt when the file is next opened.

Based on what you know about your data, you may decide some files are more important than others and need to have their access paths rebuilt first. Number 1 is the highest priority and 99 is the lowest priority. Enter the desired numeric value under Sequence, in place of where it currently says *OPN. You can assign a numeric value to just one file or several files at a time. When you push Enter, the rebuild will start on the files that have a number. You can also give all files the same number, which lets the system
start at the top of the list and rebuild to the bottom of the list. To do this, assign a number to one file and then push F13 (shift + F1) to assign that same number to all the files listed.

The system rebuilds access paths at a rate of two per processor. The jobs that rebuild access paths are QDBSRV04 and QDBSRVNN, where NN depends on the number of processors on the system. If you have Symmetric Multi Processing installed and if you have extra CPU you wish to give to access path rebuilds, you can use this command:
CHGQRYA JOB(123456/QSYS/QDBSRV04) DEGREE(*MAX)

Note that the above option is for use only when you want to give the highest priority to access path rebuild. Use DEGREE(*MAX) only if you have plenty of CPU to spare and want access path rebuild to take that CPU.
An Example Strategy for Rebuilding
Suppose you see 10 screens full of invalid access paths. You know that the files in library PRDDTA need to be rebuilt first. You would put any number—let's use 25—by all the files in library PRDDTA and then hit Enter. Use F5 to refresh and see the elapsed time of the access path rebuilds. Once an access path has finished rebuilding, it will disappear from the screen. Let's say you're not concerned about the order of the other rebuilds after the PRDDTA files have rebuilt, so you put 25 by the first access path, push F13 to assign all the others a 25, and then hit Enter. That's all you need to do; the system will rebuild the rest of the access paths in the order listed on the screen(s).

Even if your system has not suffered an abnormal end, it's beneficial to periodically check this screen to see if any access paths have been marked invalid for other reasons. When I sign on to a client's system, it is often the first screen I check for them.

Renee Mason is a Software Engineer who works in System i Database Global Support at IBM Rochester Support Center.

BLOG COMMENTS POWERED BY DISQUS