Oil prices have spiked near $120 a barrel as the Iran war disrupts oil production and shipping in the Middle East.