Hoy experimenté el mismo problema con un Join interno. Como crear una Función con valores de tabla sugerido por codechurn o usando una Tabla temporal sugerido por user1935511 o cambiando los Tipos de unión sugerido por cymorg no hay opciones para mí, me gusta compartir mi solución.
Usé Sugerencias para unirse para conducir el optimizador de consultas en la dirección correcta, ya que el problema parece surgir de la estrategia de unión de bucles anidados con la tabla remota localmente. Para mí HASH , COMBINAR y REMOTO las sugerencias para unirse funcionaron.
Para ti REMOTO no será una opción porque solo se puede usar para operaciones de unión interna. Así que usar algo como lo siguiente debería funcionar.
select *
from eopf.Batch b
join eopf.BatchFile bf
on b.BatchID = bf.BatchID
left outer merge join [OM_ORACLE]..[OM].[DOCUMENT_UPLOAD] du
on bf.ReferenceID = du.documentUploadID;