Site icon DBA의 정석

온라인 백업 스크립트 데이터파일/아카이브

# 데이터파일 백업과 archvie백업 쉘은 아래와 같습니다. 

1. begin backup할 스크립트를 수행합니다. 

dbbegin.sh 

TBS_INFO=/tmp/tbs_info~.$$ 

sqlplus /nolog << EOF > $TBS_INFO 2>&1 

connect / as sysdba; 

select ”tablespace ”||tablespace_name from dba_tablespaces; 

disconnect; 

exit 

EOF 

cat $TBS_INFO | awk ”$1 == “tablespace” { print $2 }” | while read LINE 

do 

export LINE 

echo “Issuing alter tablespace $LINE begin backup;” 

/usr/openv/netbackup/oracle/table_begin.sh 

done 

\rm $TBS_INFO 

2. 위에서의 table_begin.sh 는 아래와 같습니다. 

table_begin.sh 

sqlplus /nolog << EOF > /dev/null 2>&1 

connect / as sysdba; 

alter tablespace $LINE begin backup; 

disconnect; 

exit 

EOF 

3. dbbegin.sh 을 하게 되면 테이블스페이스가 backup mode가 됩니다. 

4. 데이터파일 리스트를 추출합니다. 

datafile_list 

#!/bin/ksh 

DATAFILE_INFO=/tmp/datafile_info~.$$ 

datafile_list=/tmp/PROD_data_list 

sqlplus /nolog << EOF > $DATAFILE_INFO 2>&1 

connect / as sysdba; 

select ”datafile_name ”||file_name from dba_data_files; 

select ”logfile_name ”||member from v\$logfile; 

select ”controlfile_name ”||name from v\$controlfile; 

disconnect 

EOF 

cat $DATAFILE_INFO | awk ”$1 == “datafile_name” {print $2}” 

> /tmp/PROD_dbfile_list 

cat $DATAFILE_INFO | awk ”$1 == “logfile_name” {print $2}” 

> /tmp/PROD_logfile_list 

cat $DATAFILE_INFO | awk ”$1 == “controlfile_name” {print $2}” 

> /tmp/PROD_controlfile_list 

cat /tmp/PROD_dbfile_list > $datafile_list 

cat /tmp/PROD_logfile_list >> $datafile_list 

cat /tmp/PROD_controlfile_list >> $datafile_list 

\rm $DATAFILE_INFO 

5. 데이터파일 리스트를 netbackup에서 tape백업을 하도록 합니다. 

veritas netbackup에서 리스트만 주면 백업해줌.. 

6. end backup 을 만드는 스크립트를 수행 

dbend.sh 

#!/bin/ksh 

TBS_INFO=/tmp/tbs_info~.$$ 

sqlplus /nolog << EOF > $TBS_INFO 2>&1 

connect / as sysdba; 

select ”tablespace ”||tablespace_name from dba_tablespaces; 

disconnect; 

exit 

EOF 

cat $TBS_INFO |awk ”$1 == “tablespace” { print $2 }”|while read LINE 

do 

export LINE 

echo “Issuing alter tablespace $LINE end backup;” 

/usr/openv/netbackup/oracle/table_end.sh 

done 

\rm $TBS_INFO 

7. 위에서 table_end.sh 는 아래와 같습니다. 

table_end.sh 

sqlplus /nolog << EOF > /dev/null 2>&1 

connect / as sysdba; 

alter tablespace $LINE end backup; 

disconnect; 

exit 

EOF 

6. archive log가 없을 수 있으므로 수동으로 log switch 해줍니다. 

arch_list_1 

#!/bin/ksh 

sqlplus /nolog << EOF > $LOG 

connect / as sysdba; 

alter system switch logfile; 

disconnect; 

exit; 

EOF 

7. archvie file의 리스트를 뽑아냅니다. 

arch_list 

#!/bin/ksh 

TBS_INFO=/tmp/tbs_info~.$$ 

ARCHIVE_DIR=/tmp/PROD_archive_dir.txt 

sqlplus /nolog << EOF > $LOG 2>&1 

connect / as sysdba; 

alter system switch logfile; 

disconnect; 

exit; 

EOF 

sqlplus /nolog << EOF > $TBS_INFO 2>&1 

connect / as sysdba; 

archive log list; 

disconnect; 

exit; 

EOF 

cat $TBS_INFO | awk ”$1 == “Archive” {print $3}” > $ARCHIVE_DIR 

ARCH_DIR=

cat $ARCHIVE_DIR

ARCH_LIST_PROD=

ls -ltr $ARCH_DIR/*.arc |wc -l

echo “ARCH_LIST_PROD : $ARCH_LIST_PROD” >> $LOG 

ARCH_LIST_PROD_1=

expr$ARCH_LIST_PROD – 1

echo “ARCH_LIST_PROD_1 : $ARCH_LIST_PROD_1” >> $LOG 

/usr/bin/ls -ltr $ARCH_DIR/*.arc |awk ”{print $9}” |head – 

$ARCH_LIST_PROD_1 > /tmp/PROD_arch_list 

echo “Archive Log List Print…..O.k….

/usr/bin/date +%c

” >> $LOG 

#\rm $TBS_INFO $ARCHIVE_DIR 

8. 위에서 /tmp/PROD_arch_list에 있는 archive리스트를 veritas netbackup에서 넣어주면 tape백업이 됩니다.그리고 특이한 것은 archvie file은 archive file을 백업했으면 지우도록 설정

Exit mobile version