Timeout Problem
433457Mar 3 2005 — edited Mar 3 2005I'm running into some kind of time out during a C program which use OCI.
My version Info is as follows:
OS - IBM z/OS: 1.3
DB - Oracle Client: 9.2.0.4.21
Language - C (using OCI libraries)
The errror message I'm receiving is...
15.26.51 JOB08696 BPXP013I THREAD 10C5190000000000, IN PROCESS 83886443, WAS 990
990 TERMINATED BY SIGNAL SIGXCPU, DUE TO CPU TIME OUT.
15.26.51 JOB08696 IEF450I C1DF01DQ DQBUSAGE - ABEND=SEC6 U0000 REASON=0000FD1D 991
991 TIME=15.26.51
The QuickRef explanation of SEC6 is as follows:
An error occurred during processing of a callable service to z/OS UNIX System Services (z/OS UNIX). The callable service may have been originally issued as a function in a program or as a shell command.
FDxx Terminating signal with dump.
(The reason code is FD1D, which is in hex. I found this equate for the 0x1D (decimal 29) in one of the z/OS Unix manuals: SIGXCPU# EQU 29 CPU time limit exceeded)
I didn't want to include my full program here, because only the first part really deals with Oracle. I'm basically connecting to oracle, performing some SELECTs and writing the results to a file. After all results are retrieved I disconnect from Oracle and continue with the main processing that needs to be done. For short runs I have no problems, everything runs fine, but for longer runs (and it generally seems to be after about 3 hours) I get a time out error message. The weird part (at least to me anyway) is that this happens after all of the Oracle calls have been processed and I've disconnected?!? The portion of the code that deals with Oracle (connect, select, write results, disconnect) executes very quickly and is a very small portion of the overall execution time (i.e. the processing I'm doing with the results from Oracle is the bulk of the execution time). Why after disconnecting am I still timing out?
Here is a brief overview of what my program does. (if you interested in the full source let me know). I'm checking all return codes from the OCI function calls as well, but left that out of this overview...
Begin Program
Initialize using OCIEnvCreate()
Allocate Error Handle
Connect using OCILogon()
Loop to perform x Number of SELECTs
Allocate Statement handle
Call OCIStmtPrepare
Perform a series of Binds/Defines
Call OCIStmtExecute()
Call OCIStmtFetch2()
Writes results to a file (continuing to call OCIStmtFetch2() until no more data)
Free Statement handle
End Loop
Call OCILogoff
Free Error Handle
Free Environment Handle
Loop to process x Number of results files
...
End Loop
End Program