##5개의 스크립트는 리눅스 버전입니다. 솔직히 잘모르겠습니다 뭐가 어떻게 작동되는지...옆에 약간의 주석으로 설명좀 부탁드립니다.
그리고 윈도우버전으로도 만들어주시면 감사하겠습니다. 도움요청합니다.꾸벅.
1.main_backup.sh
export LANG=C
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10g
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=testdb
touch /home/oracle/total.log
echo ""
echo "set begin backup mode~~"
time sh /home/oracle/begin_backup.sh >> /home/oracle/total.log
echo ""
echo "end begin backup mode~~"
echo ""
echo"start file copy....................."
time sh /home/oracle/copy_backup.sh >> /home/oracle/total.log
echo "end file copy~"
echo ""
echo "set end backup mode~~"
time sh /home/oracle/end_backup.sh >> /home/oracle/total.log
echo "complete hot backup~!"
2.begin_backup.sh
export LANG=C
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10g
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=testdb
sqlplus /nolog < conn / as sysdba
set head off
set feedback off
set time off
set timing off
set echo off
spool /tmp/online.tmp
select 'alter tablespace '|| tablespace_name ||' begin backup;' \
from dba_tablespaces \
where status='ONLINE' \
and contents != 'TEMPORARY';
spool off
!cat /tmp/online.tmp | egrep -v spool | egrep -v SQL | egrep -v [2-4] >
/home/oracle/begin.sh
@/home/oracle/begin.sh
!sh /home/oracle/status.sh
exit
EOF1
3.copy_backup.sh
export LANG=C
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10g
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=testdb
sqlplus /nolog < conn / as sysdba
set head off
set time off
set timing off
set feedback off
set echo off
set line 200
col name for a100
spool /home/oracle/cp.tmp
select 'mkdir /data/backup/open/'||to_char(sysdate,'YYYY-MM-DD-HH24-MI-SS') from dual;
select 'cp -av '||name||' /data/backup/open/'||to_char(sysdate,'YYYY-MM-DD-HH24-MI-SS') "name" from v\$datafile;
spool off
spool /home/oracle/control.tmp
alter session set nls_date_format='YYYY-MM-DD-HH24-MI-SS';
select 'alter database backup controlfile to ' '/data/backup/open/'||sysdate||\'\'||sysdate||'.ctl' ' ; ' from dual;
spool off
!cat /home/oracle/cp.tmp | egrep -v SQL > /home/oracle/cp.sh
!cat /home/oracle/control.tmp | egrep -v SQL > /home/oracle/control.sql
!sh /home/oracle/cp.sh
@/home/oracle/control.sql
EOF3
4.end_backup.sql
export LANG=C
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10g
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=testdb
sqlplus /nolog << EOF4
conn / as sysdba
set head off
set feedback off
set time off
set timing off
set echo off
spool /tmp/online.tmp
select 'alter tablespace '|| tablespace_name ||' end backup;' \
from dba_tablespaces \
where status='ONLINE' \
and contents != 'TEMPORARY';
spool off
!cat /tmp/online.tmp | egrep -v spool | egrep -v SQL | egrep -v [2-4] >
/home/oracle/end.sh
@/home/oracle/end.sh
!sh /home/oracle/status.sh
exit
EOF4
5.status.sh <---begin backup 모드 상태를 보는
export LANG=C
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10g
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=testdb
sqlplus /nolog < conn / as sysdba
set head on
set echo off
set feedback off
spool /tmp/status.tmp
set line 200
col name for a50
col status for a15
select a.file#,a.name,b.status,to_char(b.time,'YYYY-MM-DD:HH24:Mi,SS')
"Time" \
from v\$datafile a,v\$backup b \
where a.file#=b.file#;
spool off
exit
EOF2 |