Windows 오라클 Hot backup 자동 백업, 삭제 배치파일 만들기
 
 
작성자: 강명호 (myungho@empal.com   www.mhkang.info)
작성일: 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 경로는 여러분의 환경에 맞게 수정하세요
tablespace, datafile명은 http://blog.empas.com/myungho/5577095  참조하세요
 
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를 지정합니다.
쉼표를 사용하여 여러 날짜 항목을 구분해야 합니다.
이 매개 변수를 생략하면 현재 날짜에 작업이 실행되도록 예약됩니다.
2009/03/19 14:47 2009/03/19 14:47

No. 21525

10G: TRANSPORTABLE TABLESPACES ACROSS DIFFERENT PLATFORMS

=============================================================



Purpose
-------
이 자료에서는 서로 다른 Platform 으로 Tablespaces 를 transport 하는 방법에 대해
설명하고자 한다.



Explanation
-----------
10g 에서는 서로 다른 platform 으로 tablespace 를 transport 할 수 있으며
transport 가능한 platform 정보는 다음과 같다.


SQL> select * from v$transportable_platform;

PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
----------- ------------------------------ --------------
1 Solaris[tm] OE (32-bit) Big
2 Solaris[tm] OE (64-bit) Big
7 Microsoft Windows NT Little
10 Linux IA (32-bit) Little
6 AIX-Based Systems (64-bit) Big
3 HP-UX (64-bit) Big
5 HP Tru64 UNIX Little
4 HP-UX IA (64-bit) Big
11 Linux IA (64-bit) Little
15 HP Open VMS Little
8 Microsoft Windows IA (64-bit) Little
9 IBM zSeries Based Linux Big
13 Linux 64-bit for AMD Little
16 Apple Mac OS Big
12 Microsoft Windows 64-bit for AMD Little


10g 이전 version 까지는 동일한 platform 에 대해서만 지원하였으며 10g 에서는
서로 다른 platform 에서도 tablespace 이동이 가능하도록 지원하고 있다.

Transportable Tablespaces 가 사용되어지는 사례는 다음과 같다.

1. 다른 platform 으로 database 를 migration 하고자 할때
2. 서로 다른 platform 의 DW 환경에서 Distribute data 를 data marts 로 이동을 원할 경우
3. Publish structured data 를 기존과 다른 platforms 으로 통합하고자 할 경우 등 입니다.

Transportable Tablespaces 를 위단 Step 은 다음과 같습니다.

1. Tablespace 를 READ ONLY 상태로 변경한다.

SQL> alter tablespace REPOSIT read only;
Tablespace altered.


2. Metadata 를 다음 과 같이 export 한다.

$ exp userid=\'/ as sysdba\' transport_tablespace=y
tablespaces=reposit
file=tts.dmp log=exp_tts.log
statistics=none

Export: Release 10.1.0.1.0 - Beta on Mon Nov 24 11:49:49 2003
...

Note: table data (rows) will not be exported
About to export transportable tablespace metadata...
For tablespace REPOSIT ...
. exporting cluster definitions
. exporting table definitions
. . exporting table MTG_COL_DEP_CHG
. . exporting table MTG_DATABASES
....
. . exporting table SYBASE11_SYSUSERS
. exporting referential integrity constraints
. exporting triggers
. end transportable tablespace metadata export
Export terminated successfully without warnings.


3. 이동하고자 하는 target database platform 의 ENDIAN_FORMAT 정보를 확인한다.
Case 1 의 경우는 query 결과 ENDIAN_FORMAT 이 같은 상태로 conversion 필요 없이
Tablespaces 이동이 가능하고 Case 2 의 경우에는 ENDIAN_FORMAT 이 다른 경우로
ENDIAN_FORMAT conversion 을 위해 RMAN 을 이용하여 아래와 같이 추가적인 작업이 필요하다.

Case 1
------
The source platform is Sun SPARC Solaris: endianness Big
The target platform is HP-UX (64-bit): endianness Big

SQL> select PLATFORM_ID , PLATFORM_NAME from v$database;

PLATFORM_ID PLATFORM_NAME
----------- ------------------------------
3 HP-UX (64-bit)


No conversion needed.


Case 2
------
The source platform is Microsoft WIndows NT: endianness Little
The target platform is HP-UX (64-bit): endianness Big

다음과 같이 endian format 이 다른 상태에서 작업시 다음과 같이 에러가 발생한다.

