Job has finished, status = 96 (Crashed)

Post questions here relative to DataStage Server Edition for such areas as Server job design, DS Basic, Routines, Job Sequences, etc.

Moderators: chulett, rschirm, roy

Post Reply
arunverma
Participant
Posts: 90
Joined: Tue Apr 20, 2004 8:20 am
Location: MUMBAI
Contact:

Job has finished, status = 96 (Crashed)

Post 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
Arun Verma
rleishman
Premium Member
Premium Member
Posts: 252
Joined: Mon Sep 19, 2005 10:28 pm
Location: Melbourne, Australia
Contact:

Post 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.
Ross Leishman
arunverma
Participant
Posts: 90
Joined: Tue Apr 20, 2004 8:20 am
Location: MUMBAI
Contact:

Post 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
Arun Verma
rleishman
Premium Member
Premium Member
Posts: 252
Joined: Mon Sep 19, 2005 10:28 pm
Location: Melbourne, Australia
Contact:

Post 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.
Ross Leishman
Post Reply