O seu problema é que o voo entre Oslo e Barcelona é um voo interno de Schengen que, do ponto de vista da imigração, é tratado como um voo doméstico. Então você terá que entrar no espaço Schengen em Oslo e deixá-lo em Barcelona.
Um visto de trânsito aeroportuário não serve para você porque você precisa entrar na área. O espaço Schengen deixou de emitir vistos de trânsito no litoral. Portanto, você precisará de um visto Schengen regular de curta permanência.