u/Middle_Design_316

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:

  1. 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.
  2. 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:
  3. What Adabas/Natural parameters should I ask our DBA to check?
  4. 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!
reddit.com
u/Middle_Design_316 — 3 days ago