Linux 에서 oracle rman backup 자동화 (crontab)

현스·2025년 2월 6일
0

backup script

목록 보기
3/11
post-thumbnail

🛠 1: RMAN 백업 스크립트 생성

백업을 수행할 RMAN 스크립트 (rman_backup.sh)를 생성한다.

📌 1-1. 스크립트 생성 및 편집

터미널에서 아래 명령어를 실행하여 스크립트를 생성

vi /home/oracle/hot/script/rman_backup.sh

📌 1-2. 아래 내용을 추가

파일이 열리면 아래 내용을 복사해서 추가한다.

#!/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

🛠 2: 실행 권한 부여 및 테스트

스크립트를 실행하려면 실행 권한을 추가한다.

chmod +x /home/oracle/hot/script/rman_backup.sh

📌 백업 테스트 실행

아래 명령어를 사용하여 수동으로 백업이 정상 작동하는지 확인합니다.

/home/oracle/hot/script/rman_backup.sh

🚀 실행 후 /home/oracle/hot/script/rman/rman_YYYYMMDDHHMM.log 파일이 생성되었는지 확인

🛠 3: Crontab에 자동 실행 설정

이제 이 백업 스크립트를 매일 새벽 6시에 자동 실행되도록 크론 작업을 추가합니다.

📌 3-1. Crontab 편집

터미널에서 아래 명령어를 실행

crontab -e

📌 3-2. Crontab에 스케줄 추가

파일이 열리면 맨 아래 다음 줄을 추가

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 → 실행 로그를 파일에 저장 (에러 포함)

📌 3-3. 저장 후 종료

vi 사용 시: Esc → :wq → Enter
nano 사용 시: Ctrl + X → Y → Enter

📌 3-4. Crontab 등록 확인

아래 명령어를 실행하여 크론 작업이 정상적으로 등록되었는지 확인

crontab -l
🚀 새롭게 추가한 크론 작업이 출력되면 정상 등록된 것

🛠 4: Crontab 서비스 활성화 (필요한 경우)

크론 서비스가 비활성화된 경우 실행하도록 설정

# 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시에 자동 실행됩니다! 🚀
⚡ 백업 로그를 주기적으로 확인하여 정상 동작하는지 점검하세요. 💾


profile
˗ˋˏ O R A C L E ˎˊ˗

0개의 댓글