[2023.12.15]교육 5일차

망구씨·2023년 12월 15일
0

입사교육

목록 보기
5/7

1.현재 오라클데이터파일/리루로그파일/컨트롤파일을 test이라는폴더로 이동시키고 디비를 올리기

✨ 경로 어딘지 검색

SQL> select name from v$datafile;
select * from v$controlfile;
select * from dba_temp_file;
select group#, member from v$logfile;

NAME
----------------------------------------
C:\ORADATA\ORCL\SYSTEM01.DBF
C:\ORADATA\ORCL\SYSAUX01.DBF
C:\ORADATA\ORCL\UNDOTBS01.DBF
C:\ORADATA\ORCL\USERS01.DBF
C:\ORADATA\ORCL\CONTROL01.CTL
C:\ORABASE\FAST_RECOVERY_AREA\ORCL\CONTROL02.CTL --깨진파일
C:\ORADATA\ORCL\REDO01.LOG
C:\ORADATA\ORCL\REDO02.LOG
C:\ORADATA\ORCL\REDO03.LOG

✨ test 폴더 만들기

✨ rename으로 주소 변경하기
1) DB shutdown

SQL> shutdown immediate

2) 현재 경로에있는 파일들을 test파일로 복사(move)

move C:\ORADATA\ORCL\SYSTEM01.DBF C:\test
move C:\ORADATA\ORCL\SYSAUX01.DBF C:\test
move C:\ORADATA\ORCL\UNDOTBS01.DBF C:\test
move C:\ORADATA\ORCL\USERS01.DBF C:\test

move C:\ORADATA\ORCL\REDO01.LOG C:\test
move C:\ORADATA\ORCL\REDO02.LOG C:\test 
move C:\ORADATA\ORCL\REDO03.LOG C:\test

move C:\ORADATA\ORCL\CONTROL01.CTL C:\test
move C:\ORADATA\ORCL\TEMP01.DBF C:\test


3) 파라미터파일 안에 controlfile 정보가 있으니 nomount 단계로 올린다.

  • 보니까 우리 pfile로 기동중이라 직접 수정해준다.
    3-1) pfile에서 직접 경로 변경
  • show parameter spfile; 해보면 우리지금 spfile이 아닌 pfile로 기동중이라 아래 명령어가 안된다.
alter system set control_files='/oracle/conbak1/control01.ctl','/oracle/conbak2/control02.ctl','/oracle/conbak3/control03.ctl' scope=spfile;
  • pfile을 열어서 직접 변경해주기

    4) mount단계로 올려서 나머지 파일들 경로수정하기
  • temp, redo, control(pfile수정으로 했음), datafile을 경로 바꿔주기(rename)
alter database rename file 'C:\ORADATA\ORCL\SYSTEM01.DBF' to 'C:\test\SYSTEM01.DBF';
alter database rename file 'C:\ORADATA\ORCL\SYSAUX01.DBF' to 'C:\test\SYSAUX01.DBF';
alter database rename file 'C:\ORADATA\ORCL\UNDOTBS01.DBF' to 'C:\test\UNDOTBS01.DBF';
alter database rename file 'C:\ORADATA\ORCL\USERS01.DBF' to 'C:\test\USERS01.DBF';
alter database rename file 'C:\ORADATA\ORCL\REDO01.LOG' to 'C:\test\REDO01.LOG';
alter database rename file 'C:\ORADATA\ORCL\REDO02.LOG' to 'C:\test\REDO02.LOG';
alter database rename file 'C:\ORADATA\ORCL\REDO03.LOG' to 'C:\test\REDO03.LOG';
alter database rename file 'C:\ORADATA\ORCL\TEMP01.DBF' to 'C:\test\TEMP01.DBF';

RMAN cold backup 수행

temp는 백업 대상이 아님.

C:\Users\admin>rman target / nocatalog

복구 관리자: Release 19.0.0.0.0 - Production on 금 12월 15 13:58:17 2023
Version 19.21.0.0.0

Copyright (c) 1982, 2023, Oracle and/or its affiliates.  All rights reserved.

대상 데이터베이스에 접속됨: ORCL(DBID=1683174513, 열리지 않음)
복구 카탈로그 대신 대상 데이터베이스 제어 파일을 사용하고 있습니다.

RMAN> backup database;

23/12/15에서 backup을(를) 시작하는 중입니다.
채널을 할당했습니다: ORA_DISK_1
채널 ORA_DISK_1: SID=493 장치 유형=DISK
ORA_DISK_1 채널: 전체 데이터 파일 백업 집합을 시작하는 중입니다.
ORA_DISK_1 채널: 백업 집합에서 데이터 파일을 지정하는 중입니다.
입력 데이터 파일 번호=00001 이름=C:\TEST\SYSTEM01.DBF
입력 데이터 파일 번호=00003 이름=C:\TEST\UNDOTBS01.DBF
입력 데이터 파일 번호=00002 이름=C:\TEST\SYSAUX01.DBF
입력 데이터 파일 번호=00004 이름=C:\TEST\USERS01.DBF
채널 ORA_DISK_1: 23/12/15에서 1 조각을 시작하는 중입니다.
채널 ORA_DISK_1: 23/12/15에서 1 조각을 완료했습니다.
조각 핸들=C:\ORABASE\FAST_RECOVERY_AREA\ORCL\BACKUPSET\2023_12_15\O1_MF_NNNDF_TAG20231215T135843_LQQQ838B_.BKP 태그=TAG20231215T135843 주석=NONE
채널 ORA_DISK_1: 백업 집합 완료, 경과 시간: 00:00:03
23/12/15에서 backup을(를) 종료했습니다.

23/12/15에서 Control File Autobackup을(를) 시작하는 중입니다.
조각 핸들=C:\ORABASE\FAST_RECOVERY_AREA\ORCL\AUTOBACKUP\2023_12_15\O1_MF_N_1155649862_LQQQ86CW_.BKP 주석=NONE
23/12/15에서 Control File Autobackup을(를) 종료했습니다.


RMAN> list backup;


백업 집합 목록
===================


BS 키  유형 LV 크기       장치 유형 경과된 시간 완료 시간
------- ---- -- ---------- ----------- ------------ ---------
1       Full    1.07G      DISK        00:00:01     23/12/15
        BP 키: 1   상태: AVAILABLE  압축됨: NO  태그: TAG20231215T135843
        조각 이름: C:\ORABASE\FAST_RECOVERY_AREA\ORCL\BACKUPSET\2023_12_15\O1_MF_NNNDF_TAG20231215T135843_LQQQ838B_.BKP
  백업 집합 1의 데이터 파일 목록
  파일 LV 유형 Ckp SCN    Ckp 시간 Abs Fuz SCN 희소 이름
  ---- -- ---- ---------- -------- ----------- ------ ----
  1       Full 1491556    23/12/15              NO    C:\TEST\SYSTEM01.DBF
  2       Full 1491556    23/12/15              NO    C:\TEST\SYSAUX01.DBF
  3       Full 1491556    23/12/15              NO    C:\TEST\UNDOTBS01.DBF
  4       Full 1491556    23/12/15              NO    C:\TEST\USERS01.DBF

BS 키  유형 LV 크기       장치 유형 경과된 시간 완료 시간
------- ---- -- ---------- ----------- ------------ ---------
2       Full    10.17M     DISK        00:00:00     23/12/15
        BP 키: 2   상태: AVAILABLE  압축됨: NO  태그: TAG20231215T135846
        조각 이름: C:\ORABASE\FAST_RECOVERY_AREA\ORCL\AUTOBACKUP\2023_12_15\O1_MF_N_1155649862_LQQQ86CW_.BKP
  포함된 제어 파일: Ckp SCN: 1491556      Ckp 시간: 23/12/15
  
RMAN> backup current controlfile;

23/12/15에서 backup을(를) 시작하는 중입니다.
채널 ORA_DISK_1 사용 중
ORA_DISK_1 채널: 전체 데이터 파일 백업 집합을 시작하는 중입니다.
ORA_DISK_1 채널: 백업 집합에서 데이터 파일을 지정하는 중입니다.
백업 집합에 현재 제어 파일을 포함하는 중입니다.
채널 ORA_DISK_1: 23/12/15에서 1 조각을 시작하는 중입니다.
채널 ORA_DISK_1: 23/12/15에서 1 조각을 완료했습니다.
조각 핸들=C:\ORABASE\FAST_RECOVERY_AREA\ORCL\BACKUPSET\2023_12_15\O1_MF_NCNNF_TAG20231215T140036_LQQQCOS1_.BKP 태그=TAG20231215T140036 주 석=NONE
채널 ORA_DISK_1: 백업 집합 완료, 경과 시간: 00:00:01
23/12/15에서 backup을(를) 종료했습니다.

23/12/15에서 Control File Autobackup을(를) 시작하는 중입니다.
조각 핸들=C:\ORABASE\FAST_RECOVERY_AREA\ORCL\AUTOBACKUP\2023_12_15\O1_MF_N_1155649862_LQQQCPWQ_.BKP 주석=NONE
23/12/15에서 Control File Autobackup을(를) 종료했습니다.
  • 리두는 아카이브로 먹이면 되니까 알맨으로 수행 하고 그래서 리두로그 파일을 안해도 되고 템프도 수행 대상이 아니고 리두로그 깨진거며 아카이브로 그전까지 복구를 하는 케이스이다.
RMAN> backup database plus archivelog ;


23/12/15에서 backup을(를) 시작하는 중입니다.
채널 ORA_DISK_1 사용 중
사양이 저장소의 아카이브된 로그와 일치하지 않습니다.
백업할 파일이 없어서 백업이 취소되었습니다.
23/12/15에서 backup을(를) 종료했습니다.

23/12/15에서 backup을(를) 시작하는 중입니다.
채널 ORA_DISK_1 사용 중
ORA_DISK_1 채널: 전체 데이터 파일 백업 집합을 시작하는 중입니다.
ORA_DISK_1 채널: 백업 집합에서 데이터 파일을 지정하는 중입니다.
입력 데이터 파일 번호=00001 이름=C:\TEST\SYSTEM01.DBF
입력 데이터 파일 번호=00003 이름=C:\TEST\UNDOTBS01.DBF
입력 데이터 파일 번호=00002 이름=C:\TEST\SYSAUX01.DBF
입력 데이터 파일 번호=00004 이름=C:\TEST\USERS01.DBF
채널 ORA_DISK_1: 23/12/15에서 1 조각을 시작하는 중입니다.
채널 ORA_DISK_1: 23/12/15에서 1 조각을 완료했습니다.
조각 핸들=C:\ORABASE\FAST_RECOVERY_AREA\ORCL\BACKUPSET\2023_12_15\O1_MF_NNNDF_TAG20231215T144859_LQQT6CW2_.BKP 태그=TAG20231215T144859 주 석=NONE
채널 ORA_DISK_1: 백업 집합 완료, 경과 시간: 00:00:03
23/12/15에서 backup을(를) 종료했습니다.

23/12/15에서 backup을(를) 시작하는 중입니다.
채널 ORA_DISK_1 사용 중
사양이 저장소의 아카이브된 로그와 일치하지 않습니다.
백업할 파일이 없어서 백업이 취소되었습니다.
23/12/15에서 backup을(를) 종료했습니다.

23/12/15에서 Control File Autobackup을(를) 시작하는 중입니다.
조각 핸들=C:\ORABASE\FAST_RECOVERY_AREA\ORCL\AUTOBACKUP\2023_12_15\O1_MF_N_1155649862_LQQT6H1X_.BKP 주석=NONE
23/12/15에서 Control File Autobackup을(를) 종료했습니다.

alter system archive log current 현재 쓰레드의 로그 스위치를 강제로 발생
alter system swithch logfile; :전 쓰레드의 로그 스위치를 강제로 발생

rman archive file backup 관련

2.현재 디비를 backup이라는 폴더로 온라인 백업을 수행해라

