본문 바로가기

빅데이터과정/WORKSHOP 1

#24_140716_WSHOP_백업(RMAN)

728x90

# 백업(RMAN)






RMAN 을 사용해서 백업과 복구를 했을 때 장점(P15-8)
1.     간단한 명령어로 백업과 복구를 쉽게 할 수 있다
2.     database에 있는 모든 파일들을 전부 백업
3.     백업가능 파일
datafile
controlfile
archive log file
parameter file
4.     백업불가능한 파일
redo log file : 사용자 관리 백업
password file : 깨지면 다시 생성하면 된자
5.     disk 나 테이프에 백업을 할 수 있다

RMAN 으로 백업했을 떄 백업되는 유형 2가지 (p15-7)
1.     backup set : 하나의 상자 안에 여러 개의 data file 들을 넣어주는 백업셋
2.     image copy : 원본하고 똑같이 copy
3.     두 개의 차이점 : backup set은 사용하고 있는 부분만 백업

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



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;
위와 같이 만드는 문법을 줄여서 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을 여러 개 추가해야 한다


active 상태 inactive 상태로 변경

SQL> alter system checkpoint;
수동으로 리두로그 버퍼에서 파일로 내려쓰게 만들고 inactive 상태로 만든다
SQL> select group#, status from v$log;

    GROUP# STATUS
---------- ----------------
         1 INACTIVE
         2 INACTIVE
         3 CURRENT





다른 그룹으로 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.;
상태가 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 상태이기 때문에 삭제가 가능해진다

리두 로그 그룹의 멤버를 OS에 오라클 모르게 삭제하고 장애를 일으킨 후에 복구를 하는 방법
inactive : alter 명령어로 문제가 된 해당 그룹을 삭제하면 된다




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;