|
Who's the Scoundrel That Corrupted My Database?
Published: July 14, 2010
Dear Guru:
Yes, I'm talking to you. You who read this newsletter are gurus. Devoted and profoundly resourceful reader Sarah showed me a tip that I've got to share with you. Her technique makes it easy to find out who's doing what with the database.
Sometimes a user asks Sarah to determine who changed something in a file. The journal tells all. The problem is that journals are not easy to read. The data is stored in one big long field, called entry-specific data. However, Sarah has a way to break down the entry-specific data as it is defined in the database. Here's how it's done.
Assume that physical file CUSTOMERS is journaled into journal MYJRN. Create a file--let's call it JRNCUST--into which the journaled data will be copied. Here's the DDS for JRNCUST.
A R QJORDJE
A JOENTL 5S 0
A JOSEQN 10S 0
A JOCODE 1A
A JOENTT 2A
A JODATE 6A
A JOTIME 6S 0
A JOJOB 10A
A JOUSER 10A
A JONBR 6S 0
A JOPGM 10A
A JOOBJ 10A
A JOLIB 10A
A JOMBR 10A
A JOCTRR 10S 0
A JOFLAG 1A
A JOCCID 10S 0
A JOINCDAT 1A
A JOMINESD 1A
A JORES 6A
A COMPANYNO 3P 0
A CUSTOMERNO 5P 0
A CUSNAM 20A
A BILLSTREET 16A
A BILLCITY 12A
A BILLSTATE 2A
A BILLZIP 10A
A SHIPSTREET 16A
A SHIPCITY 12A
A SHIPSTATE 2A
A SHIPZIP 10A
A TYPE 1A
The first part of the file--everything from JOENTL to JORES--has the journaling information. The entry-specific data is replaced with the fields from the database file: COMPANYNO thru TYPE.
To load the file, use the Display Journal (DSPJRN) command.
DSPJRN JRN(MYLB/MYJRN)
FILE((MYLB/CUSTOMERS))
ENTTYP(PT DL UB UP)
OUTPUT(*OUTFILE)
OUTFILFMT(*TYPE1)
OUTFILE(MYLB/JRNCUST)
Voilą! Use your favorite query tools to view the data in human-readable format.
--Ted
Post this story to del.icio.us
Post this story to Digg
Post this story to Slashdot
|