Уменьшение Oracle Tablespace

Last modified by Nefedenkova Viktoria on 2021/08/18 16:31

Иногда диск переполняется из-за размеров USERS Tablespace, например, более 17Gb.

Tabsp.jpg

Ниже описываются шаги по уменьшению 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 '&lt;FullTableSpacePathWithName&gt;'resize &lt;NewSize&gt;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

Это означает, что выбранный новый размер слишком мал. Нужно увеличить желаемый размер TableSpace.

Можно использовать приведенное ниже выражение 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