Hallo José,
Über dba_rollback_segs schriebt der liebe Mann:
That view’s STATUS field […] lacks the PENDING OFFLINE and FULL statuses, showing them as OFFLINE and ONLINE respectively.
Zumindest das PENDING OFFLINE/ONLINE Szenario ist relativ leicht nachzuvollziehen: Man nehme eine Instance, führe irgendein Statement aus, das auch wirklich Daten verändert (nicht committen oder rollbacken! [
select r.name RB_SEGMENT,
rs.status STATUS,
nvl(s.username, ‚NO TRANS‘) DB_USER,
s.osuser OS_USER,
s.terminal TERMINAL,
trunc(d.bytes/1024)||’ K’ SIZE_K,
trunc(DECODE(sign((d.max_extents-d.extents)*d.next_extent-sum(f.bytes)),1,sum(f.bytes),(d.max_extents-d.extents)*d.next_extent)/1024)||’ K’ AVAILABLE_SPACE
from v$lock l, v$session s, v$rollname r, v$rollstat rs, dba_segments d, dba_free_space f
where l.sid=s.sid(+)
and trunc(l.id1/65536) = r.usn
and l.type = ‚TX‘
and l.lmode = 6
and d.segment_name = r.name
and d.segment_type=‚ROLLBACK‘
and f.tablespace_name=d.tablespace_name
and rs.usn=r.usn
group by
r.name, rs.status, s.username, s.osuser, s.terminal, d.bytes, d.max_extents, d.extents, d.next_extent
order by
r.name;
setze dieses Statement mittels
alter rollback segment [NAME] offline;
auf offline (aus einer anderen Session, DDL statement!) und prüfe dann den Unterschied noch einmal.
Mit FULL wird’s allerdings etwas schwieriger, da finde ich auch kaum was in der Oracle-Doku dazu. Allerdings, wer Metalink Zugang hat, der möge sich Doc 257223.995 an, da versucht sich Oracle diesbezüglich rauszuwinden
Gruß,
TheBeast
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]