SQL 블록에 대해 예약된 로그 파일 및 출력 cron 작업 인쇄 - 날짜 및 시간 포함(모든 cron 실행)

SQL 블록에 대해 예약된 로그 파일 및 출력 cron 작업 인쇄 - 날짜 및 시간 포함(모든 cron 실행)

pl/sql 블록을 실행하는 쉘 스크립트가 있고 출력 파일에 출력을 인쇄하지만 이전 정보를 유지하지 않으며 스크립트가 실행된 시간과 날짜도 표시하지 않습니다.

내 스크립트는 다음과 같습니다.

#!/bin/bash

sqlplus -s $DATABASE > output << EOSQL 

SET FEEDBACK ON

declare

veventSource varchar2(20);
verrorcode integer;
verrorMessage varchar2(255);

begin

for rec in (select substr(customer,3) as pid, substr(account_num,1,2) as 
countrycode from account 
where substr(account_num,1,2) = substr(account_num,3,2)
and customernot in (select customer from custsource) )

loop

veventSource := rec.countrycode||'_'||rec.pid;
IPGDDL.LINKTOAC(rec.countrycode,rec.LID,veventSource,
'01-JAN-1971',null,'F',null,null,null,null,null,verrorcode,verrorMessage);
dbms_output.put_line(verrorcode);
dbms_output.put_line(verrorMessage);
commit;

end loop;

end;
/
EXIT

EOSQL

스크립트를 실행한 후 로그 파일이 있는데 PL/SQL Procedure completed successfully.

이 스크립트를 사용하여 cron 작업이 실행된 날짜와 시간이 포함된 디렉토리의 output.txt 파일에 SQL 출력을 인쇄하고 모든 이전 데이터를 로그에 유지하고 싶습니다.

이 문제를 해결하는 데 도움을 줄 수 있는 사람이 있나요?

답변1

sqlplus스크립트의 출력을 인쇄 하려면 다음을 사용할 수 있습니다.

set serveroutput on

~에서SQL*Plus® 사용자 안내서 및 참조:

DBMS_OUTPUT.PUT_LINESQL*Plus의 저장 프로시저 또는 PL/SQL 블록의 출력을 표시할지 여부를 제어합니다(예:

출력이 있어야 합니다.추가의리디렉션 연산자를 사용할 output.txt수 있습니다 .>>

sqlplus -s $DATABASE >>output.txt << EOSQL
...

연산자는 >파일의 오른쪽(존재하는 경우)을 0 크기로 자릅니다.
인용하다:배쉬 참조 매뉴얼(Bash가 #!/bin/bash스크립트 기반 shebang이라고 가정).

cron 작업의 실행 날짜와 시간을 포함하려면 다음을 추가하면 됩니다.

date >>output.txt

를 호출하기 전에 스크립트에 추가하세요 sqlplus.
사용 가능한 날짜 형식 옵션에 대해 알아보려면 시스템에 설치된 명령(예:)에 대한 설명서를 참조하세요 .dateman date

또는 -s옵션을 제거할 수 있습니다 sqlplus. 해당 출력에는 타임스탬프가 포함되어 실행 날짜/시간을 기록하기 위해 추가 명령을 사용할 필요가 없습니다(그러나 잠재적으로 원치 않는 여러 메시지도 포함됩니다).

관련 정보