Было бы полезно получить сообщение об ошибке, но в любом случае я не думаю, что эта процедура будет делать то, что вы хотите. Вам нужно предложение where для обновления, или оно будет обновлять каждую строку в таблице.
UPDATE FATURA
SET VALOR_TOTAL = (SELECT SUM(DETALHE_FATURA.VALOR)
FROM DETALHE_FATURA, FATURA
WHERE DETALHE_FATURA.ID_FATURA = FATURA.ID_FATURA AND
EXTRACT (YEAR FROM FATURA.DATA_EMISSAO) = ANO AND
EXTRACT (MONTH FROM FATURA.DATA_EMISSAO) = MES
GROUP BY DETALHE_FATURA.ID_FATURA)
where EXTRACT( YEAR FROM FATURA.DATA_EMISSAO) = ANO and
EXTRACT(MONTH FROM FATURA.DATA_EMISSAO) = MES;