Como executar updates com o tablespace UNDO
Este artigo apresenta como podemos otimizar a execução de comandos SQL de forma a evitar estouro de espaço da memória e consequente finalização inesperada da transação em execução.
Para garantir a consistência dos dados em caso de um rollback (seja ele intencional ou por finalização inesperada da sessão, por exemplo), o banco de dados Oracle necessita de uma estrutura para armazenar a informação original que está sendo alterada. Esta estrutura é conhecida por UNDO, que é um local de armazenamento (tablespace) para este tipo de informação. Em situações onde o volume de dados alterados é muito elevado, o espaço disponível no tablespace UNDO pode não ser suficiente para completar a operação e, fatalmente, a transação será finalizada com erro (e um rollback será automaticamente executado).
Para evitar esta situação, é possível construir um bloco PL/SQL onde a transação será particionada no nível de linhas afetadas e efetivações podem ser executadas a cada “n” linhas afetadas, liberando assim espaço no tablespace UNDO. Desta forma, a transação que afeta volumes grandes de dados não será finalizada com erro e não haverá impactos para outras sessões que eventualmente estejam executando qualquer outra operação.
Neste contexto, é normal nos depararmos com situações onde uma implementação de nova funcionalidade da aplicação requer alterações em tabelas nos bancos de dados. Até aí, não há problema algum, afinal é assim que as coisas funcionam. No entanto, esta atividade começa a ficar mais desafiadora quando nos encontramos em uma situação onde uma nova coluna deverá ser criada na tabela e receber um determinado valor para todos os registros da tabela, incluindo os registros já existentes e não apenas os novos registros inseridos após a implementação.
Diferentes soluções podem ser dadas para resolver este problema. Apresentaremos neste artigo uma solução inicial que foi dada e, em seguida, como melhorá-la. É importante destacar que o cenário apresentado e as soluções são reais. Naturalmente, os dados apresentados foram mascarados."
[...] continue lendo...Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo