Выполнить сеансы sqlplus с заданиями в powershell - PullRequest
0 голосов
/ 06 июля 2018

Я хочу выполнить несколько сеансов с различными сценариями в базе данных Oracle. Я хочу сделать это с открытыми заданиями одновременно, но я думаю, что у меня есть проблемы с передачей параметров. $ Item_actual появляется пустым, когда start-job пытается использовать.

$lista_scripts = @("insert","update","select")  
For ($i=0; $i -le 2; $i++)
{
     $item_actual=$lista_scripts[$i]
     Write-Host "Ejecutandose $item_actual"
     start-job {date;cat "$item_actual";cat $item_actual | sqlplus xxx/xxx@"(description=(address=(protocol=TCP)(host=xxx)(port=xxx))(connect_data=(SERVICE_NAME=xxx)))"; date;}
}

Спасибо

1 Ответ

0 голосов
/ 06 июля 2018
$username = "scott"
$password = "tiger"
$connect_string ="test-ecdu"
$log_file = "c:\powershell_script\test\log.txt"

$lista_scripts = @("select 1 ,sysdate from dual ;","select 2,sysdate from dual;","select 3,sysdate from dual;")  

For ($i=0; $i -le 2; $i++)
{
     $item_actual=$lista_scripts[$i]

     Write-Host "Ejecutandose $item_actual"
     start-job -ArgumentList $username, $password,$connect_string,$item_actual, $log_file  -ScriptBlock {param($username_, $password_,$connect_string_ , $item_actual_, $log_file_)
     date >>$log_file_; 
     Write-output "RUN $item_actual_" >>$log_file_ ;
     $sqlOutput= $item_actual_ | sqlplus -s  $username_/$password_@$connect_string_; 
     Write-output $sqlOutput >>$log_file_
     date >>$log_file_;
             }
}


c:\powershell_script\test\log.txt

6 июля 2018 г. 13:20:45
RUN select 1 ,sysdate from dual ;

     1 SYSDATE
---------- --------
     1 06.07.18

Elapsed: 00:00:00.00

6 июля 2018 г. 13:20:45

6 июля 2018 г. 13:20:45
RUN select 2,sysdate from dual;

     2 SYSDATE
---------- --------
     2 06.07.18

Elapsed: 00:00:00.00

6 июля 2018 г. 13:20:45

6 июля 2018 г. 13:20:46
RUN select 3,sysdate from dual;

     3 SYSDATE
---------- --------
     3 06.07.18

Elapsed: 00:00:00.00

6 июля 2018 г. 13:20:46
...