Page 1 of 1

Job has finished, status = 96 (Crashed)

Posted: Sun Sep 25, 2005 11:30 pm
by arunverma
We have one job sequencer ( say J0Ppl ) which is calling another job ( Say J1PplLor ) , in this job ( J1PplLor) , we are calling sqlldr command from after job subroutine with direct=true , it load data into Oracle Table , today we found that data loaded to Oracle table but job still showin " Running " status . and Job sequencer showing Fininsd with error log " Job J1PplLor has finished, status = 96 (Crashed) " .

Pl help me what is this error - status = 96 (Crashed) and what should we do ?? .


Regards

Arun Verma

Posted: Mon Sep 26, 2005 12:28 am
by rleishman
Arun,

For a job to finish successfully, the After-Job Subroutine must finish with a 0 error code (2nd arg of the routine).

Make sure you have ErrorCode = 0, and are not inadvertently setting ErrorCode to something else. Even if this were the case, I suspect the problem goes deeper because DS should just raise a warning the subroutine finished with non-0 status.

When you call sqlldr from the subroutine, are you capturing the standard output and the sqlldr log file? If not, capture the stdout from the Unix call and add it to the DS log with DSLogInfo(), and specify the log=filename to sqlldr. Do they show any errors?

The target sequential file is not a named pipe is it? That would be a problem.

Posted: Mon Sep 26, 2005 3:35 am
by arunverma
Hi ,

we have used Call DSLogInfo("","") in Job control on Job and also giving proper parameter for log file control file etc .

EX :-


/u02/app/oracle/client/bin/sqlldr userid=testuser/testuser@dev control=/u05/PRODDSS/data3/srcfiles/bla/process/S_BLA_CUST_MG4_NEW_LOAD.ctl data=/u05/PRODDSS/data3/srcfiles/bla/process/S_BLA_CUST_MG4_NEW_LOAD.dat log=/u05/PRODDSS/data3/srcfiles/bla/process/S_BLA_CUST_MG4_NEW_LOAD.log bad=/u05/PRODDSS/data3/srcfiles/bla/process/S_BLA_CUST_MG4_NEW_LOAD.bad direct=true errors=50



Regards

Arun

Posted: Mon Sep 26, 2005 4:55 pm
by rleishman
OK. So you have the log file and the STDOUT, so I am assuming that you have checked them both and found:
- sqlldr finished successfully without error
- ALL rows were successfully loaded into the database

Sounds like something a bit more sinister is going on.

Depending on the flavour of Unix you are using, once sqlldr has started the death of the DS job would not affect it. Strangely, it seems that the Job crashed/was killed, but the Job Sequence completed. This rules out someone shutting down the DS Server, but it still could have been killed with a kill -9. Can you rule this out?

I see two possibilities:
- The DS Job was killed/crashed whilst sqlldr was running.
- sqlldr ran to completion, returned, and then something nasty in the remainder of the after-job-subroutine caused it to self-destruct.

You can rule out the second one by re-running with a smaller data set. Can you push 100 rows through and see what happens? If it still crashes then there's a problem with the subroutine; you can post it here and someone will probably be able to help.

If this is a production job and you can guarantee that the code hasn't changed since it has previously run successfully, then it seems likely that the first option has happened. Make like a programmer: run it again and blame the system administrator.