728x90

ARCHIVE란?

아카이브는 오라클 디비의 데이터가 저장되는 스토리지의 물리적인 디스크가 깨지거나 고장 나는 문제가 발생했을 때 디비 전체 백업이 되어있다면 내가 원하는 시간으로 복구할 수 있는 걸 의미한다. 중요 시스템이라면 아카이브 로그가 꼭 필요하다. 리두 로그가 스위치 할 때 아카이브 로그 모드로 운영한다면 아카이브 로그가 파일 형태로 만들어지고 저장된다.

ARCHIVE Mode

ARCHIVELOG Mode

: B2C, OLTP

NOARCHIVELOG Mode

: B2B, OLAP, DW, 개발 DB

아카이브 로그 모드는 대용량의 빠른 스토리지가 필요하고 추가로 백업 서버가 있어야 운영하기 수월하다.

ARCHIVE 관리

1일 2일 3일 4일 5일 6일 7일
23G 21G 15G 19G 80G 100G 10G

평균 약 38G여서 50G로 만들어야지라고 생각하면 큰일난다. 최대 크기의 20 ~ 30%로 설정한다. 약 120G ~ 130G

아카이브 로그 모드에서 생성된 아카이브 로그 파일은 하루가 지나면 백업 서버를 사용해서 아카이브 로그 백업 관리를 하는 게 가장 좋다.

ARCHIVELOG 파라미터

log_archive_dest는 아카이브 로그 파일이 저장되는 위치이고

log_archive_format는 아카이브 로그 파일의 이름을 설정할 수 있다.

fast_start_mttr_target는 데이터베이스의 인스턴스를 복구할 때 소유되는 시간을 제어할 수 있다. Default 값은 0이고 보통 300초로 설정한다.

파라미터 파일(spfile) 백업

cd /opt/oracle/oradata/dbconfig/XE
cp spfileXE.ora spfileXE.ora_20221118

-- 예전에 만들 백업 파라미터는 backup_parameter 폴더(디렉터리)로 이동
mv spfileXE.ora_20221118 backup_parameter

spfileXE.ora 파일은 중요한 파일이므로 작업 전에 꼭 백업을 해놓고 작업을 해야한다.

Archivelog 디렉터리 생성

cd /
mkdir /ARC_STR
chown oracle.dba /ARC_STR

Archive Log 파라미터 변경

ALTER SYSTEM SET log_archive_dest='/ARC_STR' SCOPE=SPFILE;
ALTER SYSTEM SET log_archive_format='ARCH_STR_%r_%t_%s.ARC' SCOPE=SPFILE;
ALTER SYSTEM SET FAST_START_MTTR_TARGET=300 SCOPE=SPFILE;

/ARC_STR 경로에 ARCH_STR_%r_%t_%s.ARC으로 파일을 저장한다. 또한 FAST_START_MTTR_TARGET 300으로 변경한다.

Archivelog Mode 변경

-- 현재 Archivelog Mode 확인
archive log list;

shutdown immediate; 
startup mount; 
select status from v$instance;
alter database archivelog; 
alter database open;
select status from v$instance;
archive log list;

show parameter log_archive_dest
show parameter log_archive_format
show parameter FAST_START_MTTR_TARGET

-- Redo(리두) 스위치로 아카이브 로그 파일 생성
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;

Linux Shell을 이용한 Archivelog File 자동 삭제 스크립트

cd /home/oracle
mkdir /home/oracle/oraclelog
cd /home/oracle/scripts

vi rman_del_arch.sh
#!/bin/bash
export ORACLE_HOME=/oracle/app/oracle/product/19.0.0.0/db_1
export ORACLE_SID=STR
export PATH=$ORACLE_HOME/bin:$PATH
export DATE=`date +%Y%m%d`
export HOSTNAME=`hostname`

rman log=/home/oracle/oraclelog/${HOSTNAME}_del_arch_${DATE}.log << EOF
connect target /
DELETE noprompt ARCHIVELOG ALL COMPLETED BEFORE 'sysdate -1';
CROSSCHECK ARCHIVELOG ALL;
DELETE EXPIRED ARCHIVELOG ALL;
exit
EOF

-- shell 스크립트 권한 변경
chmod 755 rman_del_arch.sh

--crontab 추가
crontab -e
00 05 * * * /home/oracle/scripts/rman_del_arch.sh

crontab에 등록한다. 매일매일 새벽 5시가 되면 저 Shell이 실행된다.

NOArchivelog Mode 변경

shutdown immediate; 
startup mount; 
select status from v$instance;
alter database noarchivelog; 
alter database open;
select status from v$instance;

참고

https://www.youtube.com/watch?v=DpjiQhd5kNg&list=PLKaW9UT2TL3Lpqrh_lJ8PHyHpR7NgdrPP&index=6 

 

728x90

+ Recent posts