설치하고 나면 컨트롤파일 삼중화 해달라고 하거나
리두로그 그룹 멤버 수 정해서 어디다가 해달라고 지정해주는 경우가 있음.
어제 개발계 하나 정규 HA 구성 하나 설치했는데
둘 다 컨트롤파일 삼중화 하고 리두로그 경로 변경, 멤버설정, 크기 변경 함.
SQL> show parameter control_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /u01/app/oracle/oradata/UPTEST
/control01.ctl, /u01/app/oracl
e/fast_recovery_area/UPTEST/co
ntrol02.ctl

현재 컨트롤 파일의 경로는 /u01/app/oracle/oradata/UPTEST/control01.ctl 인데
=> /u01/app/oracle/DB/control01.ctl 로 바꾸고자 한다.
SQL> ALTER SYSTEM SET control_files =
'/u01/app/oracle/DB/control01.ctl',
'/u01/app/oracle/DB/control02.ctl',
'/u01/app/oracle/DB/control03.ctl'
SCOPE=SPFILE;
SQL> shutdown immediate;
SQL> startup nomount;
SQL> exit



rman target /
RMAN> RESTORE CONTROLFILE FROM '/u01/app/oracle/oradata/UPTEST/control01.ctl';
RMAN> EXIT;

SQL> shutdown immediate;
SQL> startup;
#확인
SQL> show parameter control_files

잘 바뀐 것을 확인 할 수 있다 !
현재의 리두로그를 확인하는 쿼리
SET LINESIZE 200
SET PAGESIZE 100
COL MEMBER FORMAT A60
COL GROUP_STATUS FORMAT A15
SELECT A.GROUP#,
A.MEMBER,
B.BYTES / 1024 / 1024 AS SIZE_MB,
B.STATUS AS GROUP_STATUS
FROM V$LOGFILE A
JOIN V$LOG B ON A.GROUP# = B.GROUP#
ORDER BY A.GROUP#, A.MEMBER;

현재 리두로그 그룹 3개에 각각 멤버 1개씩 50MB 로 구성되어있다.
=> 멤버 2 1GB 그룹 10개 총 20G 로 구성하라는 요청이 있었다.
ALTER DATABASE ADD LOGFILE GROUP 4 '/u01/app/oracle/DB/redo04a.log' SIZE 1G;
ALTER DATABASE ADD LOGFILE MEMBER '/u01/app/oracle/DB/redo04b.log' TO GROUP 4;

ALTER 문이 잘 들어가는 것 같아서 그룹 5번까지 만들고 확인해보니
기존에 있던 그룹 1번과 3번이 INACTIVE 상태 => DROP 가능
-- 그룹 삭제
ALTER DATABASE DROP LOGFILE GROUP 1;
ALTER DATABASE DROP LOGFILE GROUP 3;
-- 재생성
ALTER DATABASE ADD LOGFILE GROUP 1 (
'/u01/app/oracle/DB/redo01a.log',
'/u01/app/oracle/DB/redo01b.log'
) SIZE 1G;
ALTER DATABASE ADD LOGFILE GROUP 3 (
'/u01/app/oracle/DB/redo03a.log',
'/u01/app/oracle/DB/redo03b.log'
) SIZE 1G;

-- 확인

잘 들어갔으니 계속 진행 한다.
-- 그룹 2번 삭제 후 재생성


-- 확인

-- 그룹 8,9,10 만드는데 용량 부족

공간부족 ~ 작게만들기
ALTER DATABASE ADD LOGFILE GROUP 6 ('/u01/app/oracle/DB/redo06a.log', '/u01/app/oracle/DB/redo06b.log') SIZE 50M;
ALTER DATABASE ADD LOGFILE GROUP 7 ('/u01/app/oracle/DB/redo07a.log', '/u01/app/oracle/DB/redo07b.log') SIZE 50M;
ALTER DATABASE ADD LOGFILE GROUP 8 ('/u01/app/oracle/DB/redo08a.log', '/u01/app/oracle/DB/redo08b.log') SIZE 50M;
ALTER DATABASE ADD LOGFILE GROUP 9 ('/u01/app/oracle/DB/redo09a.log', '/u01/app/oracle/DB/redo09b.log') SIZE 50M;
ALTER DATABASE ADD LOGFILE GROUP 10 ('/u01/app/oracle/DB/redo10a.log', '/u01/app/oracle/DB/redo10b.log') SIZE 50M;


이런저런

공간을 확보하려고 해봤지만.. 맘에 안들어서 그냥 지우기
ALTER DATABASE DROP LOGFILE GROUP 8;
ALTER DATABASE DROP LOGFILE GROUP 9;
ALTER DATABASE DROP LOGFILE GROUP 10;

checkpoint 를 일으키고 로그스위치 하면서

이렇게 정리한다.