[2023.12.13]교육 4일차_마이그레이션(TTS),ASM,백업(begin backup)

망구씨·2023년 12월 14일
0

입사교육

목록 보기
4/7

16인치
스레드 수 32 24코어 램 64 2테라
PHN16-71-93WL

리눅스 iso image down!

Oracle 홈페이지로 접속!




최신버전이 잘 호환이 되는건지 확인하고 다운받기

마이그레이션 실무

마이그레이션이란 데이터 이관, 업그레이드는 버전 업그레이드!
업그레이드 시 11g -> 19c 디비에 데이터 펌프로 데이터넣는것은 마이그레이션
업그레이드는 내부 딕셔너리 정보를 오라클에서 제공하는 스크립트를 돌려 수행하면 11g가 19c로 업그레이드 된다. 메뉴얼 업그레이드, 다이렉트 업그레이드라고 한다.
업그레이드시 마이그레이션이 필요할 수 있다(장비 노후화). 내 컴퓨터에 있는 11g를 지혜 컴퓨터로 옮긴 후에 19c로 업그레이드한다. 이 경우 백업과 복구가 필요하다. 지혜 컴퓨터는 11g, 19c가 있어야한다. 11g 오픈 시킨 상태에서 업그레이드 스크립트를 돌려 19c로 upgrade.

업그레이드를 하려면 최소 버전이 있다. 11.2.0.3 -> 19c
만약 11.2.0.3 이전 버전이라면 세번 업그레이드 해야함. A -> B -> 19c

RAW device를 쓰고있다면 ASM으로 변경해줘야하는데 RMAN 커맨드에서
raw device -> RMAN
file system -> RMAN

19.11.0.0.DBRU.0000000
오라클버전,릴리즈버전,RU버전

C:\oracleDB\OPatch\opatch lsinventory


우리는 RU버전이 21이다.
RU = PSU = Patchset = 릴리즈update

구축방안

분석/설계 단계

기존 디비 시스템 운영환경 분석
디비 시스템과 연게 운영환경 분석
분석, 호환성 여부 체크, 버전 제시..

이행/테스트 단계

투비테스트 환경 구성
19c에 대한 다양한 기능 검증 테스트 수행
디비 시스템과 연계 대상 시스템 버전업 진행시 기술 지원 등

안정화 단계

장애 발생 시 기존 시스템의 구성 환경과 비교에 의한 검증 및 원인 분석 등

용어

운영DB(core), 테스트DB(QA/샌박), 개발DB(dev), DR 이렇게 보통 4가지 디비가 있을텐데 운영 디비와 테스트디비는 되도록 같은 환경이어야 좋다. 운영,테스트,개발에 계정계와 정보계가 있다.

  • 계정계 DB(core DB) : 주식 계좌. 돈이들어있는 은행 계좌 -> 고객사에서 가장 중요한 시스템
  • 정보계 :
  • 내부 복제
  • BCV : 스토리지 복제
  • SRDF : A = B 데이터를 같이. 스토리지 내부 복제, 스토리지 복제
    스토리지 복제업체 EMC..몇개 있따. 두가지 모두 스토리지 복제지만 조금 다른것은

    BCV는 1번 -> 2번을 복제하는 것.
    SRDF는 스토리지를 복제하는 것

1번이 계정계 DB, 2번이 배치 DB라고 가정. (1번볼륨 2번볼륨)
계정계디비에 서버 연결되어있고 배치 DB에도 서버가 연결되어있다 배치 디비에는 계정계와 똑같은 데이터가 필요하다. 매일매일 밤 열두시에 해야하는데 너무 커서 안된다. 이럴 때 BCV (스토리지 내부 복제로) 를 한다. 빠르게 하려고 . 1번을 3번으로 복제하여 DR 배치환경을 구성! 서버를 3번에만 연결해서 사용하면 된다. 오라클 ADG쓰게되면 액티브 상태니까 활용할 수 있는것들이 많다.

