Một phiên sqlplus nhất định chỉ có thể kết nối với một db tại một thời điểm, vì vậy yêu cầu của bạn 'đồng thời' về cơ bản là không phải là người mới bắt đầu. Nếu 'cùng một lúc' thực sự có nghĩa là 'tuần tự, trong cùng một tập lệnh, thì bạn quay lại sửa chuỗi kết nối của mình. Và tại đó, bạn 'có nhiều lỗi hơn một trận Mets đầu tiên' (với lời xin lỗi đến bất kỳ người hâm mộ NY Mets nào).
Đầu tiên, tập lệnh của bạn chỉ ra rằng lệnh sqlplus của bạn là lệnh thực tế đầu tiên sau đặc điểm kỹ thuật của bộ xử lý shell và 'set -x'. Tuy nhiên, bạn sử dụng nhiều các biến môi trường để thay thế cho tên người dùng, mật khẩu và tên kết nối - mà không bao giờ đặt các biến đó.
Thứ hai, việc bạn sử dụng '&' trong dòng lệnh hoàn toàn gây nhầm lẫn cho cả tôi và người phân tích cú pháp.
Thứ ba, bạn cần tham khảo trước tập lệnh sql bằng '@'.
Thứ tư, thứ tự các phần tử trong dòng lệnh của bạn đều sai.
Hãy thử điều này
#!/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