Windows 오라클 Hot backup 자동 백업, 삭제 배치파일 만들기
작성일: 2007년 2월 22일
제2탄 Win오라클 Hot backup 자동 백업,삭제
Windows 환경에서 오라클 백업 솔루션 없이 오라클을 사용하시거나
RMAN을 사용하는 것이 부담스러운 분들을 위해서 만들어봤습니다.
부족하지만 여러분께 도움이 되길 바랍니다.
그리고 써보시고 문제점이나 불편한점, 좋은점 있으시면 리플달아주세요~
파일 설명
hot1.bat - %BACKUP_PATH%\1 디렉토리의 파일이 삭제되고 hotbackup1.sql이 수행된다.
hot2.bat - %BACKUP_PATH%\2 디렉토리의 파일이 삭제되고 hotbackup2.sql이 수행된다.
hot3.bat - %BACKUP_PATH%\3 디렉토리의 파일이 삭제되고 hotbackup3.sql이 수행된다.
hotbackup1,2,3.sql - hot backup 수행
장점
배치파일이 수행될 때 백업될 디렉토리의 파일이 먼저 삭제되고 백업이 이루어지기 때문에 더 이상 Disk가 꽉 차는 현상(Disk Full)을 막을 수 있다.
hot1.bat, hot2.bat, hot3.bat를 수행할 경우 항상 3벌의 Backup Set을 보유한다.
(hot1.bat, hot2.bat만 수행할 경우 2벌의 Backup Set을 보유한다.)
단점? 고려사항?
Database files의 Size가 클 경우 로컬 디스크에 3벌의 백업을 보유할 수 없기 때문에 hot1.bat, hot2.bat 만 수행하던지 hot1.bat 만 수행하도록 한다.
혹은 hot1.bat 만 수행하고 충분한 Disk 공간이 있는 원격지로 FTP 전송한다.
1. 배치파일 만들기
시작 --> 실행 --> notepad 실행하여 각각 배치파일의 내용을 붙여넣기 한 다음 설정된 파일 이름으로 변경한다.
(저장경로 E:\BACKUP\HOT\)
* BACKUP_PATH 는 Hot Backup 받을 공간이 충분한 영역으로 설정하세요
hot1.bat
set oracle_sid=ORCL
SET BACKUP_PATH=E:\BACKUP\HOT
for %%i in (%BACKUP_PATH%\1\*) do DEL %%i%
D:\oracle\ora90\bin\sqlplus /nolog @E:\BACKUP\HOT\hotbackup1.sql
hot2.bat
set oracle_sid=ORCL
SET BACKUP_PATH=E:\BACKUP\HOT
for %%i in (%BACKUP_PATH%\2\*) do DEL %%i%
D:\oracle\ora90\bin\sqlplus /nolog @E:\BACKUP\HOT\hotbackup2.sql
hot3.bat
set oracle_sid=ORCL
SET BACKUP_PATH=E:\BACKUP\HOT
for %%i in (%BACKUP_PATH%\3\*) do DEL %%i%
D:\oracle\ora90\bin\sqlplus /nolog @E:\BACKUP\HOT\hotbackup3.sql
2. Hot backup sql문 만들기
* Tablespace명, Datafile 경로는 여러분의 환경에 맞게 수정하세요
hotbackup1.sql
connect sys/manager as SYSDBA
set echo on
spool E:\BACKUP\HOT\1\hotbackup_1.log
alter system switch logfile;
alter tablespace SYSTEM begin backup;
host D:\oracle\ora92\bin\ocopy.exe D:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF E:\BACKUP\HOT\1\SYSTEM01.DBF
alter tablespace SYSTEM end backup;
alter tablespace MHKANG begin backup;
host D:\oracle\ora92\bin\ocopy.exe D:\ORACLE\ORADATA\ORCL\MHKANG.DBF E:\BACKUP\HOT\1\MHKANG.DBF
alter tablespace MHKANG end backup;
alter tablespace UNDOTBS begin backup;
host D:\oracle\ora92\bin\ocopy.exe D:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF E:\BACKUP\HOT\1\UNDOTBS01.DBF
alter tablespace UNDOTBS end backup;
alter tablespace USERS begin backup;
host D:\oracle\ora92\bin\ocopy.exe D:\ORACLE\ORADATA\ORCL\USER01.DBF E:\BACKUP\HOT\1\USER01.DBF
alter tablespace USERS end backup;
alter database backup controlfile to trace;
alter database backup controlfile to 'E:\BACKUP\HOT\1\control1.bak' reuse;
alter system switch logfile;
spool off
exit;
hotbackup2.sql
connect sys/manager as SYSDBA
set echo on
spool E:\BACKUP\HOT\2\hotbackup_2.log
alter system switch logfile;
alter tablespace SYSTEM begin backup;
host D:\oracle\ora92\bin\ocopy.exe D:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF E:\BACKUP\HOT\2\SYSTEM01.DBF
alter tablespace SYSTEM end backup;
alter tablespace MHKANG begin backup;
host D:\oracle\ora92\bin\ocopy.exe D:\ORACLE\ORADATA\ORCL\MHKANG.DBF E:\BACKUP\HOT\2\MHKANG.DBF
alter tablespace MHKANG end backup;
alter tablespace UNDOTBS begin backup;
host D:\oracle\ora92\bin\ocopy.exe D:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF E:\BACKUP\HOT\2\UNDOTBS01.DBF
alter tablespace UNDOTBS end backup;
alter tablespace USERS begin backup;
host D:\oracle\ora92\bin\ocopy.exe D:\ORACLE\ORADATA\ORCL\USER01.DBF E:\BACKUP\HOT\2\USER01.DBF
alter tablespace USERS end backup;
alter database backup controlfile to trace;
alter database backup controlfile to 'E:\BACKUP\HOT\2\control2.bak' reuse;
alter system switch logfile;
spool off
exit;
hotbackup3.sql
connect sys/manager as SYSDBA
set echo on
spool E:\BACKUP\HOT\3\hotbackup_3.log
alter system switch logfile;
alter tablespace SYSTEM begin backup;
host D:\oracle\ora92\bin\ocopy.exe D:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF E:\BACKUP\HOT\3\SYSTEM01.DBF
alter tablespace SYSTEM end backup;
alter tablespace MHKANG begin backup;
host D:\oracle\ora92\bin\ocopy.exe D:\ORACLE\ORADATA\ORCL\MHKANG.DBF E:\BACKUP\HOT\3\MHKANG.DBF
alter tablespace MHKANG end backup;
alter tablespace UNDOTBS begin backup;
host D:\oracle\ora92\bin\ocopy.exe D:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF E:\BACKUP\HOT\3\UNDOTBS01.DBF
alter tablespace UNDOTBS end backup;
alter tablespace USERS begin backup;
host D:\oracle\ora92\bin\ocopy.exe D:\ORACLE\ORADATA\ORCL\USER01.DBF E:\BACKUP\HOT\3\USER01.DBF
alter tablespace USERS end backup;
alter database backup controlfile to trace;
alter database backup controlfile to 'E:\BACKUP\HOT\3\control3.bak' reuse;
alter system switch logfile;
spool off
exit;
3. 작업 예약 설정하기
매주 일요일 새벽 1시에 Hot backup 받는 작업 예약하기
C:\> at 01:00 /every:Su D:\ORA_BACKUP\hot1.bat
매주 화요일 새벽 1시에 Hot backup 받는 작업 예약하기
C:\> at 01:00 /every:T D:\ORA_BACKUP\hot2.bat
매주 목요일 새벽 1시에 Hot backup 받는 작업 예약하기
C:\> at 01:00 /every:Th D:\ORA_BACKUP\hot3.bat
AT 명령 변수 설명
/every: date ,... :
이 매개 변수를 사용하여 매주 금요일이나 매월 8일처럼
지정된 요일이나 날짜에 작업을 실행하도록 예약합니다.
하나 이상의 요일(다음 약자 사용: M,T,W,Th,F,S,Su)이나
하나 이상의 날짜(숫자 1 - 31 사용)로 date를 지정합니다.
쉼표를 사용하여 여러 날짜 항목을 구분해야 합니다.
이 매개 변수를 생략하면 현재 날짜에 작업이 실행되도록 예약됩니다.