Quais são as melhores práticas para monitorar o segmento de reversão da Oracle?

2

Ocasionalmente, ficamos sem espaço no segmento de rollback, fazendo com que a consulta / atualização falhe. Quais são as melhores práticas que posso esperar de um DBA Oracle para garantir que isso seja monitorado proativamente e as medidas apropriadas tomadas antes que ocorra um problema?

    
por Stuart Woodward 01.10.2011 / 06:47

1 resposta

2

Qual versão do Oracle você está usando? Você está realmente usando segmentos de reversão manual? Ou você está usando o gerenciamento automático de UNDO? Se você estiver usando uma versão moderadamente recente do Oracle (9i ou posterior), você realmente deveria estar usando o gerenciamento automático do UNDO.

Supondo que você esteja usando o gerenciamento UNDO automático, você realmente só precisa saber quanto UNDO seu banco de dados gera por unidade de tempo e por quanto tempo a consulta mais longa que você precisa executar deve ser executada (ou o mais atrasado que uma consulta de flashback precisa ir). Você só precisa definir o UNDO_RETENTION para qualquer tempo de execução da consulta mais longa e dimensionar o UNDO tablespace para manter todo o desfazer gerado durante esse intervalo (embora os específicos dependam da versão específica do Oracle).

A partir daí, é relativamente fácil para o DBA monitorar as alterações na taxa de retenção de UNDO. É possível, mas potencialmente mais difícil para o DBA monitorar as mudanças na consulta "real" de maior duração, porque o banco de dados de produção encontra a consulta fugitiva onde alguém tenta obter um relatório e acidentalmente faz uma junção cartesiana ou alguma outra coisa horrível. operação dispendiosa que leva muito tempo para ser executada. Pode ser impossível para o DBA dizer se há consultas "reais" de longa duração que estão demorando mais ou se as consultas demoradas são realmente apenas erros. Geralmente, é mais fácil para os desenvolvedores de aplicativos colaborarem com os DBAs para determinar quando as consultas devem estar em execução por mais tempo. Isso pode ser algo que os desenvolvedores apenas conheçam (por exemplo, porque você está implantando um novo relatório que espera executar por um tempo particularmente longo) ou algo que os desenvolvedores registram em algum lugar e revisam com os DBAs periodicamente.

    
por 01.10.2011 / 08:37