배치랑 DR을 같은 스토리지에 넣을 필요는 없다. 1번을 다른 스토리지로 복제하면서 배치, DR을 만들면 이것을 SRDF라 한다. 이럴때 연결이 끊어질리 없지만 갑자기
사실 주센터에 DR이 있으면 안되니까 부센터에 DR 있다고 치자 근데 갑자기 불나서 끊어지면 DR을 올려서 계정계로 사용,

배치DB는 00시에 돌린다 하면 23:53시 이쯤 끊어서 데이터를 올린다. 스토리지 복제 기능! 아주 빠르다.

백업 정리

User-Managed Backup(온라인백업, 핫백업) 과 Oracle RMAN으로.
백업은 데이터파일을 카피하는 것. 위에서 배운 BCV나 SRDF를 사용해도 됨 사실 copy보다 BCV, SRDF. 핫백업은 오픈상태에서 하는것!

offline backup (cold backup) 디비 내려가있는 상태

컨트롤 파일에 백업본이 저장되는 ora...의 경로가 저장되어있다. 컨트롤 파일 위치는 파라미터 파일의 경로가 있으니.
파라미터 파일에서 컨트롤 파일이 저장된 경로를 바꾼후 마운트 단계에서 datafile, controlfile,릳리두로그파일 경로 바꿔본다. alter database rename...

online backup (hot backup) 디비 운영중인 상태

복제할때는 시점이 같아야한다. 시점이 틀어지면 맞추어주어야 하는데 아카이브로그파일이 필요하다.
데이터 블록이 1,2,3이 있을 때 최신본인 3번에 맞추어야한다.
scn number를 보고 맞춘다. 컨트롤파일이나 데이터파일 헤더에 있음 그렇지만 백업시 i/o 단위와 데이터 블럭의 크기가 다를 수 있으므로 헤더,끝 부분이 달라질수가 있음.

비긴백업하면 리두 엔트리 가 데이터베이스 블럭단위로 커진다. 이것이 비긴, 엔드백업이 필요한 이유.
비긴엔드 안찍으면 아카이브를 할수없다. v$backup으로 비긴 찍은것을 볼 수 있다. 비긴을찍으면 디비 백업상태이다.

리두가 발생하는 최소 단위는 엔트리 단위이다. 근데 복사하는 ... begin, end 는 어쨌든 핫백업에서 해야한다.

아카이브 로그 파일을 적용하려면 begin백업 해야함

scn 쓰는것도 i/o가 일어난다. 비긴백업 찍을 때 디비가 밀린다. 체크포인트를 함부로 일으키면 안된다.
체크포인트 종류 3가지 일부만,전체만... 비긴백업은 모든 데이터파일을 맞춰주는 체크포인트를 일으킨다. 낮에하면 안된다. 밤에해야함!

비긴 찍으면 리두로그 엔트리 아카이브 파일이 생성된다?근데 어케 적용 해야하니까..

split이란

끊는것이다. BCV로 복사가 끝난것이다. 비긴상태로 데이터파일?? 디비가 올라와있는 상태와 같다(?)
순서는 비긴 - 스플릿 - 앤드

BCV는 1초만에 되어서 비긴, 엔드비긴이 없다. RMAN은 이런 장애상황까지 체크해서 오라클이 제공하는거라

RMAN은 이런거 할 필요 없음

copy 까지 다 오라클이 책임진다. 좋다 !


컨트롤파일은 BCV 하면 안된다. 데이터파일만 받아야한다(메타링크)그러면 운영에서 다른쪽에 컨트롤 파일을 수동 복제해서 그것을 백업??가지고와서 디비를 마운트단계로 올리고 알맨백업 받는다.
ASM이라서 알맨으로 받는다. 노마운트 단계는 시점이 같아서 같은 디비라고 오라클이 인식하는데 오픈을 해버리면(리스너가 오픈하면) 그 순간 운영과 백업이 다른 디비가 된다. 그래서 노마운트 단계 에서 수행해야한다. (그치만 리드온리로 오픈하면 괜찮다.)

