Jag kom hit för att försöka lösa en liknande situation så det verkar som om den här typen av problem fortfarande dyker upp.
I mitt fall gjorde det susen att undvika optimeringstransformationer.
Jag använde ett NO_QUERY_TRANSFORMATION-tips på "intoed" SELECT-satsen och felet försvann.
I fallet med den här frågan bör jag skriva om den som:
INSERT INTO MasterRecords
(BatchRecordRecordID, SourceID, BatchID)
SELECT /*+NO_QUERY_TRANSFORMATION*/ RecordID, SourceID, BatchID
FROM (
SELECT RecordID, BatchID, 101 AS SourceID
FROM BatchRecords
WHERE BatchID = 150
GROUP BY RecordID, BatchID
) BR