본문 바로가기
IT 이야기 - About IT

[Shell] Oracle 10g 10.2.0.3 Archive File 저장 관련

by 회사원 주씨 2009. 6. 16.
반응형

현재 oracle 10g 10.2.0.3을 사용하고 있는데

설치하고 얼마 지나지 않아 oracle 디렉토리의 파일시스템이 꾸준히 증가되는 걸 발견했다.

확인 결과 일부 archive file이 지정된 디렉토리에 떨어지지 않고 특정 디렉토리에 있는 경우가 발생했다.

오라클쪽에 지원을 받아 봤지만 명쾌한 답을 듣지못해서

궁리를 해봤다. ㅡㅡㅋ

처음에는 매일 아침 수동으로 move해줬는데..귀차니즘에 쉘로 짜버린 것이다. ㅡㅡㅋ

그리고 매일 아침 cron에 등록시켜 해당 파일이 존재할 경우
 
각 파일에 맞게 원래 archive 디렉토리로 move할 수 있도록 했음~ㅎㅎ

추가로 매일 move한 기록들을 파일로 저장해서 추후 확인이 가능토록 했으며,

인스턴스가 무려 4개나 되기 때문에 생각보다 복잡한 작업이 된듯함.

#!/bin/ksh

#################################
# EDIT by HYETAEK                   #
# Last Update 20080401               #
#################################

DBU1_DIR=/archive/rac1/HLCDBU/                 ### DBU1 ARCHIVE path
DBK1_DIR=/archive/rac1/HLCDBK/                 ### DBK1 ARCHIVE path
DBU2_DIR=/archive/rac2/HLCDBU/                 ### DBU2 ARCHIVE path
DBK2_DIR=/archive/rac2/HLCDBK/                 ### DBK2 ARCHIVE path
ARCH_DIR=/oracle/ora10g/dbs                       ### THREAD ARCHIVE path

cd $ARCH_DIR

LIST=`ls | grep THREAD | grep -v grep`                       ### FILE SEARCH
LIST_CNT=`ls | grep THREAD | grep -v grep | wc -l`    ### FILE SEARCH COUNT
DATE=`date +"%Y%m%d"`

if [ $LIST_CNT -eq '0' ];
then
        echo $DATE' Archive files is empty' >> $ARCH_DIR/mv_list.txt
else
        echo $DATE' Archive File Move List' >> $ARCH_DIR/mv_list.txt

        for file in ${LIST}
        do

                newfile=$(echo $file | awk '{print substr($1,7)}')
                mvfile=$(echo $newfile | awk -F. '{print substr($1,length($1)-3)}')
                move_srv=$(echo $newfile | awk '{print substr($1,6,1)}')

                if [ $move_srv -eq '1' ];
                then
                        if [ $mvfile -eq '8486' ];
                        then
                                mv $file $DBU1_DIR$newfile
                                echo 'MOVE '$file' TO '$DBU1_DIR$newfile >> $ARCH_DIR/mv_list.txt
                        else
                                mv $file $DBK1_DIR$newfile
                                echo 'MOVE '$file' TO '$DBK1_DIR$newfile >> $ARCH_DIR/mv_list.txt
                        fi
                else
                        if [ $mvfile -eq '8486' ];
                        then
                                echo 'RCOPY '$file' TO HLCDB2:'$DBU2_DIR$newfile >> $ARCH_DIR/mv_list.txt
                                rcp $file HLCDB2:$DBU2_DIR$newfile
                                echo 'REMOVE '$file >> $ARCH_DIR/mv_list.txt
                                rm $file
                        else
                                echo 'RCOPY '$file' TO HLCDB2:'$DBK2_DIR$newfile >> $ARCH_DIR/mv_list.txt
                                rcp $file HLCDB2:$DBK2_DIR$newfile
                                echo 'REMOVE '$file >> $ARCH_DIR/mv_list.txt
                                rm $file
                        fi
                fi
        done
fi


허접한 실력으로 짠거라서 고수분들은 보고 욕하지 말아주세요..ㅠㅠ

728x90

'IT 이야기 - About IT' 카테고리의 다른 글

[Shell] 파일시스템 체크 쉘  (0) 2009.06.16
[HP-UX] FTP ACCESS 파일 설정 관련  (0) 2009.06.12
[ORACLE] Lock 확인 쿼리  (0) 2009.06.12