2015-07-14 6 views
0

Мне нужно написать сценарий развертывания, который будет выполнять каждый скрипт sql и записывать их буфер в зависимости от заданного пути буферизации.Как управлять буферизацией и эхом в оракуле

Deployment.sql 
set echo on; 

SPOOL C:\Temp\Log\scriptLog\MasterScript.log 
/* Start executing script srcipt 1*/ 
@C:\scr\script1.sql; 
/* End executing script srcipt 1*/ 


SPOOL C:\Temp\Log\scriptLog\MasterScript.log append; 

/* Start executing script srcipt 2*/ 
@C:\scr\script2.sql 
/* End executing script srcipt 2*/ 

SET echo OFF 
SPOOL OFF 

Над сценарием развертывания будет выполняться сценарий1 и скрипт2. Я хочу, чтобы буферизация сценариев1 и script2 не добавлялась при буферизации сценария развертывания. И наматывая сценарий развертывания должны только содержит нижеуказанный (означает, что я вошел в сценарии развертывания)

/* Start executing script srcipt 2*/ 
    @C:\scr\script2.sql 
    /* End executing script srcipt 2*/ 

Я попробовал всю возможное решение используется Append из подкачки, сделал много прибегая к помощи, но не получил соответствующее решения. Просьба предложить

Script1.sql 
---------------------------------------------------------------------------------------------- 
-- Test_script.sql 
-- This is Test script one 
---------------------------------------------------------------------------------------------- 

SET echo ON 
SPOOL C:\Temp\Log\scriptLog\Script1.log 

begin 
/* This is inside spool of script 1 */ 

dbms_output.put_line('FIrst Script'); 
end; 
/
spool off; 
set echo off; 


script2.sql 
---------------------------------------------------------------------------------------------- 
-- Test_script.sql 
-- This is Test script two 
---------------------------------------------------------------------------------------------- 
SET echo ON 
SPOOL C:\Temp\Log\scriptLog\Script2.log 

begin 
/* This is inside spool of script 2 */ 

dbms_output.put_line('SECOND Script'); 
end; 
/
Spool off; 
set echo off; 

Мое требование не является ни одна линия script1 и Скрипт2 подкачкой должны Append в сценарии развертывания, и, как упоминалось намоткой из script1 и Скрипт2 вошли отдельно, как это предусмотрено

+0

вы пробовали настройки 'SET LINESIZE' и' SET TRIMSPOOL' с требуемыми значениями? –

ответ

1

Это не совсем понятно, что вы хочу видеть в каждом файле журнала, но я думаю, что это близко.

deployment.sql:

spool C:\Temp\Log\scriptLog\MasterScript.log 
/* Start executing script 1 */ 
@C:\scr\script1.sql 
spool C:\Temp\Log\scriptLog\MasterScript.log append 
/* End executing script 1 */ 

/* Start executing script 2 */ 
@C:\scr\script2.sql 
spool C:\Temp\Log\scriptLog\MasterScript.log append 
/* End executing script 2 */ 

spool off 

script1.sql:

spool off 
set echo off 

---------------------------------------------------------------------------------------------- 
-- Test_script.sql 
-- This is Test script one 
---------------------------------------------------------------------------------------------- 

set echo on 
spool C:\Temp\Log\scriptLog\Script1.log 

begin 
/* This is inside spool of script 1 */ 

dbms_output.put_line('FIRST Script'); 
end; 
/

spool off 
set echo off 

и script2.sql это та же структура:

spool off 
set echo off 

---------------------------------------------------------------------------------------------- 
-- Test_script.sql 
-- This is Test script two 
---------------------------------------------------------------------------------------------- 

set echo on 
spool C:\Temp\Log\scriptLog\Script2.log 

begin 
/* This is inside spool of script 2 */ 

dbms_output.put_line('SECOND Script'); 
end; 
/

spool off 
set echo off 

При запуске из SQL * Plus, который производит MasterScript.log:

SQL> /* Start executing script 1 */ 
SQL> @C:\scr\script1.sql 
SQL> /* End executing script 1 */ 
SQL> 
SQL> /* Start executing script 2 */ 
SQL> @C:\scr\script2.sql 
SQL> /* End executing script 2 */ 
SQL> 
SQL> spool off 

Script1.log:

SQL> 
SQL> begin 
    2 /* This is inside spool of script 1 */ 
    3 
    4 dbms_output.put_line('FIRST Script'); 
    5 end; 
    6/

PL/SQL procedure successfully completed. 

SQL> 
SQL> spool off 

и Script2.log

SQL> 
SQL> begin 
    2 /* This is inside spool of script 2 */ 
    3 
    4 dbms_output.put_line('SECOND Script'); 
    5 end; 
    6/

PL/SQL procedure successfully completed. 

SQL> 
SQL> spool off 
+0

Спасибо Alex за повторную игру, но когда я попытался упомянуть с моим фактическим скриптом, где Termout и обратная связь, буферизация сценария развертывания перешла внутрь скрипта1, не работая для меня – Arun

+0

@Arun - у этого есть завершение и обратная связь. Не понимаю, что вы делаете по-другому, извините. –

+0

Неплохо, я должен был добавить Termout и feedbak с моим вопросом, я отредактирую вопрос, может быть, вы можете указать мне в правильном направлении. Спасибо за тонну за помощь – Arun