Thursday, March 19, 2009

Considerações sobre Undo Tablespace

Abaixo uma reposta que enviei no fórum de discussão sobre duvidas com undo tablespace.

Colega,Undo Tablespaces não armazenam objetos(ex. table,index),mas sim armazenam "imagens" de uma transação(do dado propriamente dito) antes deste dado ser modificado,isto para promover um situação chamada de leitura consistente.além de outras funcionalidades que ela tem como Rollback,Oracle Flashback Query e principalmente Recover Database.

Primeiro você deveria se perguntar porque você precisa mexer com uma tablespace que está lá "quietinha".

Você pode ter mais de uma Undo Tablespace no seu banco,mas só uma pode ser "setada" como ativa,e é esta que o seu " Oracle" vai usar para gerenciar Rollback,recover,flashback ,você estiver usando essa feature.Você pode criar uma nova Undo Tbs e dar um DROP na antiga.Você pode dar um RESIZE no datafile e redimensionar sua undo tbs.Você pode alterar os parametros com UNDO_RETENTION = XXX com ALTER SYSTEM SET,pode dar um ALTER TABLESPACE , e alterar uma tablespace com RETENTION GUARANTEE ou NOGUARANTEE(isso tem que ser analisado com cuidado),primcipalmente se o seu banco é de "PROD".Enfim tem uma serie de coisas que você pode fazer com Undo Tablespace,dependendo é claro da sua NECESSIDADE.

Pelo que você mencionou você está usando UNDO_RETENTION com um valor especificado em 900(segundos).

Dê uma olhada na DBA_TABLESPACES para ver se você está usando RETENTION GUARANTEE ou não.Isso pode afetar muito,principalmente se sua TABLESPACE não foi criada com AUTOEXTEND.

Algumas coisas interessantes que você deve saber é que:

-Se sua tablespace está com AUTOEXTEND ela crescerá conforme a necessidade do seu banco Oracle.Senão você terá que dimensionar manualmente o datafile.


- Se estiver com RETENTION GUARANTEE,o Oracle vai "preservar"garantindo a 'imagem" do seu dado antigo pelo periodo especificado no UNDO_RETENTION.Senão estiver com a opção GUARANTEE ,caso o Oracle necessite de espaço para uma imagem de uma nova transação,e sua tablespace não estiver com AUTOEXTEND ele irá sobrescrever as imagens das suas transações anteriores "expiradas" e "else if" ainda não tiver espaço suficiente o Oracle vai começar a sobrescrever as imagens anteriores "não-expiradas"(então começa um problemão).

No comments: