/********************************************************************************************
-- Title : [10g] 리두 로그 파일 관리 - ver.dbrang
-- Key word : redo log file 리두로그파일
********************************************************************************************/

/*************************************
-- 리두 로그 파일 관리
*************************************/
/*
-- 로그 관련 딕셔너리 뷰
*/
select * from v$log;    -- current : user가 쓰고 있는 상태
                               -- inactive : 다 쓰고 checkpoint 완료 상태
                               -- active : 다 쓰고 checkpoint 완료 되지 않은 상태
                               -- unused : 한번도 사용해 본 적이 없는 상태

select * from v$logfile;
select * from v$log_history;
select thread#, status, instance, groups, current_group#, sequence# from v$thread;
select instance_name, host_name, version, status, archiver from v$instance;
select dbid, name, log_mode from v$database;

select a.group#, a.member, b.bytes, b.status, b.archived "ARC", b.sequence# "SEQ"
from v$logfile a
inner join v$log b
on a.group# = b.group#;
 

/*
-- 리두 로그 그룹 추가/삭제
*/
-- 그룹 확인
select a.group#, a.member, b.bytes, b.status, b.archived "ARC", b.sequence# "SEQ"
from v$logfile a
inner join v$log b
on a.group# = b.group#;

-- 그룹 추가
alter database add logfile
    group 4 ( '/home/oracle/oradata/INFRAORA/redo04_1.log'
            , '/home/oracle/oradata/INFRAORA/redo04_2.log'
            ) size 52428800
  , group 5 ( '/home/oracle/oradata/INFRAORA/redo05_1.log'
            , '/home/oracle/oradata/INFRAORA/redo05_2.log'
            ) size 52428800;
alter database add logfile /* group 지정 없을 시 다음 group#으로 자동 지정 */
            ( '/home/oracle/oradata/INFRAORA/redo06_1.log'
            , '/home/oracle/oradata/INFRAORA/redo06_2.log'
            ) size 52428800;

-- 그룹 추가 확인
select a.group#, a.member, b.bytes, b.status, b.archived "ARC", b.sequence# "SEQ"
from v$logfile a
inner join v$log b
on a.group# = b.group#;

-- 그룹 삭제
alter database drop logfile group 5;
alter database drop logfile group 6;

-- OS 파일 삭제
> rm -f /home/oracle/oradata/INFRAORA/redo05*
> rm -f /home/oracle/oradata/INFRAORA/redo06*

-- 그룹 삭제 확인
select a.group#, a.member, b.bytes, b.status, b.archived "ARC", b.sequence# "SEQ"
from v$logfile a
inner join v$log b
on a.group# = b.group#;
 

/*
-- 리두 로그 멤버 추가/삭제
*/
-- 멤버 확인
select a.group#, a.member, b.bytes, b.status, b.archived "ARC", b.sequence# "SEQ"
from v$logfile a
inner join v$log b
on a.group# = b.group#;

-- 멤버 추가
alter database add logfile member
  '/home/oracle/oradata/INFRAORA/redo02_2.log', '/home/oracle/oradata/INFRAORA/redo02_3.log' to group 2
, '/home/oracle/oradata/INFRAORA/redo03_2.log', '/home/oracle/oradata/INFRAORA/redo03_3.log' to group 3;

-- 멤버 추가 확인
select a.group#, a.member, b.bytes, b.status, b.archived "ARC", b.sequence# "SEQ"
from v$logfile a
inner join v$log b
on a.group# = b.group#;

-- 멤버 삭제
alter database drop logfile member
  '/home/oracle/oradata/INFRAORA/redo02_2.log'
, '/home/oracle/oradata/INFRAORA/redo02_3.log'
, '/home/oracle/oradata/INFRAORA/redo03_2.log'
, '/home/oracle/oradata/INFRAORA/redo03_3.log';

-- OS에서 파일 삭제
> rm -f redo02_*.log
> rm -f redo03_*.log

-- 멤버 삭제 확인
select a.group#, a.member, b.bytes, b.status, b.archived "ARC", b.sequence# "SEQ"
from v$logfile a
inner join v$log b
on a.group# = b.group#;
 

/*
-- 리두 로그 그룹 초기화
*/
-- 현재 리두 로그 그룹이 손상된 경우
-- 리두 로그 그룹이 오직 2개만 존재할 경우
alter database clear unarchived logfile group 3;

-- 그룹 초기화 확인(STATUS=UNUSED)
select a.group#, a.member, b.bytes, b.status, b.archived "ARC", b.sequence# "SEQ"
from v$logfile a
inner join v$log b
on a.group# = b.group#;
 

/*
-- 로그 스위치(Log Switch)
*/
-- Current 그룹 확인(STATUS=current)
select a.group#, a.member, b.bytes, b.status, b.archived "ARC", b.sequence# "SEQ"
from v$logfile a
inner join v$log b
on a.group# = b.group#;

-- 로그 스위치
alter system switch logfile;

-- 로그 스위치 확인
select a.group#, a.member, b.bytes, b.status, b.archived "ARC", b.sequence# "SEQ"
from v$logfile a
inner join v$log b
on a.group# = b.group#;
 

+ Recent posts