0

明日は私にとっては仕事の日です=(。Colls、sqlスクリプトが-bashスクリプトのsql * loader作業の終了を待つ必要があります。以下の正しいコードですか?:

#!/bin/bash

echo -------- uploader.sh v 0.1 --------
# @echo; 

export NLS_LANG=russian_cis.ru8pc866
export NLS_NUMERIC_CHARACTERS='.'

ORACLE_HOME=/opt/app/oracle/product/10.2.0/db_1/bin
export ORACLE_HOME
PATH=$ORACLE_HOME
export PATH

sqlldr userid=myscheme/0611@TEST_DB control=control_file.ctl LOG=test_log.log errors=100


wait #here i want to wait sqlloader executing

sqlplus userid=myscheme/0611@TEST_DB 10.33.19.13/test/DATA_UPLOAD/mysql_script.sql

ここで待機機能について読みました。

4

1 に答える 1

2

シェルスクリプトは、デフォルトでは、前のコマンドが完了した後にのみコマンドを実行します。これに対する唯一の例外は、を使用してバックグラウンドスレッドで何かを実行する場合です&。だから実行する

sqlldr userid=myscheme/0611@TEST_DB control=control_file.ctl LOG=test_log.log errors=100
sqlplus userid=myscheme/0611@TEST_DB 10.33.19.13/test/DATA_UPLOAD/mysql_script.sql

すでにあなたが望むことをします。

ただし、メインスレッドで実行を継続できるように別のスレッドを使用する場合は、次を使用できます。

sqlldr userid=myscheme/0611@TEST_DB control=control_file.ctl LOG=test_log.log errors=100 &
pid=$!
#do other stuff
wait $pid
sqlplus userid=myscheme/0611@TEST_DB 10.33.19.13/test/DATA_UPLOAD/mysql_script.sql

これにより、コマンドが終了してdo other stuffいる間、それが可能になります。sqlldr次に、プログラムはsqlldrコマンドが完了するのを待ってからを呼び出しsqlplusます。

于 2012-04-27T14:35:55.630 に答える