2016-03-29 70 views
1

我創建了一個shell腳本,其中我正在執行包含所有create和alter table腳本的Alter_t_new.sql。現在我想要任何錯誤或創建的任何錯誤都被緩衝到日誌文件中。我試圖SPOOL $ LOGFILE而是拋出一個錯誤如何將對象創建後臺打印到日誌文件中

SPOOL: command not found 

shell腳本:

echo "Starting installation of XXHCM_OBJECTS - XXHCM_OBJECTS ..." 
echo "Starting installation of XXHCM_OBJECTS - XXHCM_OBJECTS ..." "">>$LOGFILE 
echo "">>$LOGFILE 

echo "">>$LOGFILE 
echo "Copying Files To Appropriate Directories ..." 
echo "Copying Files To Appropriate Directories ..." "">>$LOGFILE 


echo "">>$LOGFILE 


echo "">>$LOGFILE 
echo "Files copied successfully !!! " 
echo "Files copied successfully !!! " "">>$LOGFILE 
echo "">>$LOGFILE 

echo "Changing permissions ... "  "">>$LOGFILE 
chmod 777 *.* 
echo "Changed permissions ... "  "">>$LOGFILE 

echo "">>$LOGFILE 
echo "Creating Custom Package, Synonyms and Grants..." "">>$LOGFILE 
echo "Creating Custom Package, Synonyms and Grants..." 
echo "">>$LOGFILE 

if sqlplus $APPS_USER @Alter_t_new.sql 
then 
SPOOL $LOGFILE 
    echo "Custom itables created successfully in APPS schema"  "">>$LOGFILE 
    echo "Custom itables created successfully in APPS schema" 
    SPOOL OFF 
else 
    echo "Error in creating custom itables in APPS schema"  "">>$LOGFILE 
    echo "Error in creating Custom itables in APPS schema" 
fi 

echo "">>$LOGFILE 
echo "Package, Synonyms,grants and Tables created successfully" "">>$LOGFILE 
echo "Package, Synonyms,grants and Tables created successfully" 
echo "">>$LOGFILE 


echo "Installation completed for XXHCM_OBJECTS - XXHCM_OBJECTS" 
echo "Installation completed for XXHCM_OBJECTS - XXHCM_OBJECTS"  "">>$LOGFILE 
# ***************************************************************************** 
# End of Script 
# ***************************************************************************** 

回答

0

你必須使用你的腳本里面SPOOL命令,它的SQLPlus命令。例如文件內容是:

SPOOL my_log.log 
CREATE TABLE t1 
    (col1 NUMBER); 
SPOOL OFF 

您還可以使用SET TERMOUT OFF命令,無法輸出。

The TERMOUT setting controls whether SQLPlus displays output generated by SQL statements, PL/SQL blocks, and SQLPlus commands. This setting applies only when SQLPlus is executing a script file. SQLPlus displays output from commands entered interactively.

+0

@ hinotf-我必須在服務器中創建my_log嗎? –

+0

@sreekembose在SQLPlus運行時創建的日誌文件 – hinotf

+0

感謝這工作! –

1

我相信SPOOL需要在Alter_t_new.sql文件中。 我會做這樣的事情:

(from .sh script) 
    if sqlplus $APPS_USER @Alter_t_new.sql $LOGFILE 
    then 
     echo "Custom itables created successfully in APPS schema"  "">>$LOGFILE 
     echo "Custom itables created successfully in APPS schema" 
     SPOOL OFF 
    else 
     echo "Error in creating custom itables in APPS schema"  "">>$LOGFILE 
     echo "Error in creating Custom itables in APPS schema" 
    fi 


    (from Alter_t_new.sql) 
    WHENEVER SQLERROR EXIT SQL.SQLCODE 

    spool &1 APPEND 

薪火$ LOGFILE作爲參數傳遞給sqlplus命令

sqlplus $APPS_USER @Alter_t_new.sql $LOGFILE 

,並使用該參數追加到要添加到

日誌文件
spool &1 APPEND 

此外,WHENEVER SQLERROR EXIT SQL.SQLCODE位應將錯誤返回給調用它的.sh。這裏是WHENEVER SQLERROR的一些信息:https://docs.oracle.com/cd/B19306_01/server.102/b14357/ch12052.htm

我希望這有助於。

相關問題