Três ou quatro anos atrás, li em um blog da Oracle em algum lugar que um DBA havia usado para resolução de incidentes de emergência, um recurso Oracle 10g de substituição de SQL em tempo real. Basicamente, ele configurou o Oracle de maneira que, toda vez que recebia uma determinada consulta A, executava outra consulta B. Nenhuma alteração no código do aplicativo, no esquema, apenas uma configuração simples do tipo "executar consulta B em vez de A".
Não que eu esteja planejando usar esse recurso (posso pensar em algumas conseqüências indesejáveis), mas por curiosidade ele realmente existe? Se sim, como é chamado esse recurso?
oracle
oracle-10g
caldo
fonte
fonte
Respostas:
Isso soa como o pacote DBMS_ADVANCED_REWRITE . Tim Hall tem uma excelente explicação do uso desse pacote para apontar as consultas de um aplicativo em uma tabela ou exibição diferente .
Se você quiser apenas alterar o plano de consulta, mas não apontar a consulta para uma tabela diferente, poderá usar contornos armazenados ou perfis SQL.
Por exemplo, eu tenho tabelas
FOO
com 1 linha eBAR
com 2 linhasPosso declarar uma equivalência de reescrita dizendo que as consultas contra
FOO
devemBAR
Agora, se eu definir
query_rewrite_integrity
como confiável, as consultasFOO
acabam atingindo uma tabela completamente diferente.Isso pode criar alguns planos de consulta bastante interessantes, nos quais o objeto que você está consultando não pode ser encontrado em nenhum lugar
fonte