Para mostrar o problema, você receberá um pequeno testcase:
Individualmente, isso funciona bem:
ls; pwd
então fazemos isso
cmd='ls ; pwd'
Agora, $cmd
dará o erro aos arquivos chamados ';' e 'pwd' estão faltando.
Aqui é precisamente onde o comando "eval" entra quando você quer dar ao shell outra chance:
eval "$cmd"
é executado com sucesso como se você tivesse dado na linha de comando.
Então, em vez de $ trans_oracle, indique como: eval "$trans_oracle"