Has intentado con una sentencia normal como cualquier otra de actualizacion?
Código:
update tabla set fecha1=fecha2,fecha2=fecha1 where ...
Yo acabo de intentarlo en Oracle y funciona correctamente. Supongo que, como primero se actualizan los campos y luego se hace el commit, por eso cuando asignas los valores de un campo al otro, aun tienen los valores originales y no el valor por el que quieres actualizar