백업을 수행할 RMAN 스크립트 (rman_backup.sh)를 생성한다.
터미널에서 아래 명령어를 실행하여 스크립트를 생성
vi /home/oracle/hot/script/rman_backup.sh
파일이 열리면 아래 내용을 복사해서 추가한다.
#!/bin/bash
# rman_backup.sh - Oracle RMAN 자동 백업 스크립트
# 수정: 환경 변수 변경 및 경로 수정
#===================================================================
# Oracle Environment Setting:
#===================================================================
umask 022
# 새로운 ORACLE 환경 변수 설정
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19c/db_home
export ORACLE_SID=orcl
export TNS_ADMIN=$ORACLE_HOME/network/admin
#===================================================================
# PATH Setting:
#===================================================================
export PATH=$ORACLE_HOME/bin:$PATH
export PATH=$ORACLE_HOME/OPatch:$PATH
export PATH=$PATH:$HOME/.local/bin:$HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
#===================================================================
# Backup Directory 설정:
#===================================================================
export BKDIR=/home/oracle/hot/script/rman
export BKDIROLD=/home/oracle/hot/script/rman_old
mkdir -p $BKDIR
mkdir -p $BKDIROLD
# 백업 파일명에 사용할 날짜 설정
export date=`date '+%Y%m%d%H%M'`
# 이전 백업 로그 파일 이동
mv $BKDIR/rman*.log $BKDIROLD/
# 백업 시작 로그 기록
echo "Rman Backup Start Time : `date` ------------------------ Start"
echo "Rman Backup Start Time : `date` ------------------------ Start " >> $BKDIR/rman_$date.log
# RMAN 백업 실행
rman target / << EOF >> $BKDIR/rman_$date.log
run
{
CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
CONFIGURE MAXSETSIZE TO UNLIMITED;
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '$BKDIR/%d_%U_FULL_database_%T.bk';
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '$BKDIR/db_ctl_%F';
CROSSCHECK ARCHIVELOG ALL;
DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
BACKUP AS BACKUPSET database PLUS ARCHIVELOG;
CROSSCHECK BACKUP;
DELETE NOPROMPT BACKUPSET COMPLETED BEFORE 'SYSDATE-7';
DELETE NOPROMPT ARCHIVELOG UNTIL TIME 'SYSDATE-8';
}
quit;
EOF
# 백업 종료 로그 기록
echo "Rman Backup End Time : `date` ------------------------ End "
echo "Rman Backup End Time : `date` ------------------------ End " >> $BKDIR/rman_$date.log
crontab -e
0 6 * * * /home/oracle/hot/script/rman_backup.sh >> /home/oracle/hot/script/rman_backup_cron.log 2>&1
스크립트를 실행하려면 실행 권한을 추가한다.
chmod +x /home/oracle/hot/script/rman_backup.sh
아래 명령어를 사용하여 수동으로 백업이 정상 작동하는지 확인합니다.
/home/oracle/hot/script/rman_backup.sh
🚀 실행 후 /home/oracle/hot/script/rman/rman_YYYYMMDDHHMM.log 파일이 생성되었는지 확인
이제 이 백업 스크립트를 매일 새벽 6시에 자동 실행되도록 크론 작업을 추가합니다.
터미널에서 아래 명령어를 실행
crontab -e
파일이 열리면 맨 아래 다음 줄을 추가
0 6 * * * /home/oracle/hot/script/rman_backup.sh >> /home/oracle/hot/script/rman_backup_cron.log 2>&1
📌 설명
0 6 * * * → 매일 새벽 6시 정각에 실행
/home/oracle/hot/script/rman_backup.sh → 실행할 백업 스크립트 경로
>> /home/oracle/hot/script/rman_backup_cron.log 2>&1 → 실행 로그를 파일에 저장 (에러 포함)
vi 사용 시: Esc → :wq → Enter
nano 사용 시: Ctrl + X → Y → Enter
아래 명령어를 실행하여 크론 작업이 정상적으로 등록되었는지 확인
crontab -l
🚀 새롭게 추가한 크론 작업이 출력되면 정상 등록된 것
크론 서비스가 비활성화된 경우 실행하도록 설정
# RHEL, CentOS, Oracle Linux
systemctl start crond
systemctl enable crond # 재부팅 시 자동 실행 설정
# Ubuntu, Debian
service cron start
service cron enable # 재부팅 시 자동 실행 설정
cat /home/oracle/hot/script/rman_backup_cron.log
ls -lh /home/oracle/hot/script/rman/
이제 RMAN 백업 스크립트가 매일 새벽 6시에 자동 실행됩니다! 🚀
⚡ 백업 로그를 주기적으로 확인하여 정상 동작하는지 점검하세요. 💾