누구든지 나를 도와줄 수 있나요? 내 cron 작업에서 출력이 포함된 이메일을 보내지 않습니다. 쉘 스크립트를 수동으로 실행하면 출력이 포함된 이메일이 생성됩니다.
스크립트의 모습은 다음과 같습니다.
#!/bin/bash
MAILLIST=<email>
LogDirectory='/app/oracle/admin/monitor/'
DBUSER='rman'
DBUSERPASSWORD='rman01'
DB='pdcatdb'
SUBJECT="RMAN Backup Status Report"
ORACLE_HOME=/app/oracle/product/12.1.0.2_64
${ORACLE_HOME}/bin/sqlplus -s <<EOF > ${LogDirectory}/query.log
${DBUSER}/${DBUSERPASSWORD}@${DB}
set pagesize 20000
set linesize 2000
set wrap off
set trimspool on
set feedback off
set echo off
set termout off
set heading off
set underline off
set colsep ','
SELECT RTRIM(A.DB_NAME)||'---->'||
LTRIM(A.STATUS) "BACKUP_STATUS"
FROM rman.RC_RMAN_STATUS A,
( SELECT DB_NAME, OBJECT_TYPE, MAX (END_TIME) END_TIME
FROM rman.RC_RMAN_STATUS
--WHERE OBJECT_TYPE IN ('DB FULL', 'DB INCR')
WHERE OBJECT_TYPE IN ('DB INCR')
AND STATUS IN ('COMPLETED', 'COMPLETED WITH ERRORS', 'FAILED')
AND OPERATION IN ('BACKUP', 'BACKUP COPYROLLFORWARD')
GROUP BY DB_NAME, OBJECT_TYPE) B
WHERE A.OBJECT_TYPE IN ('DB FULL', 'DB INCR', 'ARCHIVELOG')
AND STATUS IN ('COMPLETED', 'COMPLETED WITH ERRORS', 'FAILED')
AND OPERATION IN ('BACKUP', 'BACKUP COPYROLLFORWARD')
AND A.DB_NAME = B.DB_NAME
AND A.END_TIME = B.END_TIME
AND A.OBJECT_TYPE = B.OBJECT_TYPE
AND A.end_time > sysdate-7
order by 1
/
EOF
mailx -s "Rman Backup Report" <email> < /app/oracle/admin/monitor/query.log
답변1
이러한 환경 변수는 ${ORACLE_HOME}
bash 구성 파일에 있을 수 있습니다. cron을 통해 자동으로 읽혀지지 않습니다.
#!/bin/bash 뒤에 다음 줄을 삽입하세요.
source /home/user/.bash_profile
답변2
죄송합니다. Google에서 검색했기 때문에 이것을 부활시켜야 했고 간단한 해결책은 (적어도 내 경우에는) shebang을 사용하는 것이었습니다.
#!/bin/csh
orasid는 이 쉘을 표준 쉘로 사용하기 때문에