At the 2012 Summer Olympics in London, Oliveira competed in the same individual events with only two days in between. He achieved FINA B-standards of 1:59.72 (200 m backstroke) from the European Championships in Debrecen, Hungary, and 1:58.50 (200 m butterfly) from the Summer Universiade in Shenzhen, China. In his first event, 200 m butterfly, Oliveira placed twenty-second on the morning preliminaries. He powered past the entire field to lead the second heat in a personal textile best of 1:58.45. Two days later, in the 200 m backstroke, Oliveira challenged seven other swimmers in the same heat, including Hungary's Gábor Balog, finalist at the European Championships. He set a new Portuguese record of 1:58.83 to earn a second spot behind Balog. Oliveira missed the top 16 semifinals by six-tenths of a second (0.60), as he placed twentieth in the prelims.