Alessandro Guimarães – Oracle Blog

September 5, 2010

Oracle | Bugs Esquecidos

Filed under: banco de dados — Tags: , , , — agleite @ 10:23 am

Esta semana me deparei com a seguinte situação: Migrar uma base Oracle Standard Edition 9.2 .0.1.  para 10.2.0.4

No script utilizado para exportação da base o parametro buffer estava para 800000. Para aqueles que não estão familiarizados com export, buffer determina em bytes o numero maximo de linhas em um array capturado pelo export. Se você, por exemplo, colocar 0 (zero) o export traz uma linha por vez.

Assim que olhei o parametro pensei: “Muito pequeno, vou aumentar e o export vai ser mais rapido”

Alterei entao de 800k para 80M . Como podes notar não aumentei muito por que existia uma limitação de memória no servidor.Mesmo assim isso deveria da para tornar a exportação mais rapida. Comecei então o export. Tudo ia bem até em uma determinada tabela onde o export parecia estar travado. Um olhadinha em v$session_wait (9i)  e o evento de espera para a sessão era SQL*Net message from client. Por curiosidade fui ver quantas linhas tinha esta tabela e o resultado foi 0(zero) linhas. Depois de uns 4 minutos o export voltou a fazer seu trabalho, no entanto voltou a travar novamente em uma outra tabela que também estava com zero linhas.

Search mental e…lembrei que na 9.2 tinha algum bug sobre export lentos com colunas CLOB. No entanto nenhuma das duas tabela de alguma coluna do tipo LOB. Apelei para o Metalink e achei :

ALERT: EXPORT with large BUFFER Can Silently Produce a Dump File with Corrupted Data [ID 223399.1]

Versões afetadas : 8.1.7.3 8.1.7.4  9.0.1.4  9.2.0.1 9.2.0.2

==>  data corruption *can* occur if: BUFFER = 3200000 (or higher)

Não tive duvidas e voltei o parametro para o valor inicial de 800K. Export executou como uma bala.

Create a free website or blog at WordPress.com.