GAURAVGUPTA9
25th July 2002, 08:15
hi all
in a processing we are getting a error
error 2555 bdb (bdb_errno 2555) on select
cannot continue in tdinv9200mggg()
Wot is this problem? and how to solve it?
can anybody help us in resolving this problem?
thanx in advance
ragds
Gaurav
NPRao
25th July 2002, 08:45
Hi Gaurav,
Here is more information for your reference, which might help you out in fixing your problem.
database error 1555 (error 2555)
2002-02-28[15:07:46(UTC+08:00)]:E:bsp200: ORA-01555: snapshot too old: rollback segment number 6 with name "RBS_SYSTEM" too small
01555, 00000, "snapshot too old: rollback segment number %s with name \"%s\" too small"
// *Cause: rollback records needed by a reader for consistent read are
// overwritten by other writers
// *Action: Use larger rollback segments
This implies to many record have been selected for update. It is a combination of coding and DBA. Please validate that you are selecting only a modest number of rows for update and not most of a table. Rollback errors are most often bad coding not size issues. Increasing rollback size should be a last resort unless it is obviously too small. Long-term performance, recovery and maintenance issues result from inappropriately large rollbacks.
Some more information about that error...
http://www.fors.com/orasupp/rdbms/dba/10630_1.HTM
http://www.ixora.com.au/tips/admin/ora-1555.htm
Djie-En
25th July 2002, 09:06
Hi,
Is it possible to do a smaller selection when you run the session?
If so, that will help sometimes.
GN
GAURAVGUPTA9
30th July 2002, 08:11
But how can i solve this problem.
how can i increase the rollback segment or how can i sove it through programming
NPRao
30th July 2002, 08:25
The cure is to use the as prepared set clause in your Baan select statement for selects that return a "large" number of rows. The error will not always happen on a particular select, it depends on what else is happening in the database too.
I am not a Oracle-DBA, so I will post if I can find more info.
PBforBaan
30th July 2002, 09:27
Hi,
one way could be to decrease the number of comitted transactions(the success depends on the traffic at your database)
another way coult be to increase your rollback-segments by using something like the oracle-storagemanager (ask your dba)
the third way could be a special solution, where you create an extreme large rbs (10 or 20 times of normal size) especially for mass-comitts. in this case you take the large rbs online and set all other rbs offline - only for the time your program runs. you only should do so while no one works on the system to prevent aborting because now all transactions will use the same rbs. (ask your dba)
is there a dba you can ask ?
PB
Djie-En
30th July 2002, 09:51
Hi,
As NPRao already mentioned, the prgram should be reprogrammed. That is nicer.
But to solve the problem now:
If you have (e.g.) a RBS tablespace of 5 Gb. with 8 RollBack segments of about 500 Mb. you may delete 4 segments and change 1 (one) segment into 3 Gb. The other segments of 500 Mb., you should take them offline. (Only the 3Gb is online)
Then run your session, and after that make the 3 Gb. segment smaller into 500 Mb. and create some more and put them online.
Succes.
GN