_FIX_CONTROL
Na versão 10.2.0.2 do banco de dados Oracle, surgiu um parâmetro oculto chamado _FIX_CONTROL, que pode ser usado para habilitar ou desabilitar certas correções de bugs.
Este parâmetro é mais comumente associado ao otimizador, mas pode também ser usado em problemas de outras áreas.
Lembre-se que por se tratar de um parâmetro oculto, deve ser modificado apenas com apoio do suporte da Oracle.
Mas por que eu desabilitaria a correção de um bug ?
A resposta é simples, as vezes, a correção de um bug específico pode ter efeitos colaterais e causar outros problemas.
Também devemos levar em consideração, que algumas correções não são ativadas por default.
A lista completa dos números de bugs pode ser encontrada nas seguintes visões:
select * from V$SYSTEM_FIX_CONTROL;
select * from V$SESSION_FIX_CONTROL
A coluna VALUE, mostra o estado corrente do bug fix:
0 = desativado
1 = ativado
Lembre-se de verificar se a coluna OPTIMIZER_FEATURE_ENABLE está de acordo com o seu parâmetro de banco OPTIMIZER_FEATURES_ENABLE.
Para desabilitar:
ALTER SESSION SET "_fix_control"='12864791:OFF';
ALTER SESSION SET "_fix_control"='12864791:0';
Para habilitar:
ALTER SESSION SET "_fix_control"='12864791:ON';
ALTER SESSION SET "_fix_control"='12864791:1';
Múltiplos:
ALTER SESSION SET "_fix_control"='12864791:OFF','12605402:OFF';
A nível de sistema:
ALTER SYSTEM SET "_fix_control"='12864791:OFF','12605402:OFF';
Para um SELECT específico, podemos utilizar o hintOPT_PARAM:
SELECT /*+ OPT_PARAM('_fix_control' '12864791:OFF') */ *
FROM ...
Referências:
- init.ora Parameter “_FIX_CONTROL” [Hidden] Reference Note (Doc ID 567171.1)
Abraço