Para esses tipos de erros, o SQL*Plus está 'pendurado' em um prompt de nome de usuário, pois não conseguiu se conectar. Você não vê isso por causa dos
-s
bandeira. Por padrão, ele permitirá três tentativas, o que é útil quando executado interativamente, mas não é útil quando executado a partir de um script como este. Você pode fazê-lo sair após o login com falha com o -l
opção 'logon'
:sqlplus -s -l %%A @fetch.sql >> output.txt