로우 디바이스 환경에서는 비긴 찍고 복제 끊고 엔드 . 복제 끊는 시점이 백업본이다. 이 볼륨이 백업본!

로우 디바이스에 볼륨이 1,2,3,4 있다고 치면 datafile 1,2,3,4로 매칭이 된다. raw1이 깨졌으면
1볼륨 = data01.dbf 우리는 datafile만들때 경로 만들어주는데 raw device는 이미 이름과 사이즈가 만들어져있다.
일부의 데이터파일만 깨졌을때 일부만 복구하면된다. ASM은 파일명이랑 볼륨 파일명이 매치가 안된다.
ㅁ느01, ASM01,ASM02로 디스크 그룹을 만든다. 데이터 그룹으로 테스트..를 만든다.
근데 만약 ASM01이 하나 꺠졌으면 ASM은 이거 하나만 복구가 안된다. 전체복구를 해야한다. 그래서 ASM쪽 복구할 때는 RMAN을 꼭 써야한다!! asmcmd들어가서 파일 생기는구조 확인해보기
ASM은 데이터를 분산하는 역할 때문에 ASM의 파일은 데이터가 여기저기 흩어져있다. 하나의 데이터를 분산해서 저장해놓은상태. 알맨은 이거 알고 다 복사해놓음 (.omf형식)

운영(SAM) -> 백업(ASM)
할때
1. SRDF
2. begin
3. SRDF X
4. end

  1. 컨트롤파일 운영에서
  2. 백업디비로 전송
  3. 2번에있는 컨트롤 파일로 디비 올릴건데
  4. 마운트 단계에서 알맨백업 수행
    운영디비에서 백업받으면 운영중인데 부하가 가니까 백업디비에서 백업을 한다.
  5. 아카이브로그 파일은 운영디비에서 가져온다. (운영디비에서 아카이브로그 파일은 계속 떨어지고있는 상황)
  6. 백업서버를 구축하면 보통 다 ASM 백업 서버라 부른다.

로우디바이스 -> ASM로 하면 위처럼 해야함.

가정산DB(사전검증용)

✨ 계정계 디비 데이터를 스토리지 내부 복제하여 배치 업무 수행 전에 사전 검증 수행

방법은
1. 복제 (데이터파일 컨트롤,리두 다 받아서 경로 바꿔서 디비 올려보는데 안된다? -> 비긴 백업을 안받았으면 다시 복제 뜨기)
2. 불완전 복구 (백업 컨트롤 파일로 마운트를 한다. -> end파일이 적용된 아카이브까지 먹임 -> resetlogs open)


begin backup을 왜 하는가?

1. begin backup (copy, BCV)

table level, tablespace level가능

alter database beginbackup; -- 체크포인트 발생

✨ 체크포인트가 발생하면 디비에 부하가 걸린다. (밤에 작업해야한다.)
데이터파일 헤더에 이게 설정되고 hot backup fuzzy bit는 얘는 핫백업 모드야 라고 하는 애. 엔드백업 수행 전까지 체크포인트 SCN이 고정이 된다. 이 고정된 체킄포인트 SCN이 복구 작업시에 리두로그 파일 적용 시작 시점이다. 두시부터의 아카이브 파일도 받아야한다. datafile, 아카이브파일이 한 세트다 (복구시)

아카이브파일 실수로 지우면 알아챈순간 빨리 복구한다. 아카이브 파일 백업을 잘 받아야한다.


위그림 설명

블록스플릿 현상은 헤더랑 테일이 다른것.
비긴백업을 찍으면 카피도중에 장애상황을 발생하기 위해 리두를 하나 더 남긴다. (변경 전 이미지를 리두에 남긴다.)

백업io단위와 오라클 io단위가 다르기때문에 헤더와 태일의 차이가 있을 수 있다.(블록스플릿현상) 그상황을 대비해서 아카이브 파일을 적용해서 해결할 수 있게 해야함. 근데 비긴을 안찍으면 복구할 수 없다.
이미지를 하나 더 남김

  1. os 명령어로 백업수행

