ora-1555 error with oracle enterprise stage

Post questions here relative to DataStage Enterprise/PX Edition for such areas as Parallel job design, Parallel datasets, BuildOps, Wrappers, etc.

Moderators: chulett, rschirm, roy

Post Reply
kirankota79
Premium Member
Premium Member
Posts: 315
Joined: Tue Oct 31, 2006 3:38 pm

ora-1555 error with oracle enterprise stage

Post by kirankota79 »

Ho can i can overcome the ora-155 error while updating the database. should i reduce the number of rows to be comitted after the update? please help. Is it possible to do from datastage side, or it should be done on the database level?

thanks in advance
csrazdan
Participant
Posts: 127
Joined: Wed May 12, 2004 6:03 pm
Location: Chicago IL

Post by csrazdan »

ORA-155 is snapshot too old error. You can either reduce the transaction size and increase the size of rollback segment.

On DataStage Side - Add an environment variable APT_ORAUPSERT_COMMIT_ROW_INTERVAL and set a value for this parameter. The default value is 5000

On Database side - Contact your DBA and ask him/her to increase the size of Rollback Segment. If you have multiple rollback segments I'm not sure if DataStage has an option of using the largest one. In good old PL/SQL days you could assign a rollback segment to transaction. You may have to do some research on this.

Hope it helps...
Assume everything I say or do is positive
kirankota79
Premium Member
Premium Member
Posts: 315
Joined: Tue Oct 31, 2006 3:38 pm

Post by kirankota79 »

the value is already set to 5000. will it be helpful if i set it to 1000.
csrazdan
Participant
Posts: 127
Joined: Wed May 12, 2004 6:03 pm
Location: Chicago IL

Post by csrazdan »

5000 is the default value. Since you have to reduce the transaction size 1000 should be a good number to try with. If job fails again try with even smaller number.
Assume everything I say or do is positive
kirankota79
Premium Member
Premium Member
Posts: 315
Joined: Tue Oct 31, 2006 3:38 pm

Post by kirankota79 »

at the database level the, for every 10000 rows it will make a commit and in datastage i set it to 5000. Which one it will consider?
csrazdan
Participant
Posts: 127
Joined: Wed May 12, 2004 6:03 pm
Location: Chicago IL

Post by csrazdan »

Whatever you set it in job that is what it will consider because commit command will be issued.
Assume everything I say or do is positive
kirankota79
Premium Member
Premium Member
Posts: 315
Joined: Tue Oct 31, 2006 3:38 pm

Post by kirankota79 »

i set the value of the row commit interval to just 100...even then iam getting the ora-1555 error. This problem was solved for the tables which has records of about 100,000, but iam getting this error when the table consists of the records more than 1 million. My dba told there is no way to increase the size of the rollback segement since they dont have the privilege to do it. what ever solution is i have to do from datastage side. plase suggest me a feasible solution for it.
chulett
Charter Member
Charter Member
Posts: 43085
Joined: Tue Nov 12, 2002 4:34 pm
Location: Denver, CO

Post by chulett »

kirankota79 wrote:My dba told there is no way to increase the size of the rollback segement since they dont have the privilege to do it.
What? Talk to whatever 'DBA' you've got that does have the privs. :?

Another option is to run your processes when the tables you are updating aren't quite so busy. A 'snapshot' error like that implies usage by others and Oracle doesn't have the resources it needs to hold a steady picture of the state of that data it needs over the course of your run. So you either need to increase the resources available or reduce their usage.

:idea: Found this article which might help. Unfortunately, the first linked article at the bottom no longer seems to exist and I couldn't find it elsewhere. The second is good reading and some of the advice can be put to use by you but most is geared to a DBA, or at least one with the privileges needed to actually make changes to the database.
-craig

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