▲ 4 r/mainframe
NAT3009 Error (Last transaction backed out) on a 4.5-hour Adabas extraction batch job
Hi everyone,
I'm running into a persistent NAT3009 error (Last transaction backed out) in a Natural batch program running under z/OS.
(Note: I am quite new to this environment and English is not my native language, so I am using a translator to write this post. I appreciate your patience!)
Context of the Job:
• What it does: The program extracts data from an Adabas database and writes it into sequential Workfiles.
• Execution time: It runs for approximately 4.5 hours before failing.
What I've already tried:
- JCL Level: I suspected a z/OS timeout, so I tried setting MAXCL=0 because a Sr. Dev told me to try that, but the job still terminates with the same error after 4.5 hours.
- Code Level: I tried adding an END TRANSACTION (ET) logic inside the processing loop every 1,000 records, but the NAT3009 error still occurs.
The Issue:
Since neither MAXCL=0 nor the periodic ET solved the problem, I suspect this might be related to Adabas limits being exceeded before the program can even commit, or maybe a massive FIND statement is overloading the Hold Queue right at the start.
My Questions: - What Adabas/Natural parameters should I ask our DBA to check?
- Since this is a pure data extraction to Workfiles, what is the best practice to avoid opening a transaction logic at all? Is there a specific way to force a read-only mode that doesn't put records in the Hold Queue?
Any insights, troubleshooting tips, or best practices would be highly appreciated.
Thanks in advance for your help!
u/Middle_Design_316 — 3 days ago