[oracle database storage 구성 방식]
1. file system
DB를 구성하는 file(datafile, controlfile, redo log file)이 OS file 형태로 생성되는 방식.
관리가 편함. (ls, cp, mv, rm 등의 파일 관리가 가능)
보안, 장애에 취약.
OS를 통해서 disk I/O가 발생해서 속도가 느리다.
공유 디스크 설정 불가 -> RAC storage로는 적합X
select * from dba_data_files;
2. raw device
DB를 구성하는 file을 OS를 거치지 않고 disk에 직접 저장하는 방식.
file 형태로 생성되지 않음.
보안, 장애 안정성 강화. (file이 노출되지 않으므로 사용자의 실수에 의한 장애 발생 가능성이 낮아짐)
disk I/O 속도가 매우 빠름. (OS를 거치지 않아서)
관리가 매우 불편.
3. ASM
ASM 인스턴스를 통해 file 관리.
raw device에 비해 관리가 용이함.
OS를 통한 disk I/O가 발생X, ASM instance에 의해 발생.
속도가 raw device보단 느리지만 file system보단 빠르다.
[RAC storage 구성]
1. local disk
– ORACLE_HOME
– GRID_HOME
– archive log
2. shared disk
– redo log file (1, 2번 thread)
– datafile(1, 2번 undo 포함)
– tempfile
– controlfile
– ocr
– voting disk
– spfille
** redo log 구성
– 1번 instance의 변경 작업은 1번 thread redo log에 기록 -> 1번 서버 local disk의 archive file로 떨어짐
– 2번 instance의 변경 작업은 2번 thread redo log에 기록 -> 2번 서버 local disk의 archive file로 떨어짐
-> 하지만 모든 redo log file은 shared disk에 존재하므로 각 instance에서 모든 redo log에 대한 관리 가능
** undo tablespace 구성
– 1번 instance의 rollback image는 1번 undo tbs에 기록.
– 2번 instance의 rollback image는 2번 undo tbs에 기록.
-> 모든 undo tablespace의 datafile은 shared disk에 존재하므로 각 instance에서 모든 undo에 대한 관리 가능.
[ocr과 voting disk]
crs 필수 구성 요소
shared disk에 저장
1. OCR(Oracle Cluster Registry)
– 클러스터와 관련된 메타데이터를 저장하는 저장소
1) 클러스터 구성 정보 저장 : 각 노드 정보, 데이터베이스 및 리소스에 대한 정보
2) 리소스 관리 : 각 인스턴스, vip, disk 등의 서비스 정보 관리
2. voting disk
– 각 노드에 대한 상태 체크 결과를 저장하는 저장소
– 3개 이상 구성 권고
1) 각 노드 상태 체크
2) fail-over 기능
[CRS 구조]
1. CRS(Cluster Ready Service)
– crsd 프로세스에 의해 동작
– ocr에 저장된 클러스터 리소스 관리
– 시작, 정지, 상태 관리
– 리소스 상태 관리
2. CSS(Cluster Synchronization Service)
– cssd 프로세스에 의해 동작
** cssd : ocssd, cssdagent, cssdmonitor 프로세스로 구성
– 각 클러스터 노드 관리
3. EVM
4. CTSS
5. ONS
[RMAN]
Restore Manager
oracle DB file에 대한 backup 및 복구 tool
** 기능
1) 백업 및 복구
2) 증분 백업 : 기존 백업에서 변경된 블럭만 백업하고 따로 관리한다. archive와 느낌이 비슷함.
3) 압축 백업 : 백업 파일을 압축하여 보관 -> 저장 공간 절약
4) 자동 백업 : 단순한 설정만으로 자동 백업
5) 암호화 : 백업 파일의 암호화 설정 가능 -> 보안 강화
** 백업 대상
datafile, controlfile, parameter file, archive log file (redo는 archive가지고 대충 됨.)
[RMAN 백업]
oel8copy 서버 ora19db에서 진행!
DB archive log mode로 변경
- 그래야 백업 받을 수 있음.
- archive 폴더 생성
mkdir /oracle19/arch
-- DB open 상태에서 경로 설정
alter system set log_archive_dest_1='location=/oracle19/arch' scope=spfile;
shutdown immediate
startup mount
alter database archivelog;
alter database open;
archive log list;
-- RMAN 접속
rman target /
-- 전체 스키마 정보 확인
report schema;
-- 모든 설정 상태 확인
show all;
-------------------출력---------------------
RMAN configuration parameters for database with db_unique_name ORA19DB are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default -- 보관주기
CONFIGURE BACKUP OPTIMIZATION OFF; # default -- 최적화 설정(off : 동일한 파일을 다시 백업 받을 수 있게 해줌)
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 '/oracle19/app/oracle/product/19.3.0.1/db_1/dbs/snapcf_ora19db.f'; # default -- 스냅샷 제어 파일 경로
-- backup본 확인
list backup;
-- 백업 받기
backup database;
1. 전체 DB 백업
RMAN> backup database;
2. 특정 데이터파일 백업
select file#, name from v$datafile;
RMAN> backup datafile 1;
또는
RMAN> backup datafile '/oracle19/app/oracle/oradata/ORA19DB/system01.dbf';
3. 아카이브 로그 백업
RMAN> backup archivelog all;
4. 확인
RMAN> list backup;
[RMAN을 사용한 백업 및 복구]
case1) system tablespace datafile 물리적 손상
1. 백업 수행
mkdir -p /oracle19/backup/ora19db
rman target /
-- backup dir 설정
configure channel device type disk format '/oracle19/backup/ora19db/d_%d_%U_%T.bk';
backup datebase;
2. 확인
cd /oracle19/backup/ora19db/
ll
3. 장애 발생
rm /oracle19/app/oracle/oradata/ORA19DB/system01.dbf
select * from dba_data_files;
4. shutdown abort
5. 장애 복구
-- db mount
startup mount
-- restore
RMAN> restore datafile 1;
-- recover
RMAN> recover datafile 1;
-- db open
RMAN> alter database open;
case2) 일반 tablespace datafile 물리적 손상(online 중 유실)
1. 테이블스페이스 생성
select * from dba_data_files;
create tablespace ts_test1 datafile '/oracle19/app/oracle/oradata/ORA19DB/ts_test01.dbf' size 10m;
2. 테이블 생성 및 데이터 입력
create table recover_test1(no number) tablespace ts_test1;
insert into recover_test1 values(1);
insert into recover_test1 values(2);
insert into recover_test1 values(3);
commit;
3. 백업
RMAN> configure channel device type disk format '/oracle19/backup/ora19db/d_%d_%U_%T.bk';
-- RMAN세션을 나갔다 오면 설정이 초기화 됨.
RMAN> backup database;
4. 로그 스위치 5번
SQL> alter system switch logfile;
5. 새로운 데이터 입력
insert into recover_test1 values(4);
insert into recover_test1 values(5);
insert into recover_test1 values(6);
commit;
6. 장애 발생
rm /oracle19/app/oracle/oradata/ORA19DB/ts_test01.dbf
7. 복구
-- tbs offline
alter database datafile 13 offline; -- 13번이 ID라서!
또는
alter tablespace TS_TEST1 offline;
-- restore & recover
RMAN> restore datafile 13;
RMAN> recover datafile 13;
-- tbs online
alter database datafile 13 online;
또는
alter tablespace TS_TEST1 online;