我有一个rman脚本,它在执行它时可以工作(./backup.sh)。但是当我使用cronjob时,它就不起作用了。我的脚本如下
backup.sh
rman target / @backup.rcv log=rman.log
backup.rcv
backup format '/backup/rman/backup/%U.arch.rman' filesperset 2 archivelog all delete input; backup format '/backup/rman/backup/%U.datafiles.rman' filesperset 2 incremental level 0 database; backup format '/backup/rman/backup/%U.arch.rman' filesperset 2 archivelog all delete input; backup format '/backup/rman/backup/%U.ctl.rman' current controlfile; delete noprompt obsolete;
我的职位看起来像这样
crontab -l
5 0 * * * /nas_backup/rman/svbo/backup/L0backup.sh >/dev/null 2>&1
我对这个rman和bash脚本非常陌生,所以任何帮助都将不胜感激。
发布于 2022-06-15 03:28:30
为了修复这个问题,将"L0backup.sh“中的代码替换为
#!/bin/bash
#
export ORACLE_SID=your-sid
export ORACLE_HOME=your-oracle-home
$ORACLE_HOME/bin/rman target / nocatalog <<EOF
backup format '/nas_backup/rman/backup/%U.arch.rman' filesperset 2 archivelog all delete input;
backup format '/nas_backup/rman/backup/%U.datafiles.rman' filesperset 2 incremental level 0 database;
backup format '/nas_backup/rman/backup/%U.arch.rman' filesperset 2 archivelog all delete input;
backup format '/nas_backup/rman/backup/%U.ctl.rman' current controlfile;
delete noprompt obsolete;
EOF要得到你的ORACLE_SID和ORACLE_HOME,你可以像
#echo $ORACLE_SID
your-sid
# echo $ORACLE_HOME
your-oracle-home接下来设置您的crontab -假设您希望上面的文件每午夜运行一次(Crontab Guru)
#crontab -e
5 0 * * * /bin/bash /nas_backup/rman/backup/L0backup.sh > /nas_backup/rman/backup/rman.log 2>&1如果您注意到您的输出被标记为"rman.log“。
此外,您现在可以删除"backup.rcv“文件,因为它不再被使用。
发布于 2022-04-06 14:52:47
第01步。创建具有以下内容的备份脚本(根据您的需要对其进行修改)
#!/bin/sh
#
# Run as: oracle
#
export ORACLE_SID=orcl
export ORACLE_HOME=/oradb/oraclebase/dbhome
rman target / << EOI
# Allocating channels (should equal number of physical CPU #lscpu)
ALLOCATE CHANNEL CH1 DEVICE TYPE DISK;
ALLOCATE CHANNEL CH2 DEVICE TYPE DISK;
# change into the highest rate compression - required license
CONFIGURE COMPRESSION ALGORITHM 'HIGH' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD FALSE;
# validate physical existence of backupset & copy
CROSSCHECK BACKUPSET;
CROSSCHECK COPY;
# removing metadata of "EXPIRED" info from the catalog
DELETE NOPROMPT EXPIRED BACKUPSET;
DELETE NOPROMPT EXPIRED COPY;
# Backup full database (incremental level 0) on Sunday
BACKUP AS COMPRESSED BACKUPSET INCREMENTAL LEVEL 0 DATABASE FORMAT '/backup/%d_full_level_0_%U.bak';
#incremental level 1 on the other days not Sunday
#enabling block change tracking if you want level 1 goes fast
#BACKUP AS COMPRESSED BACKUPSET INCREMENTAL LEVEL 1 DATABASE FORMAT '/backup/%d_full_level_1_%U.bak';
# Backup archivelog log
BACKUP AS COMPRESSED BACKUPSET ARCHIVELOG ALL DELETE INPUT FORMAT '/backup/%_ARCHIVE_%U.bak';;
# Clean obsolete backups depending on setting of retention policy
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
DELETE NOPROMPT OBSOLETE;
# Allocated channel will release automatically ;)
exit
EOI
exit步骤02:更改所有者和权限步骤03:为该脚本设置crontab作业。
https://stackoverflow.com/questions/71743273
复制相似问题