Backup/Archive Log Mode

ARCHIVE LOG MODE 변경하는 방법

잇꼬 2024. 1. 12. 17:26
728x90
반응형
SMALL

1. archive log file 생성되는 디렉터리 생성
[oracle1@oracle ~]$ pwd
/home/oracle1
[oracle1@oracle ~]$ mkdir arch1
[oracle1@oracle ~]$ mkdir arch2
[oracle1@oracle ~]$ ls
arch1   database   Downloads  p13390677_112040_LINUX_1of7.zip  Public     Videos
arch2   Desktop    Music      p13390677_112040_LINUX_2of7.zip  Templates
backup  Documents  ora_data   Pictures                         userdata


2. oracle 접속 (=> sql developer로 확인)
[oracle1@oracle ~]$ sqlplus / as sysdba
SQL> select * from v$parameter where name = 'log_archive_dest_1';

SQL> select * from v$parameter where name = 'log_archive_dest_2';

SQL> select * from v$parameter where name = 'log_archive_format';


3. archive log file이 생성되는 위치 설정
1) mandatory 
- 필수, archive 작업이 성공적으로 완료되어야 online redo file 을 겹쳐 사용 할 수 있다. 
- 공간 부족할 경우 기다린다(Waiting 단계)
- daily check 를 확인해야 한다. 
[oracle1@oracle ~]$ df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs             831M     0  831M   0% /dev
tmpfs                850M  218M  632M  26% /dev/shm
tmpfs                850M  9.6M  840M   2% /run
tmpfs                850M     0  850M   0% /sys/fs/cgroup
/dev/mapper/ol-root   50G   14G   37G  27% /
/dev/mapper/ol-home   67G   13G   55G  20% /home

 => 공간관리 못하면 트랜잭션 속도가 느려진다. 매시간 check
/dev/sda1           1014M  233M  782M  23% /boot
tmpfs                170M   40K  170M   1% /run/user/1001


2) optional (기본값)
- archive 작업이 성공적으로 완료 되지 않은 경우에도 online redo file 을 겹쳐 사용 할 수 있다. 
- 공간이 부족하면 archive log file이 생성되지 않는다.
SQL> alter system set log_archive_dest_1 ="location=/home/oracle1/arch1 mandatory" scope=spfile;
SQL> alter system set log_archive_dest_2 ="location=/home/oracle1/arch2 optional" scope=spfile;


4. archive log file 이 생성될 때 이름 포맷을 설정
1) %s : log sequence number => v$log의 SEQUENCE#
2) %t : thread number(instance number) => v$log 의 THREAD#
3) %r : resetlog id, 여러 데이터 베이스에 걸쳐 아카이브된 로그 파일의 유일한 이름을 나타낸다. => DB 처음 생성될때, DB 불안전한 복구 후 open 할 경우
SQL> alter system set log_archive_format='arch_%t_%s_%r.arc' scope=spfile;


5. redo log 정보 확인

select * from v$log;


6. noarchive log mode 에서 archive log mode 로 변경 방법

1) DB 정상적인 종료 
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.


2) DB mount 단계까지 올리기
SQL> startup mount


3) archive log 로 변경
SQL> alter database archivelog;

tip) 다시 noarchive log mode로 변경하고 싶다면 

SQL> alter database noarchivelog; 

 

4) DB open 하기
SQL> alter database open;


5) archive log mode 변경 되었는지 확인
(1) archive log mode 확인
SQL> archive log list


(2) data file 로 archive log mode 확인
SQL> select log_mode from v$database;


7. redo log file 확인해보기
SQL> select * from v$log;


8. archive_dest 확인
(sql developer에서 확인)
SQL> select * from v$archive_dest;

SQL> select binding, destination, status from v$archive_dest;


#) 물리적 위치 확인
SQL> ! ls /home/oracle1/arch1 /home/oracle1/arch2

SQL> select * from v$archived_log;


#) log switch 발생
SQL> alter system archive log current;


#) ACTIVE 확인
SQL> select * from v$log;


#) archive log 위치, seq 번호 확인 
SQL> select sequence#, name from v$archived_log;


#) 물리적 위치 확인
SQL> ! ls /home/oracle1/arch1 /home/oracle1/arch2

 

tip) archive_processes
SQL> select * from v$archive_processes;
-- ACTIVE : 자동 관리, oracle 관리


tip) arc 파일 확인
SQL> ! ps -ef | grep arc : 임시 대기중

 



■ arachive log mode backup 

 

SQL> select * from v$log;


SQL> select name, checkpoint_change#, status from v$datafile;


SQL> select tablespace_name, logging from dba_tablespaces;


SQL> select name from v$tempfile;


SQL> select name from v$controlfile;


#) 준비작업
=> cold backup 대상 data file, temp file, control file, redo log file 

select 'cp -av '||name|| ' /home/oracle1/backup/arch/cold_20240112/' from v$datafile
union all
select 'cp -av '||name|| ' /home/oracle1/backup/arch/cold_20240112/' from v$tempfile
union all
select 'cp -av '||name|| ' /home/oracle1/backup/arch/cold_20240112/' from v$controlfile
union all
select 'cp -av '||member|| ' /home/oracle1/backup/arch/cold_20240112/' from v$logfile;


[결과]


#1) 디렉터리 생성 
SQL> ! mkdir -p /home/oracle1/backup/arch/cold_20240112
SQL> ! ls /home/oracle1/backup/arch/cold_20240112


#2) 초기 파라미터 파일 백업
SQL> create pfile ='/home/oracle1/backup/arch/cold_20240112/initora11g_20240112.ora' from spfile;


#3) 생성 되었는지 확인
SQL> ! ls /home/oracle1/backup/arch/cold_20240112


#4) DB 내리기
SQL> shutdown immediate
SQL> !



#5) OS 나오기 pfile 확인
[oracle1@oracle ~]$ cd backup/arch/cold_20240112/
[oracle1@oracle cold_20240112]$ ls
initora11g_20240112.ora


#6) vi 편집기로 backup.sh 생성하기
[oracle1@oracle cold_20240112]$ vi backup.sh

(위에 생성한 cp -av 문장 붙여놓기)

:wq(저장)

[oracle1@oracle cold_20240112]$ ls
backup.sh  initora11g_20240112.ora
[oracle1@oracle cold_20240112]$ sh backup.sh > backup.log


#) 내용 확인 
[oracle1@oracle cold_20240112]$ cat backup.sh


#) 확인
[oracle1@oracle cold_20240112]$ ls

 

#) backup 완료

SQL> startup

728x90
반응형
LIST