Можем ли мы иметь несколько соединений SQL * PLUS в сценарии оболочки?
Я написал сценарий оболочки для копирования данных таблиц из одной базы данных в другую с помощью команды COPY SQL * PLUS. У меня нет прав для создания ссылки на базу данных, поэтому я использую команду COPY.
Мне нужно скопировать данные около 50 таблиц. Когда набор данных небольшой, он запускает и копирует данные всех таблиц. Но когда набор данных огромен, он застревает, и я получаю сообщение о неактивном сеансе на машине unix.
Я подумал о разбиении операторов и записал его следующим образом: Но я получаю сообщение об ошибке "SP2-0042: неизвестная команда" END1 "- остаток строки игнорируется". и "SP2-0042: неизвестная команда" END "- остаток строки игнорируется."
#!/bin/bash
export ORACLE_HOME=/ora00/app/oracle/product/9.2.0.8
export PATH=$PATH:$ORACLE_HOME/bin
args=$#
if [ $args == 1 ]
then
echo "Shell script started"
else
echo "Wrong number of arguments"
exit 1
fi
time_start=`date +%H%M%S`
echo $time_start
sqlplus -s srcUN/srcPwd@srcSID <<END1
COPY from srcUN/srcPwd@srcSID to dstUN/dstPwd@dstSID INSERT tab1 USING SELECT * FROM tab1 WHERE col1 = $1;
COPY from srcUN/srcPwd@srcSID to dstUN/dstPwd@dstSID INSERT tab2 USING SELECT * FROM tab2 WHERE col1 = $1;
END1
sqlplus -s srcUN/srcPwd@srcSID <<END2
COPY from srcUN/srcPwd@srcSID to dstUN/dstPwd@dstSID INSERT tab3 USING SELECT * FROM tab3 WHERE col1 = $1;
END2
#END
Не могли бы вы помочь мне решить эту проблему?
Спасибо,
САВИТА