관련수업내용
온라인 백업이니까 begin, end 수행

✨ begin backup 수행

alter database begin backup; -- 이렇게 하면 체크포인트 장애 발생 안함
SQL> select * from v$backup;

     FILE# STATUS                                  CHANGE# TIME         CON_ID
---------- ------------------------------------ ---------- -------- ----------
         1 ACTIVE                                  1495387 23/12/15          0
         2 ACTIVE                                  1495387 23/12/15          0
         3 ACTIVE                                  1495387 23/12/15          0
         4 ACTIVE                                  1495387 23/12/15          0

✨ 만들어둔 backup 폴더로 복사

✨ end 수행

alter database end backup;

select * from v$recoverfile; -> db가 깨졌을 때 확인해야 하는 것.
GC -Tail 10 C:\oraBase\diag\rdbms\orcl\orcl\trace\alert_orcl.log -Wait

3.TEST라는 테이블스페이스만들고 TEST라는 유저만들고테스트라는 테이블을 만들기

  1. tablespace 만들기
create tablespace test
  datafile 'C:\test/test.dbf' size 10m;
  1. TEST user 생성
create user scott identified by tiger;
grant connect, resource to scott;
  1. table 생성
create table test
 (ename  varchar2(10),
  sal    number(10) )
  tablespace test;

insert into test values ('scott', 3000);
commit; -- 권한 없다그래서 안함

RMAN 커맨드하나 (알맨 백업본 아니고 일반 핫백업 작업한걸 알맨에 등록)

connect target /
RMAN> catalog start with '경로'; -- noprumpt 하면 yes안물어봄 -> 전체
RMAN> catalog datafile copy '/home/oracle/online_backup/users01.dbf'; -> 개별
yes
list copy of datafile;

4.2번 단계로 온라인백업을 수행한다

✨ begin backup 수행

alter database begin backup; -- 이렇게 하면 체크포인트 장애 발생 안함
SQL> select * from v$backup;

     FILE# STATUS                                  CHANGE# TIME         CON_ID
---------- ------------------------------------ ---------- -------- ----------
         1 ACTIVE                                  1495387 23/12/15          0
         2 ACTIVE                                  1495387 23/12/15          0
         3 ACTIVE                                  1495387 23/12/15          0
         4 ACTIVE                                  1495387 23/12/15          0

✨ 만들어둔 backup 폴더로 복사

✨ end 수행

alter database end backup;

5.TEST 테이블스페이스 데이터파일을 삭제한다.로그스위치 몇번 수행한다

  1. test 폴더에(기본경로) 있는 test 테이블스페이스 데이터 파일 삭제
  2. 로그스위치 3번 일으키기 - DB 내려감 test tb삭제해서.
    alter system switch logfile;

6.복구해본다

<사용자관리-지금 내가 함>
✨ startup force

  • 확인 : 5번이 깨짐

  • (restore단계) 윈도우니까 이렇게 backup -> test로 파일 복제
  • recover 한다
recover datafile 5;

<RMAN일 때>

restore datafile 7
recover datafile 7

7. 리두로그, 컨트롤파일 다중화 시키기

리두로그

  1. 현재 그룹 별 멤버 확인
SQL> select group#, members, status, sequence#
  2         from v$log;

    GROUP#    MEMBERS STATUS                            SEQUENCE#
---------- ---------- -------------------------------- ----------
         1          1 INACTIVE                                 22
         2          1 CURRENT                                  23
         3          1 INACTIVE                                 21
  1. 각 그룹별 멤버들의 위치, 이름 확인
    (멤버 새로 만들때 경로 똑같이, 이름 비슷하게 만들 예정이라 확인)
SQL> col member for a45
SQL> select group#, member from v$logfile order by group# asc;

    GROUP# MEMBER
---------- ---------------------------------------------
         1 C:\TEST\REDO01.LOG
         2 C:\TEST\REDO02.LOG
         3 C:\TEST\REDO03.LOG
  1. 그룹 별로 멤버 하나씩 추가
ex) 
기존 멤버 1 : C:\TEST\REDO01.LOG
새로운 멤버 : C:\TEST\REDO01b.LOG

alter database add logfile member
'C:\TEST\REDO01b.LOG' to group 1;

alter database add logfile member
'C:\TEST\REDO02b.LOG' to group 2;

alter database add logfile member
'C:\TEST\REDO03b.LOG' to group 3;
  1. 확인
SQL> select group#, members, status, sequence#
  2         from v$log;

    GROUP#    MEMBERS STATUS                            SEQUENCE#
---------- ---------- -------------------------------- ----------
         1          2 INACTIVE                                 22
         2          2 CURRENT                                  23
         3          2 INACTIVE                                 21

SQL> select group#, member from v$logfile order by group# asc;

    GROUP# MEMBER
---------- ---------------------------------------------
         1 C:\TEST\REDO01.LOG
         1 C:\TEST\REDO01B.LOG
         2 C:\TEST\REDO02B.LOG
         2 C:\TEST\REDO02.LOG
         3 C:\TEST\REDO03B.LOG
         3 C:\TEST\REDO03.LOG

컨트롤파일 다중화

  • pfile로 기동중이라 spfile 하나 만들고 spfile로 운영함
create pfile from spfile
show parameter spfile; 
  1. 현재 컨트롤 파일 갯수, 경로 확인
SQL> col name for a60
SQL> select name from v$controlfile;

NAME
------------------------------------------------------------
C:\TEST\CONTROL01.CTL
  1. db 내렸다가 nomount로 올림
  2. RMAN접속
C:\Users\admin>rman target /
  1. 다중화
  • to '새로 만들 컨트롤파일의 경로와 이름' from '복사하는 원본 컨트롤 파일의 경로와 이름'
RMAN> restore controlfile to'C:\ORABASE\FAST_RECOVERY_AREA\ORCL\CONTROL02.CTL'
2> from 'C:\TEST\CONTROL01.CTL';

23/12/15에서 restore() 시작하는 중입니다.
복구 카탈로그 대신 대상 데이터베이스 제어 파일을 사용하고 있습니다.
채널을 할당했습니다: ORA_DISK_1
채널 ORA_DISK_1: SID=1343 장치 유형=DISK

채널 ORA_DISK_1: 제어 파일 복사본을 복사했습니다.
23/12/15에서 restore() 종료했습니다.
  1. 다시 SYS 접속해서 spfile 정보 수정한다.
alter system set control_files = 'C:\TEST\CONTROL01.CTL','C:\ORABASE\FAST_RECOVERY_AREA\ORCL\CONTROL02.CTL'
scope = spfile ;
  1. 디비 내렸다 올리기
SQL> shutdown immediate
ORA-01507: 데이터베이스가 마운트되지 않았습니다

ORACLE 인스턴스가 종료되었습니다.
SQL> startup
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area 6626998472 bytes
Fixed Size                 13793480 bytes
Variable Size            2298478592 bytes
Database Buffers         4294967296 bytes
Redo Buffers               19759104 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.
  1. 확인
SQL> show parameter control_files;
select name from v$controlfile;

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
control_files                        string
C:\TEST\CONTROL01.CTL, C:\ORAB
ASE\FAST_RECOVERY_AREA\ORCL\CO
NTROL02.CTL

RMAN 아키텍쳐 & Concepts

