Restartability when more that one link goes to Oracle Stage

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
moose2079
Premium Member
Premium Member
Posts: 48
Joined: Tue Mar 07, 2006 4:52 pm
Location: Australia

Restartability when more that one link goes to Oracle Stage

Post by moose2079 »

Hi there,
I am supporting a migration project using an Oracle Database. The approach being take for restartability has been to use Link Collector to push multiple links into one link - push that one link into a transform and the transform receiving one link will then split them into multiple links and push them into an Oracle stage. The reason / assumption was that multiple links comming from the one Transform will guarantee all links would be rolled back by Oracle if any one of the links failed. The problem is that testing has shown that this is true ONLY if the first link(top most link) into the Oracle stage fails - if the second of third link fails then only that link is rolled back. The question I want answered is how to guarantee all links are rolled back if any one of the links fails? Is there a way of forcing the Oracle stage to rollback all links coming into it if anyone of the links fails?
YUM
chulett
Charter Member
Charter Member
Posts: 43085
Joined: Tue Nov 12, 2002 4:34 pm
Location: Denver, CO

Re: Restartability when more that one link goes to Oracle St

Post by chulett »

moose2079 wrote:The problem is that testing has shown that this is true ONLY if the first link(top most link) into the Oracle stage fails - if the second of third link fails then only that link is rolled back.
:? Are you using Transaction Grouping? That is the only thing I can think of that may cause the behaviour you think you are seeing. Otherwise the number or order of links isn't really an issue.

The way to get a rollback is for the job to Abort. When it does, all uncomitted work (regardless of link number) will rollback. This is typically ensured by using a Transaction Size of zero for all links. If you use a mixture of transactions sizes, then you'll end up with a corresponding mixture of committed versus 'rolled back' work when the job aborts. I find the 'all or nothing' approach of using a zero transaction size to be the best approach and use it whenever possible as it greatly simplifies restarts after an error.
-craig

"You can never have too many knives" -- Logan Nine Fingers
Post Reply