Informações do Ambiente: oracle 9i
* Versão do Oracle: 9i
* Sistema Operacional:solaris 10 (UNIX)
Senhores,
Estou deletando dados de uma tabela que é muito grande, e com isso, acaba o espaço na tablespace undo. Ela está limpando mas demora de uma dia para o outro praticamente. Gostaria de saber como posso forçar a limpeza dessa tablespace undo.
Fico no aguardo
tablespace undo cheia
-
- Moderador
- Mensagens: 1177
- Registrado em: Qui, 15 Out 2009 10:28 am
- Localização: Recife
a undo não precisa limpar, conforme o parametro undo_retetion se esta configurado ela vai eliminando,
o que você pode fazer é, se você estiver limpando a tabela inteira, sem especificar clausula WHERE, é trocar a instrucao para TRUNCATE TABLE, o qual não irá gerar undo.
veja a possibilidade de por a tabela em nologging.
o que você pode fazer é, se você estiver limpando a tabela inteira, sem especificar clausula WHERE, é trocar a instrucao para TRUNCATE TABLE, o qual não irá gerar undo.
TRUNCATE TABLE SUATABELA;
-
- Rank: Programador Sênior
- Mensagens: 48
- Registrado em: Qui, 17 Set 2009 3:47 pm
- Localização: rio de janeiro
bem o comando que estou usando é o seguinte:
pOSSO usar o TRUNCATE?
No Aguardo.
delete EMAIL_MESSAGES WHERE EXISTS (SELECT ID FROM EMAIL_MESSAGES_OLD) AND ROWNUM <= 1000000 and create_date <= '31/12/2009 23:59;59';
commit;
No Aguardo.
-
- Moderador
- Mensagens: 1177
- Registrado em: Qui, 15 Out 2009 10:28 am
- Localização: Recife
Não dá, poderia fazer um loop na tabela, e então ir excluindo de 10 mil em 10 mil, porque ai você iria comitando de 10 mil em 10 mil, assim seu undo não crescera forá do controle, isso se a garantia de retencao da sua tablespace de undo estiver desabilitada,
caso você esteja na politica de retencao de undo, diminua o tempo para o undo retetion, padrão 900 segundos, 15 minutos,
caso você esteja na politica de retencao de undo, diminua o tempo para o undo retetion, padrão 900 segundos, 15 minutos,
-
- Moderador
- Mensagens: 1177
- Registrado em: Qui, 15 Out 2009 10:28 am
- Localização: Recife
pode mudar para não garantir retencao, aí pode por tamanho fixo na tablespace UNDO.
-
- Rank: Programador Júnior
- Mensagens: 16
- Registrado em: Sex, 14 Mai 2010 8:06 pm
- Localização: São José dos Campos - SP
O Primeiro passo não vale nada se você não chegar ao final.
Amigo quanto a UNDO estar cheia, não quer dizer que você não pode usa-la.
Como já disseram o Oracle tentar manter as informações na UNDO de acordo com o valor do RETENTION, mas ele TENTA, caso algum outro processo precise de UNDO o oracle libera o que estava guardando por causa do retention.
Como você esta no 9i, é certeza que o oracle não garante o retention, já no 10g da pra configurar para o retention ser garantido, mas como você esta no 9i pode continuar executando seu processo independente do espaço livre na UNDO.
Como já disseram o Oracle tentar manter as informações na UNDO de acordo com o valor do RETENTION, mas ele TENTA, caso algum outro processo precise de UNDO o oracle libera o que estava guardando por causa do retention.
Como você esta no 9i, é certeza que o oracle não garante o retention, já no 10g da pra configurar para o retention ser garantido, mas como você esta no 9i pode continuar executando seu processo independente do espaço livre na UNDO.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante