문서유형ㅣ기술정보
분야ㅣ관리/환경설정
적용제품버전ㅣ7FS02PS
문서번호ㅣTADTI110
개요
TAS 또는 filesystem에 저장된 archive log를 tbrmgr를 활용하여 보관일 이상의 archive log를 삭제하는 스크립트 입니다.
방법
스크립트
$ vi delete_archivelog.sh
#!/bin/sh
USERNAME=sys
PASSWORD=tibero
TB_SID=t724
INTERVAL_DAY=14
LOG_DIR=/home/tibero/
LOG_NAME=archive_delete_`date "+%Y%m%d"`.log
export TB_HOME=/home/tibero/tibero7
export PATH=$TB_HOME/bin:$TB_HOME/client/bin:$PATH
export LD_LIBRARY_PATH=$TB_HOME/lib:$TB_HOME/client/lib:$LD_LIBRARY_PATH
export TB_SID=${TB_SID}
BEFORETIME=`date -d "-${INTERVAL_DAY} days" +%Y%m%d%H%M%S`
mkdir -p $LOG_DIR
echo 'begin delete archivelogs.' > $LOG_DIR/$LOG_NAME
echo >> $LOG_DIR/$LOG_NAME
echo 'running command : tbrmgr delete --userid '${USERNAME}'/'${PASSWORD}'@'${TB_SID}' --cf-only --archivelog --beforetime '${BEFORETIME}'' >> $LOG_DIR/$LOG_NAME
tbrmgr delete --userid ${USERNAME}/${PASSWORD}@${TB_SID} --cf-only --archivelog --beforetime ${BEFORETIME} >> $LOG_DIR/$LOG_NAME
echo >> $LOG_DIR/$LOG_NAME
echo 'running command : tbrmgr delete --userid '${USERNAME}'/'${PASSWORD}'@'${TB_SID}' --archivelog --beforetime '${BEFORETIME}'' >> $LOG_DIR/$LOG_NAME
tbrmgr delete --userid ${USERNAME}/${PASSWORD}@${TB_SID} --archivelog --beforetime ${BEFORETIME} >> $LOG_DIR/$LOG_NAME
echo >> $LOG_DIR/$LOG_NAME
echo 'end delete archivelogs.' >> $LOG_DIR/$LOG_NAME
$ sh delete_archivelog.sh 참고
- tbrmgr로 archive log 삭제 시 조건에 해당하는 archive log의 list를 controlfile에 저장된 v$archived_log에서 확인 합니다.
- os의 rm 명령으로 archive log를 삭제 시, controlfile에는 변경 사항이 반영 되지 않아 tbrmgr로 archive log 삭제 시 이미 rm 명령으로 삭제된 archive log를 찾게 되어 (-1138) 에러가 발생 됩니다.
- 이를 해결하기 위해 tbrmgr의 --cf-only 옵션을 사용하여 rm 명령으로 삭제된 archive log 정보를 controlfile에서 삭제하면 tbrmgr로 archive log 삭제 시 (-1138) 에러가 발생 되지 않습니다.
- tbrmgr의 --cf-only 옵션은 물리적인 파일은 삭제하지 않고 controlfile에서만 정보를 삭제하는 기능입니다.
- archive log sequence가 256 이상에서 --cf-only 기능을 사용하여도 controlfile에서 정리가 되지 않는 현상이 발생 되므로 344835b 이상 패치를 적용 합니다.
주의티맥스티베로에서 제공하는 기술지원을 통해 패치를 적용합니다.