디스크에 백업받겠다고 알맨 설정을 하면 되지만, 백업 업체랑 계약을 해서

  • 테이블을 사용할 수 있는 라이브러리 설정을 해야한다. 추가적으로 백업 엔진이 필요하다.
  • 우리 어떤 백업 서버, 백업 테이블을 쓰겠다.
  • 알맨 쓰면 압축, 인크리멘털 백업 기능 가능
  • 우리가 사용하는 세그먼트 다르다. 10g테이블스페이스는 우리가 실제로 사용하는 공간이 5g이고 여유공간이 5g이다. 원래 우리가 백업하면 이 10g를 모두 백업하지만 알맨을 사용하면 5g만 백업한다.
  • 알맨은 블럭이 깨진것이 업없는지 체크를 해주기때문에 깨진 블럭을 백업받는 일이 없다.
  • 알맨은 begin backup을 사용하지 않아도 된다. 다른 동작방식으로 사용하기 때문! (원래의 매커니즘은 복잡하다.) 체크포인트를 일으키지 않아서 디비 부하를 일으키지 않음
  • 병렬도 설정 가능. 비긴백업 안하니까 더 많은 리두를 생성하지 않는다.
  • os만의 커맨드가 다르지만 알맨쓰면 다 가능

  • 기본적으로 알맨은 컨트롤 파일에 저장이 되지만 컨트롤파일은 휘발성이기 때문에 별도로 디비를 만들어서 거기에 정보를 저장한다. (카탈로그 디비)
  • 카탈로그 디비는 별도의 백업 필요. 이것은 펌프를 받자
  • 디비양 커지고 등록된 디비가 많다면 카탈로그 디비 유저를 분리한다.
  • 알맨 메타데이터 변경 사항은 컨트로랖일에 우선 적용되고 이후 카탈로그에 리싱크.
  • 카탈로그 디비는 디비별로 유저 따로 생성해도 별도로 관리
  • 백업 받은것이 한세트(백업셋) 이라고 생각하면 된다. 하나의 백업셋에 어떤 데이터파일이 있는지 알 수있다

  • 이미지 카피는 마이그레이션같은 작업을 할 때 많이 쓰인다.

  • 백업셋 하면 사이즈가 다르게 저장된다.

  • 그런데 백업셋 하면 복구할 때 오래걸릴 수 있으므로 무조건 좋은것은 아니다.

  • 정리하자면 알맨 백업을하면(백업셋) 사이즈가 다르게 백업되지만(압축느낌) 복구가 느릴 수 있다. 차이점 공부

  • 압축된 파일이 풀릴 때 풀리는 시간이 있는데 늦게 풀릴 수 있으니까 복구가 느릴 수 있다는 것이다.(압축 풀고 복구해야하는 순서)

  • 복원(restore) : 백업 엔지니어가 함

  • 복구(recover) : 우리가 하면 됨

  • 알맨커맨드 상단에 디스크에 받는지 테이블에 백업받는지 적는다.

Duplicate?

  • 엑사 데이터는 이걸로 많이 마이그레이션을 한다.
  • 초기적재를 해야한다. 처음디비 마이그레이션할때
  • 초기적재는 a에서 b로 옮긴다는 가정하에 ????????????????????????
  • 시간개념 불완전 복구를 가능하다.
  • 듀플리캐이트로 디비 만들어줘 -> 알맨으로 운영디비 복제해주세요! 근데 운영디비를 직접 복제하면 운영 디비에 부하를 준다. 그래서 이런 기능을 활용하는게 가능한지 생각해봐야한다. -> 운영디비를 복제한 복제본이 있을텐데 이것으로 만들면 되겠다.

  • 듀플리케이트는 알맨 백업본으로 복제해주는것
  • from active database는 지양

  • 디스크에 받을떄 , 테이블에 받을 때 설정(이것은 백업업체)
  • FRA잡으면 기본적으로 이 경로에 저장이 된다. 우리가 아무것도 지정 안하고 backup database를 수행하면 이 경로에 백업본이 들어간다.

RMAN 기본 구성 확인

RMAN> show all;

db_unique_name ORCL을(를) 가진 데이터베이스에 대한 RMAN 구성 매개변수:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'C:\ORACLEDB\DATABASE\SNCFORCL.ORA'; # default

-- 변경은 아래처럼 --
CONFIGURE DEVICE TYPE DISK PARALLELISM 4;
  • Recovery catalog를 사용하지 않는 경우
    Controlfile에서 이전 백업의 레코드를 겹쳐쓰지 않기 위해 CONTROL_FILE_RECORD_KEEP_TIME 보다 작거나 같게 recovery window의 기간 설정 (보관주기 설정하는것임)

  • 멀티세션백업도 가능하지만 모름

