În versiunea 8i a bazei de date, după efectuarea diferitelor tipuri de operații DML pe fișierul de date al obiectelor
datele devin mari, nu există spațiu suficient pe hard disk.
Prin urmare, există o dorință de ao reduce.
De exemplu, în acest fel:
alter baza de date datafile '/ oracle / oradata / kaztes /users01.dbf' resize 1000M
Oracle generează o eroare:
ORA-03297. fișierul conține datele utilizate dincolo de valoarea RESIZE cerută
În Consola Enterprise Manager, Oracle afișează acest fișier de date,
dba_free_space arată asta
locurile din acest dosar sunt foarte suficiente. Este posibil să privim cu certitudine asta
este în partea de sus a dosarului în acest fel:
selectați nume_fișier, nume_segment, tip_segment, proprietar din dba_extents s,
(selectați max (block_id) maxblock, file_id din grupul dba_extents by file_id) b,
dba_data_files f unde
s.block_id = b.maxblock și s.file_id = b.file_id și f.file_id = s.file_id
ordonați după numele fișierului
-- Мной Găsit pe Internet.
Acest script afișează obiectele care ocupă ultimele dimensiuni ale fișierului.
Acum întrebarea este ce să facem cu ei. Este logic să le transferăm undeva în altul
plasați și încercați din nou să reduceți dimensiunea datei fișierului. Aceasta este, dacă este un index,
atunci trebuie să-l reconstrui într-un alt spațiu tabel într-un alt fișier de date, de exemplu?
Există pachete Oracle care eliberează blocurile libere și ele însele
rearanjați-le din nou, în fișierul de date curent, operațiunea minieră a obiectelor în mișcare către o altă locație?
P.S. Problema este relevantă și pentru versiunea Oracle 9i. Dacă există unele evoluții, aștept un răspuns.