티스토리 뷰
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
'ORACLE > ADMIN' 카테고리의 다른 글
Oracle Listener 구성(정적등록vs동적등록) (0) | 2020.07.28 |
---|---|
Oracle undo 언두 관리 (0) | 2020.07.21 |
Oracle User 유저 생성 (2) | 2020.07.19 |
Oracle Tablespace 테이블스페이스 생성 (0) | 2020.07.18 |
Oracle Database 데이터베이스 수동 생성 (5) | 2020.07.17 |