ATUALIZAÇÃO: Isso é corrigido em 12.1.0.2.
Isso definitivamente parece um bug no 12.1.0.1. Recomendo que você crie uma solicitação de serviço por meio do suporte da Oracle. Eles podem ser capazes de encontrar uma correção ou uma solução melhor. E esperamos que a Oracle possa corrigi-lo em uma versão futura para todos. Normalmente, a pior parte de trabalhar com suporte é reproduzir o problema. Mas como você já tem um caso de teste muito bom, esse problema pode ser fácil de resolver.
Provavelmente existem muitas maneiras de contornar esse bug. Mas é difícil dizer qual método sempre funcionará. Sua reescrita de consulta pode funcionar agora, mas se as estatísticas do otimizador mudarem, talvez o plano mude novamente no futuro.
Outra opção que funciona para mim em 12.1.0.1.0 é:
ALTER SESSION SET optimizer_features_enable='11.2.0.3';
Mas você precisa se lembrar de sempre alterar essa configuração antes da execução da consulta e, em seguida, alterá-la novamente para '12.1.0.1' depois. Existem maneiras de incorporar isso em uma dica de consulta, como
/*+ OPT_PARAM('optimizer_features_enable' '11.2.0.3') */
. Mas por algum motivo isso não funciona aqui. Ou talvez você possa definir isso temporariamente para todo o sistema e alterá-lo novamente depois que uma correção ou uma solução melhor estiver disponível. Seja qual for a solução que você usar, lembre-se de documentá-la. Se uma consulta parecer estranha, o próximo desenvolvedor pode tentar "consertá-la" e encontrar o mesmo problema.