Dana sesja sqlplus może łączyć się tylko z jednym db na raz, więc twoje wymaganie "w tym samym czasie" zasadniczo nie jest uruchamiane. Jeśli 'w tym samym czasie' naprawdę oznacza 'sekwencyjnie, w tym samym skrypcie, to wracasz do poprawiania parametrów połączenia. I do tego „masz więcej błędów niż wczesna gra Mets” (z przeprosinami dla fanów NY Mets).
Po pierwsze, twój skrypt wskazuje, że twoje polecenie sqlplus jest pierwszym rzeczywistym poleceniem po specyfikacji twojego procesora powłoki i 'set -x'. Mimo to intensywnie wykorzystujesz zmienne środowiskowe jako substytuty nazwy użytkownika, hasła i nazwy połączenia - nigdy nie ustawiając tych zmiennych.
Po drugie, użycie „&” w wierszu poleceń jest całkowicie mylące zarówno dla mnie, jak i dla parsera.
Po trzecie, musisz poprzedzić odwołanie do skryptu sql znakiem „@”.
Po czwarte, twoja kolejność elementów w wierszu poleceń jest nieprawidłowa.
Wypróbuj to
#!/bin/bash
orauser1=<supply user name here>
orapw2=<supply password here>
oradb_1=<supply connection name of first database>
#
orauser1=<supply user name here>
orapw2=<supply password here>
oradb_1=<supply connection name of first database>
#
Targetdirectory=<supply value here>
#
sqlplus -S ${orauser1}/${orapw1}@${oradb_1} @Datesquery.sql >> ${Targetdirectory}/csvfile1.csv
sqlplus -S ${orauser2}/${orapw2}@${oradb_1} @Datesquery.sql >> ${Targetdirectory}/csvfile2.csv