En els Jocs Olímpics d'estiu de 2012 a Londres, Oliveira va competir en les mateixes disciplines individuals amb només dos dies d'interval. Va assolir els estàndards de la FINA B de 1:59.72 (200 m dorsal) dels Campionats d'Europa
a Debrecen, Hongria, i 1:58.50 (200 m papallona) de la Universiada d'Estiu a Shenzhen, Xina. En la seva primera prova, 200 m papallona, Oliveira va quedar en el 22è lloc en les preliminares de la matinada. Va superar el camp sencer per liderar la segona ronda amb un millor temps personal de 1:58.45. Dos dies més tard, en els 200 metres dorsal, Oliveira va desafiar a set altres nedadors en la mateixa prova, incloent el hongarès Gábor Balog, finalista del Campionat d'Europa. Va establir un nou rècord portuguès de 1:58.83 per guanyar un segon lloc darrere de Balog. Oliveira es va perdre les semifinales dels 16 primers per sis dècimes de segon (0,60), ja que va quedar vintè en les preliminares.