View a markdown version of this page

Reduzir tablespaces no RDS para Oracle - Amazon Relational Database Service

Reduzir tablespaces no RDS para Oracle

A partir do Oracle Database 26ai (26.0.0.0), o Amazon RDS para Oracle é compatível com a redução de tablespaces por meio do procedimento rdsadmin.rdsadmin_util.shrink_tablespace. Use esse procedimento para recuperar espaço não utilizado em um tablespace reduzindo seus arquivos de dados. A redução diminui o consumo de armazenamento sem migração de dados nem recriação do tablespace.

Visão geral

Com o tempo, os tablespaces em um banco de dados Oracle podem acumular espaço não utilizado devido à exclusão ou reorganização de dados. O procedimento rdsadmin.rdsadmin_util.shrink_tablespace encapsula a funcionalidade DBMS_SPACE.SHRINK_TABLESPACE do Oracle e gerencia para você os privilégios internos necessários.

A redução de tablespaces é compatível com os seguintes modos:

  • Modo de análise (DBMS_SPACE.TS_MODE_ANALYZE): avalia o tablespace e informa quanto espaço pode ser recuperado, sem realizar alterações.

  • Modo de redução (DBMS_SPACE.TS_MODE_SHRINK): move objetos e redimensiona os arquivos de dados do tablespace para recuperar o espaço não utilizado. Esse é o modo padrão.

Requisitos

Para usar a redução de tablespaces, sua instância de banco de dados deve atender aos seguintes requisitos:

  • Oracle Database 26ai ou superior

  • Oracle Enterprise Edition

Sintaxe

EXEC rdsadmin.rdsadmin_util.shrink_tablespace( p_tablespace_name => 'tablespace_name', p_shrink_mode => mode, p_target_size => target_bytes);

Parâmetros

shrink_tablespace parameters
Nome do parâmetro Tipo de dados Padrão Obrigatório Descrição

p_tablespace_name

VARCHAR2

Sim

O nome do tablespace a ser reduzido.

p_shrink_mode

NUMBER

2 (TS_MODE_SHRINK)

Não

O modo de redução. Use DBMS_SPACE.TS_MODE_ANALYZE (1) para apenas analisar ou DBMS_SPACE.TS_MODE_SHRINK (2) para executar a redução.

p_target_size

NUMBER

0

Não

O tamanho de destino, em bytes. Use 0 (o padrão) para reduzir ao menor tamanho possível. Especifique um valor positivo para reduzir até um tamanho de destino específico.

Exemplos

Analisar um tablespace para verificar o espaço recuperável

Para analisar um tablespace sem realizar alterações, execute o comando a seguir:

EXEC rdsadmin.rdsadmin_util.shrink_tablespace('USERS', DBMS_SPACE.TS_MODE_ANALYZE);

A seguir está um exemplo de saída:

-------------------ANALYZE RESULT-------------------
Total Movable Objects: 0
Total Movable Size(GB): 0
Original Datafile Size(GB): .1
Suggested Target Size(GB): .06
Process Time: +00 00:00:00.021513

Reduzir um tablespace ao tamanho mínimo

Para reduzir um tablespace e recuperar todo o espaço não utilizado, execute o comando a seguir:

EXEC rdsadmin.rdsadmin_util.shrink_tablespace('USERS');

A seguir está um exemplo de saída:

-------------------SHRINK RESULT-------------------
Total Moved Objects: 0
Total Moved Size(GB): 0
Original Datafile Size(GB): .1
New Datafile Size(GB): .05
Process Time: +00 00:00:00.281151

Reduzir um tablespace para um tamanho de destino específico

Para reduzir um tablespace para um tamanho de destino em bytes, especifique o parâmetro p_target_size. Se o tamanho de destino for menor que o menor tamanho possível, o Oracle o ajustará automaticamente para um valor maior:

EXEC rdsadmin.rdsadmin_util.shrink_tablespace('USERS', DBMS_SPACE.TS_MODE_SHRINK, 52428800);

Considerações

Considere o seguinte ao reduzir um tablespace:

  • A redução de tablespaces é uma operação online. Os objetos no tablespace permanecem acessíveis durante a redução.

  • A operação de redução pode mover objetos, como tabelas e índices, dentro do tablespace para consolidar o espaço livre antes de redimensionar os arquivos de dados.

  • Os índices permanecem válidos após a operação de redução, e a integridade dos dados é preservada.

  • Se o valor de p_target_size for menor que o espaço atualmente ocupado pelos objetos, o Oracle ajustará automaticamente o tamanho de destino para o menor tamanho possível.

  • O valor de p_target_size não deve exceder o tamanho atual do tablespace. Especifique um tamanho de destino menor ou igual ao tamanho atual.

  • Transações ativas em objetos do tablespace podem impedir que a operação recupere todo o espaço disponível. Para obter melhores resultados, execute a redução durante um período de baixa atividade.

  • Não há suporte para chamar DBMS_SPACE.SHRINK_TABLESPACE diretamente sem o wrapper rdsadmin_util. Sempre use o wrapper rdsadmin.rdsadmin_util.shrink_tablespace.

Recursos relacionados