Alter sequence

DBA Geral (instalação, configuração do banco, scripts do Sql*Plus, shell scripts, batch scripts, etc...)
Responder
leandrogsi
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 15
Registrado em: Qua, 18 Mar 2009 4:19 pm
Localização: Paraiso do Norte - PR

Olá pessoal,
Preciso executar o alter sequence nome_sequencia nocache; para tirar o cache 20, valor padrão do Oracle criado quando um programador esquece de colocar nocache na criação da sequence.
Este comando compromete o last_number? Ou seja, as 20 posições do cache são perdidas ou o Oracle posiciona na próxima sequencia a partir da ultima usada?
elidias7
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 153
Registrado em: Qui, 01 Nov 2007 2:53 pm
Localização: Osasco
Eli Dias
Oracle Certified Professional

Boa tarde.

A unica modificação que vai acontecer quando você executar o comando é a inativação do cache da sequencia. Com relação ao ponteiro do cache, ele somente será desalocado da memória do Oracle.


Abraços
Avatar do usuário
fbifabio
Moderador
Moderador
Mensagens: 199
Registrado em: Ter, 22 Fev 2011 1:51 pm
Localização: São Paulo - SP
Contato:
Fábio Prado
www.fabioprado.net

@leandrogsi,

Não faça isso. O cache da sequence é muito bom p/ otimizar a performance dela. você só perde os valores em cache quando a shared pool for "limpada" e isso pode ocorrer em um desligamento normal ou anormal, quando faltar memória na shared pool ou quando alguém executar o comando ALTER SYSTEM FLUSH SHARED_POOL. De qualquer forma, ainda dá para proteger mais a sequence fixando-as em memória e neste caso você só perderia os valores em um desligamento anormal. Para mais informações leia o artigo: http://www.fabioprado.net/2010/09/cache ... ences.html

[]s
leandrogsi
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 15
Registrado em: Qua, 18 Mar 2009 4:19 pm
Localização: Paraiso do Norte - PR

Então, o meu problema com cache_size é no export/import. As sequencias são importadas com o last_number diferente, ou seja com o valor acima do que esta na tabela. Usei o comando flashback_time=\"$(date +%F' '%T)\" no expdp, e este problema foi resolvido.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 11 visitantes