誰でも私を助けることができますか?私の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はこのシェルを標準シェルとして使用するため