티스토리 뷰

ORACLE/ADMIN

Oracle redo log file, control file 다중화

공부하는알파카 2020. 7. 20. 22:15

Redo log file

리두 로그 파일은 데이터베이스의 모든 변경사항을 기록하는 파일이다. 따라서 리두 로그 파일은 장애 발생 시 반드시 필요하기 때문에 복사본을 가지고 있다. 이 복사본을 멤버라고 하고, 이 멤버들의 집합을 리두 로그 그룹이라고 한다.

 

Oracle에서는 최소 리두 로그 그룹 개수를 2개, 각 그룹 별 최소 멤버 개수를 1개로 정의하고 있지만 실제 운영 데이터베이스에서는 최소 리두 로그 그룹 개수 3개, 각 그룹 별 최소 멤버 개수 2개를 사용한다.

 

 

 

 

Redo log file 다중화

OS 환경 : Oracle Linux 6.3
DB 환경 : Oracle Database 12.1.0.2

 

리두 로그 그룹 추가

- 총 그룹의 개수는 3개, 그룹당 Member 2개, 모든 member 크기는 30M

select group#, thread#, sequence#, bytes/1024/1024 mbyte, members, status 
from v$log 
order by thread#, group#;

현재 로그 그룹을 확인한다.

 

 

select * from v$logfile;

  현재 로그 그룹 내의 파일정보를 확인한다.

리두 로그 그룹 2개가 존재하고, 각 그룹은 멤버를 2개씩 가지고 있다.

 

 

 

alter database add logfile group 3
('/u01/app/oracle/oradata/testdb/disk1/redo03a.log',
'/u01/app/oracle/oradata/testdb/disk2/redo03a.log') size 30m;

리두 로그 그룹을 하나 더 추가해준다.

 

 

 

select group#, thread#, sequence#, bytes/1024/1024 mbyte, members, status 
from v$log 
order by thread#, group#;

현재 로그 그룹을 확인하면 그룹3이 생성된 것을 확인할 수 있다.

 

 

 

 

 

 

 

리두 로그 그룹 삭제

 

alter database add logfile group 4
('/u01/app/oracle/oradata/testdb/disk1/redo04a.log',
'/u01/app/oracle/oradata/testdb/disk2/redo04a.log') size 30m;

삭제 실습을 위해 리두 로그 그룹을 하나 더 생성해주었다.

 

 

 

select group#, thread#, sequence#, bytes/1024/1024 mbyte, members, status 
from v$log 
order by thread#, group#;

리두 로그 그룹 4가 잘 생성된 것을 확인할 수 있다.

 

 

 

리두 로그 그룹은 INACTIVE 상태일 때 삭제가 가능하므로

로그 스위치를 여러번 일으켜 INACTIVE 상태로 만들어준 후 삭제한다.

 

 

 

리두 로그 그룹 삭제 명령어이다.

 

 

 

삭제가 완료되었다.

 

 

 

 

 

 

 

 

Control file

컨트롤 파일은 오라클 서버를 운영하는데 필수적인 정보들을 저장한다.

- 데이터베이스의 동기화 정보(DB명, timestamp, checkpoint, redo log file 등)를 binary 형태로 저장한다.

- 데이터베이스의 물리적 구조 정보를 저장한다.

 

인스턴스가 MOUNT 상태일 때 파라미터 파일에 적혀있는 위치대로 control file을 읽는다. 이 MOUNT 상태부터 control file을 수정할 수 있다.

 

만약 컨트롤 파일에 손상이 생기면 MOUNT 이상의 상태로 갈 수 없으며 완전한 복구도 불가능해진다. 따라서 장애가 발생하더라도 복구가 가능하도록 복사본을 만들어 분산시켜 저장해야 한다.



 

 

 

Control file 다중화

OS 환경 : Oracle Linux 6.3
DB 환경 : Oracle Database 12.1.0.2

 

spfile 다중화

1. DB OPEN 상태 확인
2. 현재 사용중인 파라미터 파일 확인
3. spfile 경로 변경
4. instance 종료
5. control file 복사
6. instance  open -> startup

 

 

 

select status from v$instance;

DB의 OPEN 상태를 확인한다.

 

 

 

현재 DB가 서버 파라미터파일(SPFILE)과 텍스트 파라미터 파일(PFILE) 중 어떤 파일을 사용중인지 확인한다.

 

 

 

컨트롤 파일의 현재 경로를 조회한다.

 

 

 alter system set control_files=
'/u01/app/oracle/oradata/testdb/disk1/control01.ctl','/u01/app/oracle/oradata/testdb/disk2/control02.ctl','/u01/app/oracle/oradata/testdb/disk3/control03.ctl' scope=spfile;

컨트롤파일을 추가하기 위해서 원래 경로와 함께 경로를 하나 더 추가해준다

(spfile에 적힌 컨트롤 파일 경로 변경).

 

 

 

인스턴스를 shutdown 한다.

 

 

[testdb@host01 ~]$ cd /u01/app/oracle/oradata/testdb/disk1
[testdb@host01 disk1]$ cp control01.ctl ../disk3/control03.ctl

원본 컨트롤파일을 새로운 위치로 복사한다.

 

 

 

sqlplus / as sysdba

startup
select name from v$controlfile;

 컨트롤파일이 잘 생성되었는지 확인한다.

 

 

 

 

pfile 다중화 방법

1. db shutdown
2. vi inittestdb.ora -> control_files = '위치1', '위치2', '위치3'; 으로 수정
3. cp 원본컨트롤파일 다중화파일
4. startup

 

SQL> shutdown immediate
[testdb@host01 ~]$ vi $ORACLE_HOME/dbs/inittestdb.ora

pfile에 컨트롤파일의 위치를 직접 추가한다.

 

[testdb@host01 ~]$ cd $ORACLE_BASE/oradata/testdb/disk1
[testdb@host01 disk1]$ cp control01.ctl $ORACLE_BASE/oradata/testdb/disk3/control03.ctl

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함