Уменьшение Oracle Tablespace
Last modified by Nefedenkova Viktoria on 2021/08/18 16:31
Иногда диск переполняется из-за размеров USERS Tablespace, например, более 17Gb.

Ниже описываются шаги по уменьшению Oracle Tablespace:
1. PURGE TABLESPACE; (удалить USERS Tablespace)
Например:
purge tablespace USERS;
или
purge tablespace TBSUN4_IND;
2. ALTER TABLESPACE <TableSpace> COALESCE; (Объединение смежных свободных экстентов)
alter tablespace USERS coalesce;
или
alter tablespace TBSUN4_IND coalesce;
3. Изменить размер TableSpace:
alter database datafile '<FullTableSpacePathWithName>'resize <NewSize>M;
alter database datafile 'C:ORACLEPRODUCT10.1.0ORADATAORA10GUSERS01.DBF'resize 10000M;
или
alter database datafile 'C:\ORACLEXE\ORADATA.UN4\TBS_SUN4IND.OBF' resize 115M;
Ошибки, которые могут повстречаться:
ORA-03297: file contains used data beyond requested RESIZE value
Это означает, что выбранный новый размер слишком мал. Нужно увеличить желаемый размер.
Можно использовать приведенное ниже выражение SQL, чтобы увидеть максимальные значение для табличных пространств:
select a.tablespace_name, a.file_name,(b.maximum+c.blocks-1)*d.db_block_size highwater
from dba_data_files a,(select file_id,max(block_id)
maximum from dba_extents group by file_id) b ,dba_extents c ,
(select value db_block_size from v$parameter
where name='db_block_size') d
where a.file_id = b.file_id
and c.file_id = b.file_id
and c.block_id = b.maximum
order by a.tablespace_name,a.file_name