[Oracle] exp full backup 스크립트 작성

HYEOB KIM·2023년 3월 21일
0

Oracle

목록 보기
37/58

exp full backup 스크립트 작성

  • Linux에서 주중(월~금) 오전 1시 마다 export_full.sh 파일 실행
  • crontab을 실행하는 주체는 root입니다.
  • exp를 실행하는 주체는 oracle입니다.
  • 덤프파일이 저장되는 경로는 /ora_backup입니다.
  • 덤프파일, 로그파일 이름은 exp_full_<오늘날짜>입니다.(date 옵션 정보)
  • 수정된지 1일이 지난 덤프파일과 로그파일은 삭제합니다. (리눅스 명령어로 오래된 파일 삭제하기)

1) 스크립트 작성

# cd /ora_backup
# vi export_full.sh
...
#!/bin/bash

TODAY=`date +%y%m%d`
EXP_PATH='/ora_backup'
DMPFILE=${EXP_PATH}/exp_full_${TODAY}.dmp
LOGFILE=${EXP_PATH}/exp_full_${TODAY}.log

# oracle 유저로 exp 명령 실행
su - oracle -c "exp \'/ as sysdba\' file=${DMPFILE} log=${LOGFILE} full=y"

# 해당 디렉토리 안에서 수정된지 1일 이상된 파일을 찾아서 삭제
find ${EXP_PATH} -name *.dmp -mtime +1 -exec rm {} \;
find ${EXP_PATH} -name *.log -mtime +1 -exec rm {} \;
...

2) crontab 등록

  • 주중(월~금) 오전 1시 마다 export_full.sh 파일 실행
# crontab -e

* 1 * * 1-5 /ora_backup/export_full.sh

테스트

  • 간단하게 테스트 해보기 위해 조건을 수정했습니다.
  • 1분 마다 export_full.sh을 실행합니다.
  • 덤프파일, 로그파일 이름은 중복 방지를 위해 시,분,초까지 추가했습니다. (date 옵션 정보)
  • 수정된지 1분이 지난 덤프파일과 로그파일은 삭제합니다. (리눅스 명령어로 오래된 파일 삭제하기)

1) 스크립트 작성

# cd /ora_backup
# vi export_full.sh
...
#!/bin/bash

TODAY=`date +%y%m%d%H%M%S`
EXP_PATH='/ora_backup'
DMPFILE=${EXP_PATH}/exp_full_${TODAY}.dmp
LOGFILE=${EXP_PATH}/exp_full_${TODAY}.log

# oracle 유저로 exp 명령 실행
su - oracle -c "exp \'/ as sysdba\' file=${DMPFILE} log=${LOGFILE} full=y"

# 간간히 이전 백업 파일이 남아있는 것을 볼 수 있는데, 이는 파일이 미세하게 1분이 지나지 않아 삭제되지 않는 듯 합니다. 그래서 sleep을 인위적으로 줍니다
sleep 3

# 해당 디렉토리 안에서 수정된지 1분 이상된 파일을 찾아서 삭제
find ${EXP_PATH} -name *.dmp -mmin +1 -exec rm {} \;
find ${EXP_PATH} -name *.log -mmin +1 -exec rm {} \;
...

2) crontab 등록

  • 1분 마다 export_full.sh을 실행합니다.
# crontab -e

*/1 * * * * /ora_backup/export_full.sh

3) 테스트 결과

  • 1분 마다 스크립트가 실행되면서 export 백업을 받음을 확인합니다.

profile
Devops Engineer

0개의 댓글