우리의 모든 작업은 운영디비에 부하를 주지 않아야한다.

fullbackup

다받고 (레벨0)

인크리멘털 백업

풀백업 이후 변경된것만 백업(레벨1)

  • incremental 을 쓰려면 0부터 시작해야함. full에서 바로 넘어갈수없다.
RMAN> backup as copy database;
list copy of database

만약 인크리멘털 백업으로 복구를한다? 위처럼 하면 되는데 0이 일년 전거라면?
너무 오래걸리니까. 백업 전략을 짠다. 매주 일요일마다는 0레벨로 받고 나머지는 1로 받자 !
0,1,1 받고 아카이브를 적용한다.

(중요) incremental update backup !발표


인크리멘털 백업의 최대 문제점은? 문제점을 보완하기 위한 것임
restore, recover를 해야하는데 resotre, recover도 오래걸릴 수 있다.
그래서 처음 1차적으로 이미지 카피 백업을 받는다. 이것은 전체 풀백업이다. (400T)
이미지 카피에서도 incremental이 된다. 이 400T 이미지에서 받는것.
1일에 이미지 카피본
2일에 레벨1 -> 이때 어느곳에 update backup을 받는것. 그러면 1일이랑 2일치가합쳐져서 별도의 디스크 공간에
3일에 레벨1 -> 이것도 업데이트 백업..

이렇게 하면 복구할 때 아카이브 로그 파일만 적용하며 된다. 차이점은 원래는 머지하는 시간이 필요하지만 이렇게 하면 머지 시간 필요없다.

이 별도의 디스크 공간을 이용해서 바로 디비를 오픈시킬 수 있다. (원본 디비 최신본이 하나가 계속 유지되고 있는 것이다.) 디데이에 마이그레이션 적어진다. TTS하기전에
이거가지고 작업을 한다.

TTS, rman의 incremental update backup 기능 두개가 서껴ㅣㅆ다.

참고 문서

Using XTTs in a Data Guard Environment (Doc ID 2853054.1)
V4 Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (Doc ID 2471245.1)
How to Rename or Move Datafiles and Logfiles (Doc ID 115424.1)

Block change tracking(BCT)

인크리멘탈이란 필요한(변경된)것만 찾아서 하는건데 뭐가 변경이 된건지 안된건지 쭉봐야하는데 이것이 시간이과 부하가 걸릴 수 있을 것이다. 이게 오래 걸리면 incremental 을 할 필요가 없다. 운영디비 부하X
마지막 백업이후 변경된 블록들을 포함하는 블록에 저장
ctwr : 이 디비는 bct를 쓰는구나.

우리가 incremental 를 하려면 무조건 BCT기능을 써야한다. 아니면 백업을 받을 때 마다 디비가 행이걸려 내려가버릴 수 있다.

이 기능을 안쓰다고 해서 안되는 것은 아니고 부하가 많은 것이다. 그래서 상황마다 안쓸수도 있음
운영 디비가 있고 가드(ADG)가 있는데 가드쪽에 이 기능을 쓴다. 그래서 BCT기능을 쓰려면 보통 ADG가 있어야 한다. 이거 유료임

만약 adg가 없어서 BCT를 운영에서 해야한다면 그냥 인크리맨탈 쓰지 말고 매일 FULL로 하는게 낫다.

RMAN snapshot 복구

무슨 프로시저로 scn 넘버를 헤더에 넣어서 복구하는게 있는데 이거를 알맨이 해주는 것. catalog 명령어

모든 파일 지워졌을 때 RMAN 복구

1. RMAN nomount 단계 올리기

restore controlfile from autobackup; -- pfile에 있는 경로에 복구진행

2. mount 단계로 올리기

restore datafile;
recover datafile; -- 얘는 안함
-> 이 단계에서 리두로그 파일 필요 없는 이유는 백업 대상이 아니다.

3. resetlogs로 디비 오픈

alter database open resetlogs;
-> 이 단계에서 temp랑 다른애들 만들어줌

profile
Slow and steady wins the race.

0개의 댓글