SP2-306错误 - SQLplus

时间:2017-07-20 13:13:58

标签: bash oracle shell sqlplus

我使用以下脚本运行sql文件并将日志传递到日志文件夹。

#!/usr/bin/bash
filename="$1"
time_stamp=$(date +%Y-%m-%d-%T)
mkdir -p "/APPLICATIONS/log/anonymize_${time_stamp}"

while read -r line
do
    schema_name="$line"
        error_level=0
    echo "$schema_name"

    password=$(sed -n "/name>.*$schema_name<\/name>/{s#.*<password>##;s#</password>.*##;p;}" connections.xml)
    datasource=$(sed -n "/name>.*$schema_name<\/name>/{s#.*<datasource>##;s#</datasource>.*##;p;}" connections.xml)
$ORACLE_HOME/bin/sqlplus -s /nolog <<-EOF>> "/APPLICATIONS/log/anonymize_${time_stamp}/anonymize_$schema_name.log"
WHENEVER OSERROR EXIT 9;
WHENEVER SQLERROR EXIT SQL.SQLCODE;
connect $schema_name/${password}@${datasource}
@/APPLICATIONS/sql/start_anon.sql
EOF

sql_return_code=$?

if [ $sql_return_code != 0 ]
then
echo "$schema_name - Failed. Logs - /APPLICATIONS/log"
echo "Error code $sql_return_code"
else
 echo "$schema_name - Success."
fi

echo "************************************"
done < "/APPLICATIONS/exe/schema.txt"

以下脚本可以正常工作。 但是,如果在此服务器中从不同服务器外部启动了相同的脚本,则它将失败并显示错误

SP2-0306: Invalid option.
Usage: CONN[ECT] [logon] [AS {SYSDBA|SYSOPER}]
where <logon>  ::= <username>[/<password>][@<connect_identifier>] | /
SP2-0640: Not connected

请告知。

解决: 在提到带有完整路径的connections.xml之后,脚本也已经从不同的服务器成功执行。

0 个答案:

没有答案