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
| Nome do parâmetro | Tipo de dados | Padrão | Obrigatório | Descrição |
|---|---|---|---|---|
|
|
|
— |
Sim |
O nome do tablespace a ser reduzido. |
|
|
|
|
Não |
O modo de redução. Use |
|
|
|
|
Não |
O tamanho de destino, em bytes. Use |
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_sizefor 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_sizenã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_TABLESPACEdiretamente sem o wrapperrdsadmin_util. Sempre use o wrapperrdsadmin.rdsadmin_util.shrink_tablespace.
Recursos relacionados
-
DBMS_SPACE.SHRINK_TABLESPACE
na documentação do Oracle Database -
Para obter mais informações, consulte Realização de tarefas comuns de banco de dados para instâncias de banco de dados.