3. end backup

얘를 수행하게 되면 hot backup fuzzy bit과 이때 리두 정보가 핫백업이 끝난 시점이다 라는 hotbackup end marker redo record가 생성된다. 아카이브 로그 파일 1,2,3,4,5가 있다고 했을 때

  • 복구 작업시 hotbackup end marker redo record가 적용이 되려면 resetlog로 open해야한다.
  • 완전복구한 파일을 (운영디비에서 했음) 다른 디비에서 복구해야하는 상황이라면 그 다른 디비에서 복구를 받고 resetlogs로 올린다.
  • DR서버는 우리가 재난이 일어나는 시점을 모르기때문에 비긴백업을 찍지 못한다.

완전 복구 (complete recovery)
➡️ 장애(failure)가 나기전에 마지막 commit 시점으로 복구하는것
불완전 복구 (incomplete recovery)
➡️ 과거의 특정 시점으로 복구하는것

  • time base 불완전 복구 : 특정시간으로 db를 되돌리는 것
    • 사용자 관리 불완전 복구
    • 알맨을 이용한 불완전 복구
  • cancel base 불완전 복구 : 과거로 db를 되돌리는데 복원 파일에 아카이브 로그 파일을 적용하다가
    끝까지 적용하지 않고 cancle을 해서 과거로 되돌린다.

만약에 개발자가 테이블 하나 지워버리면 어떻게 할ㄲㅏ
이런경우를 대비해서 복구를 위한 복구서버,복구용스토리지가 있다. 그래서 어제꺼 데이터에 있는 지운 테이블을 pump해서 가져온다. 이것을 클론DB이다. 복구용디비를 복제해서

✅ 엑사는 EMC나 다른 제품 쓸 수 없다. 가드를 다

TTS를 이용한 마이그레이션 방안

Aix(11g) -> 리눅스(19c) 할때 os, 버전 , 서버가 다 다르다.
endian이 다르다.?? -> RMAN커맨드에서 convert작업을 통해 endian을 리눅스에 맞게 변경해준다.

  • conversion은 Aix를 리눅스로 바꿔준다는 것이다.

TTS란? 트랜스포터블

A서버(11g) / B서버(19c) 가 있을때. A서버에 테이블스페이스가 3개 있고 B에는 아무것도 없다.
11g에 있는 테이블스페이스를 19c가 자동으로 인식하게 해주는 것. 보통 이비링크를사용하거나 펌프를 했다. 장점은 마이그레이션이 필요하지않다.

특징과 순서

  1. A를 read only로 변경한다.
  2. TS3개에 포함된 데이터 를 19c에 복사를 한다. (CP,복제(SRDF,BCV))
  3. expdp 에서 TTS 기능을 써서 A테이블스페이스의 원본을 뽑는다.
  4. B에 넣어준다.

같은 os에서 실행하면 TTS, xTTS는 다른 os끼리 (이기종)

마이그레이션 방안의 종류

  1. expdp
  2. dbLink (유젠스에 툴 있음. 익혀야한다)
  3. 알맨 -> 복구 -> ㅇㅇ??
  4. ogg + 초기적재 방법
  5. TTS (xTTS)

장애보고서

현상

해결 디비 재기동

분석

해당 시점 오라클 로그상 특이사항이 없었다.
alert log -> mmon이 행 걸린 것 발견
diag trace 분석 LGWR -> Blocker(locker)였다. / 559 세션이 wating함

결과

체크포인트 완료 안해서 로그스위치가 안되어있다. -> 디비가 행

결론

장애시점 로그스위치가 안되니 트랜잭션은 모두 로그라이터를 대기
체크포인트는 디비라이터에게 체크포인터 하라고 여구 하고 완료할때까지 대기

sqlplus -prelim / as sysdba (10g new feature)

위처럼 하면 덤프 뜰 수 있다.

행 걸리면 dump 뜬다. 아래 두개처럼. 우리가 이걸로 분석을 할 수는 없지만 오라클한테 보낸다.
systemstate dump