. importing SYS's objects into SYS
IMP-00017: following statement failed with ORACLE error 1565:
"BEGIN sys.dbms_plugts.beginImpTablespace('TBS_TTS',37,'SYS',1,0,8192,2,57"
"54175,1,2147483645,8,128,8,0,1,0,8,462754339,1,1,5754124,NULL,0,0,NULL,NULL"
"); END;"
IMP-00003: ORACLE error 1565 encountered
ORA-01565: error in identifying file '/database/db101b2/V101B2/datafile/reposit01.dbf'
ORA-27047: unable to read the header block of file
HP-UX Error: 2: No such file or directory
Additional information: 2
ORA-06512: at "SYS.DBMS_PLUGTS", line 1540
ORA-06512: at line 1
IMP-00000: Import terminated unsuccessfully

결국, Tablespace import 를 하기전에 RMAN 을 통해 files convert 작업이 필요하다.

$ rman target=/

Recovery Manager: Release 10.1.0.1.0 - 64bit Beta
connected to target database: V101B2 (DBID=3287908659)

RMAN> convert tablespace 'REPOSIT'
2> to platform="Linux IA (32-bit)"
3> db_file_name_convert='/database/db101b2/V101B2/datafile/reposit01.dbf',
4> '/tmp/reposit01.dbf';

Starting backup at 24-NOV-03
using target database controlfile instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=8 devtype=DISK
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00006 name=/database/db101b2/V101B2/datafile/reposit01.dbf
converted datafile=/tmp/reposit01.dbf
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01
Finished backup at 24-NOV-03

Convert 된 files 은 /tmp 디렉토리에 존재하게 되고 이를 target server 에 copy 한다.


4. Datafile 과 export dump file 을 ftp 를 이용하여 move 한다.

$ftp tts.dmp
+
/database/db101b2/V101B2/datafile/reposit01.dbf (no conversion)
or
/tmp/reposit01.dbf (converted file if conversion had been required)


5. Metadata 를 import 한다.

$ imp userid=\'/ as sysdba\' TRANSPORT_TABLESPACE=Y
datafiles=/database/db101b2/V101B2/datafile/reposit01.dbf
(or /tmp/reposit01.dbf )
file=tts.dmp log=imp_tts.log

Import: Release 10.1.0.1.0 - Beta on Mon Nov 24 03:37:20 2003

Export file created by EXPORT:V10.01.00 via conventional path
About to import transportable tablespace(s) metadata...
...
. importing SYS's objects into SYS
. importing OMWB's objects into OMWB
. . importing table "MTG_COL_DEP_CHG"
...
. . importing table "SYBASE11_SYSUSERS"
Import terminated successfully without warnings.


6. Import 가 성공적으로 끝나면 tablespace 를 READ WRITE 상태로 변경한다.

SQL> alter tablespace reposit read write;
Tablespace altered.



Example
-------
none

2009/03/19 14:43 2009/03/19 14:43
오라클 한글깨짐 문제 처리법입니다.
원인은 오라클의 서버와 클라이언트간의 NLS_LANG설정문제 때문입니다.
이것을 일치시켜 주어야 하는데.
 
Step by Step.
시작 -> 실행
regedit으로 레지스트리 편집기를 열고, " HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ "의 하위 폴더에보면 자신의 오라클베이스폴더가 있습니다. 그것을 클릭해보면 NLS_LANG키가 있는데. 키값을 KOREAN_KOREA.KO16MSWIN949 KOREAN_KOREA.KO16KSC5601 로 바꿔줍니다.
레지스트리편집기를 끈후 다시 시작 -> 실행
cmd로 커맨드입력창을 하나 띄웁니다.
sqlplus /nolog
conn /as sysdba;
update props$ set VALUE$='KO16MSWIN949' where name='NLS_CHARACTERSET';
commit;
shutdown immediate;(데이터베이스를 언마운트 하는작업이라 시간이 걸립니다.)
startup;
 
예를 들어, 다음의 query를 수행한 결과가 다음과 같다면
select name, value$ from sys.props$;
NAME                         VALUE$
--------------------  ----------------
NLS_LANGUAGE         AMERICAN
NLS_TERRITORY         AMERICA
NLS_CHARACTERSET  KO16MSWIN949
 
NLS_LANGUAGE의 값을 AMERICAN -> AMERICAN_AMERICA.KO16MSWIN949
설정하여 사용해야 합니다.
2009/03/18 13:15 2009/03/18 13:15