Skip to Content
0
Former Member
Nov 06, 2014 at 09:25 PM

reorg rebuild failed

288 Views

I try to rebuild all index on a table say mytab like(my db is ASE 12.5):

reorg rebuild mytab

looks like most of indexes rebuild but at the end of the processing, then got following message:

90 REORG REBUILD of 'mytab' terminated due to error or user interrupt.

91 Number (1105) Severity (17) State (1) Server (MYSERVER) Can't allocate space for object 'mytab' in database 'mydb' because 'myseg' segment is full/has no free extents. If you ran out of space in syslogs, dump the transaction log. Otherwise, use ALTER DATABASE to increase the size of the segment.

then I check segment space with following sql:

select segment = s.name,

free_pgs = sum(

case u.segmap

when 4 then lct_admin("logsegment_freepages", db_id('mydb')) - lct_admin("reserved_for_rollbacks", db_id('mydb'))

else curunreservedpgs(u.dbid, u.lstart, u.unreservedpgs)

end),

free_M = sum(

case u.segmap

when 4 then lct_admin("logsegment_freepages", db_id('mydb')) - lct_admin("reserved_for_rollbacks", db_id('mydb'))

else curunreservedpgs(u.dbid, u.lstart, u.unreservedpgs)

end)*2/1024

from master..sysdevices d ,master..sysusages u ,mydb..syssegments s

where u.dbid = db_id('mydb')

and u.vstart between d.low and d.high and d.status & 2 = 2

and u.segmap & power(2,s.segment) != 0

group by s.name

and got following result (or sp_helpsegment):

segment free_pgs free_M 1 default 689849 1347 2 indexes 1197657 2339 4 logsegment 10199946 19921 6 myseg 1264323 2469 8 system 689849 1347

all segment have free space! data and pk of mytab is on myseg, all other indexes is on segment indexes.

3 devices has been assigned for myset. The free space of devices for myseg as below::

device free_pgs free_M 7 dev1 45631 89 8 dev2 664448 1297 9 dev3 554244 1082

Not sure why. how to figure it out and resolve it?