Esses e o cordao masculino da junino em 2007 foi massa D+ esse ano! Nosso 2 ano foi muita luta! "Passeando pelo nordeste nao vimos so fome e seca e sim:fe,alegria e Sao Joao como no Arraia "! Esse blog foi criado para lembrar e mostrar a todos os amantes do Sao Joao o trabalho do Arraia Coracao Junino-Senador Eloi de Souza-RN.Esse grupo tem 4 anos de existencia! Nosso 1 ano 2005! Aqui foi onde tudo comecou "No tum-tum do vou mostrar meu Sao Joao!" 3 Ano comecamos a evoluir a cada apresentacao e fomos xegando ao nosso objetivo mostrar q a juventude de S. Eloi de Souza valoriza as tradicoes Juninas! "Vem viver e dancar conosco o Sao Joao no arraia do '! Essas lindas meninas-mulheres formaram o cordao feminino da junino em 2007e arrazaram obg por terem participado dessalinda familia! O post de hoje e sobre o erro: ORA-22924: snapshot too oldEm um belo dia estava realizando um expdp de uma base de aproximadamente 60GB, no log de exportacao foi apresentado o erro abaixo:ORA-31693:Table data object "owner"."tabela" failed to load/unloadand is being skipped due to error:ORA-29913:error in executing ODCIEXTTABLEPOPULATE calloutORA-01555:snapshot too old: rollback segment number with name "" too smallORA-22924:snapshot too oldTeoria importante: Tablespace UNDO: Sempre que uma transacao e iniciada, ela e direcionada para um segmento UNDO, quando os dados sao alterados os valores antigos sao copiados para o segmento, a funcao da UNDO e sobrescrever as transacaoes submetidas a commit ainda nao expiradas.E interessante antes de tudo entender o que esta fazendo, a teoria e fundamental.Para consultar o tamanho da UNDO, execute o script abaixo:SELECT d.undo_size/(1024*1024) "ACTUAL UNDO SIZE [MByte]", SUBSTR(e.value,1,25) "UNDO RETENTION [Sec]", (TO_NUMBER(e.value) * TO_NUMBER(f.value) * g.undo_block_per_sec) / (1024*1024) "NEEDED UNDO SIZE [MByte]" FROM (SELECT SUM(a.bytes) undo_size FROM v$datafile a inner join v$tablespace b on a.ts# = b.ts# inner join dba_tablespaces c on b.name = c.tablespace_name WHERE c.contents = 'UNDO' AND c.status = 'ONLINE') d, v$parameter e, v$parameter f, ( SELECT MAX(undoblks/((end_time-begin_time)*3600*24)) undo_block_per_sec FROM v$undostat) g WHERE e.name = 'undo_retention' AND f.name = 'db_block_size';Com intuito de resolver o problema, tentei aumentar gradativamente o tamanho da tablespace UNDO, mesmo aumentando o tamanho, o problema persistiu.Depois de quebrar muita a cabeca... Fiz outra tentativa:Alterar o periodo de retencao da UNDO.Aumentei gradativamente o tamanho para 2 dias.O calculo e por segundos: 1 hora = 60 segundos 48horas = 2 dias 60 * 48 = 4320 Valor a ser alterado= 4320sPrimeiro, deve ter permissao de sys para alterar o tempo de retencao:export ORACLE_SID=instancia - Primeiro necessita informar ao SGDB qual instancia deseja que seja aumentada a UNDO.sqlplus / as sysdbaOracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSYS@instancia SQL>ALTER SYSTEM SET UNDO_RETENTION = 604800 scope=both System altered.Nao e necessario realizar shutdown no banco de dados.Apos alteracao, o erro mesmo assim persistiu no log do expdp:ORA-31693: Table data object "owner"."tabela" failed to load/unload and is being skipped due to error:ORA-29913: error in executing ODCIEXTTABLEPOPULATE calloutORA-01555: snapshot too old: rollback segment number with name "" too smallORA-22924: snapshot too oldOutra tentativa