sanjayroongta
3rd April 2003, 12:36
we have around 20 rollback segments with 100 mb each but still in some reports we are getting error ora-2555.
Is it possible to assign particular session in particular rollback segment so that we can make that segment private with large space.
Sanjay
MarioS
3rd April 2003, 12:51
Hello Sanjay,
I had problems with error 2555 in some sessions allthough the RBS was 4G and more in size.
What solved the problem was, to reconfigure the RBS in that way, that the critical transaction could be handeled in the space of MIN_EXTENTS. Even though the MAXEXTENTS-Parameter was set to unlimited, Baan (or Oracle, I couldn´t figure out who was responsible for that) didn´t use the the possible available space .
Maybe that would be worth a try for you.
Bye,
Mario#
patvdv
3rd April 2003, 13:00
Have a look at this thread: http://www.baanboard.com/baanboard/showthread.php?s=&threadid=7622
Dikkie Dik
4th April 2003, 10:09
Some suggestions:
- make segments small e.g. 5 Mb and take care that optimal is set to the same value. So when having a large transaction that rollback segment can grow much more than upto 100Mb (assuming 2 Gb of rollback and 20 rollback segments).
- If the point above is not enough, it is advised to check why this error occured. In most situations it can be prevented in the application by:
* specifying "AS PREPARED SET" when selecting table(s) that will not be updated
* Restart the main query after e.g. 10.000 rows on a logical point. Example:
completed = false
repeat
db.retry.point()
counter = 0
select *
from <table> for update
|* Read from previous point onwards
where table._index1 > {:hold.field1}
|* Sort by on index to prevent problems
order by table._index1 with retry repeat last row
|* Speed up transfer of data
hint use array fetching
and buffer 100 rows
and array size 100
selectdo
update.other.tables()
|* Commit once a 50 rows
counter = counter + 1
if counter\50 = 0 then
commit.transaction()
|* When query is open longer than 10.000
|* records, than restart query
if counter > 10000 then
|* Set all index 1 fields
hold.field1 = table.field1
break
endif
endif
selectempty
completed = true
selecteos
commit.transaction()
completed = true
endselect
|* Only complete when complete flag has been set
until completed
Hopefully Baan support can help you to change the code when you are real sure that the problem can not be solved in the database anymore.
Hope this helps,
Dick
sanjayroongta
5th April 2003, 07:44
Thanks to all for your support.
rgds
Sanjay