2017-12-05 5 views
0

SQL開発者(oracle)に4つのデータベース接続があります。夕方には、同じサーバー上のすべての4つの接続でいくつかのスクリプトを定期的に実行する必要があります。スクリプトを一度しか実行しないショートカットはありますか?また、DBに接続されているすべての接続に反映されていますか?複数のデータベースでバッチ・オラクル問合せを実行

(注:すべての4の接続がまったく同じ情報を保持します。)

誰もがこれを行う方法を提案することができますか?

答えて

0

ここで私はそれを行います:GUIではなく、コマンドプロンプト機能を使用します。唯一の前提条件は、SQL * Plusをコンピュータにインストールすることです。

たとえば、実行するSQLスクリプトを作成し、C:\ Tempディレクトリに保存します。それを "my_script.sql"と名づけましょう。 SQLとPL/SQLの両方を含むことができます(その場合はスラッシュで終了することを忘れないでください)。あなたのよう

@echo on 
set SCRIPT=C:\Temp\my_script.sql 
set SCRIPT_LOG=C:\Temp\my_script 

if not exist %SCRIPT% goto END 

start sqlplus.exe /nolog @%SCRIPT% %SCRIPT_LOG%.site_1.log "username_1"/"password_1"@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=host_1_name)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=service_name_1))) 
start sqlplus.exe /nolog @%SCRIPT% %SCRIPT_LOG%.site_2.log "username_2"/"password_2"@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=host_2_name)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=service_name_2))) 
start sqlplus.exe /nolog @%SCRIPT% %SCRIPT_LOG%.site_3.log "username_3"/"password_3"@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=host_3_name)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=service_name_3))) 
start sqlplus.exe /nolog @%SCRIPT% %SCRIPT_LOG%.site_4.log "username_4"/"password_4"@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=host_4_name)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=service_name_4))) 

:END 

:その後の「run_my_script.bat」という名前を付け、そこにこのようなコードを入れてみましょう、DOSのバッチスクリプトを作成する

connect &2 
spool &1 
set echo on 
set define off 

-- Your SQL statements go here: 

select to_char(sysdate, 'dd.mm.yyyy hh24:mi') vrijeme from dual; 

begin 
    pkg_payments.p_gimme_my_money; 
    commit; 
end; 
/

-- End of your SQL statements 

spool off 
exit 

:ここ

は、それはのようになります方法です見ることができ、それ

  • セットローカル変数(あなたが が作成した.SQLファイルを指すSCRIPT、)とSCRIPT_LO Gスクリプトの の実行に関するログ情報を含む)
  • は、SQL * Plusを(パラレルで;あなたがそれらを逐次 を実行したい場合は、単にSTARTキーワードを削除する)、各データベース に接続し、それをテストする最も簡単な方法は、.batファイルをダブルクリックにあるスクリプトを

を実行しています。 4つの "黒い"コマンドプロンプトウィンドウを開き、SQLスクリプトがそのジョブを終了すると、それらを終了します。ログファイルを確認してください!

結果に満足したら、定期的に&が自動的に実行されるように、タスクスケジューラで.BATファイルの実行をスケジュールします。

それはまったく、私は推測します。

関連する問題