oradebug dump systemstate 266

hanganalyze dump

oradebug ?

단어 찾기

  • AWR dump
  • ASH dump
  • U2L (Unix to Linux) 전환. Aix -> 리눅스

ASM

asm_diskstring : asm disk search path 지정 디폴트는 /dev/rdsk/
processes : 디폴트값 사용 권장
_enable_shared_pool_durations : false
memory_max_target
memory_target

알아야 할 것

  • external redundancy (none)
  • normal redundancy (2way-mirror)
  • high redundancy (3way-mirror)
  • 최소단위는 AU 라고 한다. (4메가) 예전에는 디폴트값이 1M였다. 기본 블럭 사이즈 개념
  • ASM 도 메타데이터가 존재한다. 커맨드로 복구가 가능
  • locak ASM은 asm이 죽으면 db가 죽었다 근데 flex ASM은 asm이 죽어도 2호기로 붙어서 디비가 죽지 않고 고가용성을 보장해준다. 네트워크 통해서 ASM리스너를 통해서 2호기로 붙음 12c 부터는 기본 옵션이다. 선택해서 설치하면 기본으로 설정된다. 선택할거냐고 물어봄 설치때
-- 우리가 자주 보는 view --
v$asm_diskgroup
v$asm_disk

장점 , 특징

스토리지 구성 변경 발생 시 자동으로 온라인 리발란싱 수행
추가/삭제된 디스크의 비율만큼만 데이터 이동
수동으로 아이오를 튜닝할 필요가 없다
새로운 스토리지로 온라인 마익ㄹ그레이션가능
리발란싱 작업 모니터링가능

ASM 리발란싱이란

ASM disk 추가/삭제시 아이오 붑ㄴ산을 위해 각 디스크로 데이터를 균등하게 재분배 하는 작업
일시적으로 리발란싱 중지 가능
추가 디스크를 사용하기 위해 자동으로 수행되는 작업
온라인 작업이 가능하다
파워 리미트 파라미터로 속도 제어 가능 (1이상은 잡아야한다) 숫자가 올라갈수록 cpu사용량 올라간다.

ASM compact

리발란싱 끝나고 가팅 한다. 리발란싱된 데이터를 디스크 밖깥쪽에 재배치 시킨다.
성능을 위해 추가적으로 수행된다.
근데 지속적으로 데이터가 쌓여 내외곽 상관없이 뎅터가 존재하게 되면 성능 향상 의미가 없어져서 끈다. 비활성화 필요하다 왜냠ㄴ 디폴트로 켜져있음 _rebalnce_compact=false

ASM 라이브러리(ASMLIB)

리눅스 경우 디스크 추가되거나 삭제되는 경우 디바이스 네임 오너십 퍼미션이 변경될 수 있다 위 제약사항 극복을 위해 ASMLIB사용 권장됨 라벨명 통해 디스크 경로 제공

이것과 동일한 기능을 제공 - 리눅스에서 제공 udev는 디스크의 유니크아이디를 이용하여 유니크아이디에 해당하는 pseudo device name과 오너십, 퍼미션 유지시켜준다. 이것까지는 dba가 설ㅇ정을 해준다. udev는 시스템 엔지니어가 해주는 것이다.

정리하자면 ASMLIB는 리눅스에서 제공되는 기능인데 pseudo device name과 오너십, 퍼미션 유지시켜준다.

(중요) RAC 설치할 때 디비 스토리지로 ASM 구성할 때 ASM disk를 위해 반드시 파티션 작업을 해야한다. 보통 emc는 파티션을 1m 권고한다. (헤더쪽 조금 남겨놓는것.) 운영중에 디스크 헤더 corruption등 문제가 발생할수있다.(작업하다가 헤더 건드는..) 쓰고있는건데 안쓰는줄알고 ..!

disk 만드는 커맨드 알아놓기 , 추가하는거 (ASM인스턴스관리 수업)
alter diskgroup DGDATA1 add disk '~~'

profile
Slow and steady wins the race.

0개의 댓글