728x90
# 백업(RMAN)
l RMAN 을 사용해서 백업과 복구를 했을 때 장점(P15-8)
1. 간단한 명령어로 백업과 복구를 쉽게 할 수 있다
2. database에 있는 모든 파일들을 전부 백업
3. 백업가능 파일
- datafile
- controlfile
- archive log file
- parameter file
4. 백업불가능한 파일
- redo log file : 사용자 관리 백업
- password file : 깨지면 다시 생성하면 된자
5. disk 나 테이프에 백업을 할 수 있다
l RMAN 으로 백업했을 떄 백업되는 유형 2가지 (p15-7)
1. backup set : 하나의 상자 안에 여러 개의 data file 들을 넣어주는 백업셋
2. image copy : 원본하고 똑같이 copy
3. 두 개의 차이점 : backup set은 사용하고 있는 부분만 백업
l full backup과 부분 백업의 차이
- full backup : 모든 datafile 들을 전부 백업
- 부분 backup : 특정 datafile 만 백업
RMAN> report scheman; - 현재 DB에 있는 file 리스트를 보여준다
RMAN> backup datafile 4;
RMAN> backup tablepsace users;
RMAN> list backup of tablespace users;
RMAN> report schema; - 현재 DB에 있는 file 리스트를 보여준다 Report of database schema for database with db_unique_name DBDB List of Permanent Datafiles =========================== File Size(MB) Tablespace RB segs Datafile Name ---- -------- -------------------- ------- ------------------------ 1 680 SYSTEM *** /u01/app/oracle/oradata/dbdb/system01.dbf 2 480 SYSAUX *** /u01/app/oracle/oradata/dbdb/sysaux01.dbf 3 40 UNDOTBS1 *** /u01/app/oracle/oradata/dbdb/undotbs01.dbf 4 5 USERS *** /u01/app/oracle/oradata/dbdb/users01.dbf 5 100 EXAMPLE *** /u01/app/oracle/oradata/dbdb/example01.dbf 6 50 USERS *** /u01/app/oracle/oradata/dbdb/user06.dbf List of Temporary Files ======================= File Size(MB) Tablespace Maxsize(MB) Tempfile Name ---- -------- -------------------- ----------- -------------------- 1 20 TEMP 32767 /u01/app/oracle/oradata/dbdb/temp01.dbf RMAN> copy datafile 1 to '/home/oracle/datafile01.dbf'; - 이미지 백업 Starting backup at 16-JUL-14 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=38 device type=DISK channel ORA_DISK_1: starting datafile copy input datafile file number=00001 name=/u01/app/oracle/oradata/dbdb/system01.dbf output file name=/home/oracle/datafile01.dbf tag=TAG20140716T105802 RECID=2 STAMP=853066710 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:35 Finished backup at 16-JUL-14 |
문제139. rman 으로 백업을 할 때 control file 과 spfile을 백업하려면 어떤 설정을 해야하는가?
RMAN> show all; - 현재 RMAN 환경구성 내용을 확인
RMAN> configure controlfile autobackup on;
RMAN> show all;
RMAN> backup database;
RMAN> show all; RMAN configuration parameters for database with db_unique_name DBDB are: CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default ……………………………………………………………………………… RMAN> configure controlfile autobackup on; new RMAN configuration parameters: CONFIGURE CONTROLFILE AUTOBACKUP ON; new RMAN configuration parameters are successfully stored RMAN> show all; ……………………………………………………………………………… CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default CONFIGURE CONTROLFILE AUTOBACKUP ON; ……………………………………………………………………………… RMAN> backup database; - backup database plus archivelog; - 아카이브까지 백업 ……………………………………………………………………………… Starting Control File and SPFILE Autobackup at 16-JUL-14 piece handle=/u01/app/oracle/flash_recovery_area/DBDB/autobackup/2014_07_16/o1_mf_s_853068147_9wcrh6r4_.bkp comment=NONE Finished Control File and SPFILE Autobackup at 16-JUL-14 |
l full backup과 부분 백업의 차이
- full backup : 모든 datafile 들을 전부 백업
- 부분 backup : 특정 datafile 만 백업
RMAN> report scheman; - 현재 DB에 있는 file 리스트를 보여준다
RMAN> backup datafile 4;
RMAN> backup tablepsace users;
RMAN> list backup of tablespace users;
문제140. ts50 이라는 테이블 스패이스를 생성하고(사이즈 30m) ts50 테이블 스패이스에emp800 테이블을 생성하는데 emp 테이블과 똑 같은 구조와 데이터를 갖도록 생성하고 ts50테이블 스패이스를 백업 받으시오
create table emp800
tablespace ts50 as
select * from emp;
l 위와 같이 만드는 문법을 줄여서 CTAS(create table as)
RMAN> report schema; List of Permanent Datafiles =========================== File Size(MB) Tablespace RB segs Datafile Name ---- -------- -------------------- ------- ------------------------ 1 680 SYSTEM *** /u01/app/oracle/oradata/dbdb/system01.dbf 2 480 SYSAUX *** /u01/app/oracle/oradata/dbdb/sysaux01.dbf 3 40 UNDOTBS1 *** /u01/app/oracle/oradata/dbdb/undotbs01.dbf 4 5 USERS *** /u01/app/oracle/oradata/dbdb/users01.dbf 5 100 EXAMPLE *** /u01/app/oracle/oradata/dbdb/example01.dbf 6 50 USERS *** /u01/app/oracle/oradata/dbdb/user06.dbf 7 30 TS50 *** /u01/app/oracle/product/11.2.0/dbhome_1/dbs/c:ts50.dbdf List of Temporary Files ======================= File Size(MB) Tablespace Maxsize(MB) Tempfile Name ---- -------- -------------------- ----------- -------------------- 1 20 TEMP 32767 /u01/app/oracle/oradata/dbdb/temp01.dbf RMAN> backup tablespace ts50; ] Starting backup at 16-JUL-14 allocated channel: ORA_DISK_1 …………………………………………………………. RMAN> list backup of tablespace ts50; - 백업 확인 List of Backup Sets =================== BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------- 11 Full 1.07M DISK 00:00:00 16-JUL-14 BP Key: 11 Status: AVAILABLE Compressed: NO Tag: TAG20140716T113638 Piece Name: /u01/app/oracle/flash_recovery_area/DBDB/backupset/2014_07_16/o1_mf_nnndf_TAG20140716T113638_9wcs9p4q_.bkp List of Datafiles in backup set 11 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- --------- ---- 7 Full 953080 16-JUL-14 /u01/app/oracle/product/11.2.0/dbhome_1/dbs/c:ts50.dbdf BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------- 13 Full 1.07M DISK 00:00:00 16-JUL-14 BP Key: 13 Status: AVAILABLE Compressed: NO Tag: TAG20140716T113805 Piece Name: /u01/app/oracle/flash_recovery_area/DBDB/backupset/2014_07_16/o1_mf_nnndf_TAG20140716T113805_9wcsdg3w_.bkp List of Datafiles in backup set 13 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- --------- ---- 7 Full 953136 16-JUL-14 /u01/app/oracle/product/11.2.0/dbhome_1/dbs/c:ts50.dbdf |
- REDO LOG FILE 복구
p16-9. 리두로그 파일이 손상되었을 때 복구방법은 리두르고 파일의 상태에 따라 복구방법이 틀리다
- inactive : 다썼고 메모리의 변경사항이 data file에 반영된 것
- active : LGWR이 리두파일에 다썼는데 메모리의 변경사항이 data file에 아직 반영이 안된 것
- current : LGWR 가 현재 DB의 변경사항을 쓰고 있는 상태
- unused : 한번도 사용한적이 없는상태
- active 상태 그룹은 지우면 장애가 일어난다
- active 상태의 파일을 순서가 돌아와도 파일을 내려쓰지 못한다. 이런 현상을 ‘행에 걸린다’고 표현한다
- redo log group 은 순환적으로 재사용이 되는데 다시 LGWR가 group에 redo 정보를 쓸려면 그redo log group의 상태가 inacitve 여야 한다.
- active면 덮어쓰지 못하고 wating이 일어난다
- wating 상태를 방지하기 위해서는 redo log group을 여러 개 추가해야 한다
n active 상태 inactive 상태로 변경
SQL> alter system checkpoint; - 수동으로 리두로그 버퍼에서 파일로 내려쓰게 만들고 inactive 상태로 만든다 SQL> select group#, status from v$log; GROUP# STATUS ---------- ---------------- 1 INACTIVE 2 INACTIVE 3 CURRENT |
n 다른 그룹으로 current 상태로 변경
SQL> alter system switch logfile; SQL> select group#, status from v$log; GROUP# STATUS ---------- ---------------- 1 INACTIVE 2 ACTIVE 3 CURRENT |
문제145. redo log group 4번을 추가하시오
alter database add logfile group 4
'/u01/app/oracle/flash_recovery_area/dbdb/redo04.log' SIZE 20m;
SQL> alter database add logfile group 4 '/u01/app/oracle/flash_recovery_area/dbdb/redo04.log' SIZE 20m; SQL> select group#, status, members from v$log; GROUP# STATUS MEMBERS ---------- ---------------- ---------- 1 INACTIVE 2 2 INACTIVE 2 3 CURRENT 2 4 UNUSED 1 |
문제146. 추가한 redo log group 4번을 삭제하시오
alter database drop logfile group 4.;
l 상태가 current 거나 active 면 삭제가 안된다. inactive거나 unused 여야 삭제가 된다
문제147. group 4번을 inactive 로 두고 삭제하시오
SQL> alter system switch logfile; SQL> SQL> @log_status GROUP# STATUS MEMBERS ---------- ---------------- ---------- 1 ACTIVE 2 2 CURRENT 2 3 INACTIVE 2 4 ACTIVE 1 SQL> alter system checkpoint; - active 상태인 4번 그룹을 inactive 상태로 만든다 SQL> @log_status GROUP# STATUS MEMBERS ---------- ---------------- ---------- 1 INACTIVE 2 2 CURRENT 2 3 INACTIVE 2 4 INACTIVE 1 SQL> alter database drop logfile group 4; - 4번 그룹이 inactive 상태이기 때문에 삭제가 가능해진다 |
l 리두 로그 그룹의 멤버를 OS에 오라클 모르게 삭제하고 장애를 일으킨 후에 복구를 하는 방법
- inactive : alter 명령어로 문제가 된 해당 그룹을 삭제하면 된다
n inactive인 리두로그 파일이 깨졌을 때 복구방법
1. 상태를 확인
SQL> select group#, status, members from v$log; GROUP# STATUS MEMBERS ---------- ---------------- ---------- 1 INACTIVE 2 2 CURRENT 2 3 INACTIVE 2 |
2. inactive인 리두로그 그룹의 멤버를 확인
3. select * from v$logfile;
4. os 에서 오라클 몰래 해당 멤버를 rm으로 날리시오
- inactive 상태를 지워야 한다
- shutdown abort
5. startup : mount에서 멈춤
mount에서 안올라오고 다시 shutdown 이 되었다면
6. startup mount
7. select group#, status from v$log;
- 깨진 멤버의 그룹의 상태가 inactive 인지 확인
8. alter database drop logfile group 번호;
- 해당 그룹을 controlfile에서 지워버린다
9. alter database open;
10. 다시 그룹 추가
alter database add logfile group 3
'/u01/app/oracle/flash_recovery_area/dbdb/redo03b.log' SIZE 50m;
alter database add logfile group 3
' /u01/app/oracle/oradata/dbdb/redo03.log' SIZE 50m;
ALTER DATABASE ADD LOGFILE member
'/u01/app/oracle/oradata/dbdb/redo03.log' TO GROUP 3;'빅데이터과정 > WORKSHOP 1 ' 카테고리의 다른 글
#24_140716_WSHOP_DIRECT LOAD INSERT (0) | 2014.07.16 |
---|---|
#24_140716_WSHOP_복구 어드바이져 (0) | 2014.07.16 |
#24_140716_WSHOP_백업(사용자관리) (0) | 2014.07.16 |
#23_140715_WSHOP_백업/복구 (0) | 2014.07.15 |
#22_140714_WSHOP_자동화된 유지관리 (0) | 2014.07.15 |