데이터베이스

[ORACLE] control file 다중화하기

화이트해커 Luna 🌙 2022. 11. 18. 04:39
728x90
반응형

control file 다중화

컨트롤파일이란 모든 데이터파일, 로그 파일의 정보를 갖고있는 바이너리파일로, 오라클 DB를 마운트하고 OPEN해서 사용하는데 꼭 필요한 파일이다. 그렇기 때문에 컨트롤파일이 손상되면 오라클을 마운트, 오픈할 수 없으므로 서로 다른 디스크에 두개 이상으로 다중화를 해두는게 좋다.

-목차-
1. 다중화 계획
2. 다중화 실습
3. 다중화 확인

1. 다중화 계획

Spfile 환경에서 control file을 다음의 경로와 순서로 분산배치한다.

경로
/app/ora19c/oradata/disk4/control.ctl
/app/ora19c/oradata/disk5/control.ctl

실습 순서
1. DB 상태 확인
2. 홈위치 확인
3. 디렉토리 생성
4. 경로 수정
5. 옮기기
6. 작동확인


2. 다중화 실습

DB 상태 확인
SYS>select status from v$instance; 

STATUS
------------
OPEN 

//현재 OPEN상태

홈위치 확인
SQL> !env | grep ORACLE
ORACLE_OWNER=ora19c
ORACLE_SID=DB19
ORACLE_BASE=/app/ora19c
ORACLE_HOSTNAME=DB19.itclass.co.kr
ORACLE_HOME=/app/ora19c/19c


=====================================

SQL> !ls $ORACLE_HOME/dbs
hc_DB19.dat  init.ora  initDB19.ora  lkDB19  orapwDB19  spfileDB19.ora

홈위치랑 control file이랑 경로가 겹치지 않는지 조회를 해준다.


디렉토리 생성
SQL> !mount | grep dev/sd
/dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota)

======================================================================

SQL> !mkdir /app/ora19c/oradata/disk4 //disk4생성
SQL> !mkdir /app/ora19c/oradata/disk5 //disk5생성

======================================================================

SQL> !ls /app/ora19c/oradata   // 확인
DB19  disk4  disk5


경로 수정
SQL> select name, value from v$parameter   //현재위치조회
  2  where name like 'control_files';

NAME                                              VALUE
---------------------------------    --------------------------------------------
control_files                        /app/ora19c/oradata/DB19/control01.ctl, 
                                     /app/ora19c/oradata/DB19/control02.ctl
                                     
=======================================================================================

SQL> ALTER SYSTEM SET control_files =         
  2  '/app/ora19c/oradata/disk4/control.ctl',
  3  '/app/ora19c/oradata/disk5/control.ctl' scope = spfile; 

System altered.

오라클이 다시 시작될 때 적용된다.


옮기기
SQL> shutdown immediate;

controrl 파일은 살아있을 때 복사하면 안되니까 일단 셧다운부터 해준다.

SQL>  !mv /app/ora19c/oradata/DB19/control01.ctl /app/ora19c/oradata/disk4/control.ctl
SQL>  !mv /app/ora19c/oradata/DB19/control02.ctl /app/ora19c/oradata/disk5/control.ctl

=========================================================================================

SQL>  !ls /app/ora19c/oradata/disk4
control.ctl

SQL> !ls /app/ora19c/oradata/disk5
control.ctl

!mv명령어로 옮기고 !ls로 확인한다.


작동확인
SQL> startup
ORACLE instance started.

Total System Global Area  763359832 bytes
Fixed Size                  8901208 bytes
Variable Size             532676608 bytes
Database Buffers          218103808 bytes
Redo Buffers                3678208 bytes
Database mounted.
Database opened.

Database가 정상적으로 마운트되고 오픈되었다.


3. 다중화 확인

SQL> select name, value from v$parameter
  2  where name like 'control_files';

NAME                                       VALUE
--------------------------------------------------------------------------------
control_files                          /app/ora19c/oradata/disk4/control.ctl,
                                       /app/ora19c/oradata/disk5/control.ctl

정상적으로 운영되고있다.

728x90
반응형