DB (데이터베이스)/Oracle (오라클)

[Oracle] oracle database archive log mode 변경 방법

뜽배 2024. 1. 15. 19:32
728x90
반응형

oracle Database의 데이터베이스 로그 모드에는 archive log mode와 no archive log mode 이렇게 두가지가 있다.

 

첫번째로 archive log mode란

oracle database에서 DML, DDL, TCL등 명령어를 통해 database에 작업을 하게될 경우 모든 작업이 oracle database의 redo log파일에 저장이 된다.

그렇게 설정한 redo log파일이 예를들어 100MB 씩 3개가 있다고 가정하자. 파일은 redo1, redo2, redo3 이렇게 있다고 가정한다.

oracle database에 작업을 할 경우 redo1에 작업 기록이 저장이 된다. 만약 redo1에 100MB 전부 기록이 되었다면 redo2에 작업기록이 저장이 될 것이다.

이 때 redo1은 파일을 .arc 파일 형태로 바꾸어 기록된 내용을 별도의 파일로 저장하여 운영하는 방법이다.

결국 redo1 -> redo2 -> redo3 -> redo1 이런식으로 redo log파일은 순환할것이며, 각 redo log파일은 용량이 가득차면 .arc파일 형태의 archive파일은 내뱉는다.

이 방식은 archive파일을 통해 특정 시점으로 database를 복구 할 수 있다는 것이다.

 

두번째 no archive log mode란

archive log mode와 같이 redo1 -> redo2 -> redo3 -> redo1 이런식으로 redo log파일이 순환하는 것 까지는 같다.

하지만 redo1 -> redo2 로 넘어갈 때 redo1의 용량이 가득 차도 .arc 파일로 저장하지 않는다. 따라서 redo log가 순환함에 변경이 기록된 데이터는 한정적이고, 덮어써진 데이터는 복구할 수 없다.

oracle database는 기본적으로 설치했을 경우 no archive log mode이다 archive log mode로 변경하는 방법에 대해서 알아볼 것이다.

spfile과 pfile 둘중 어느것을 사용하는지에 따라 방법이 다르므로 각각 설명할것이다.

 

 

archive log mode로 변경하는 방법


1. spfile 확인

SQL> show parameter spfile;

 

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
spfile                               string                 C:\WINDOWS.X64_193000_DB_HOME\
                                                            SPFILE_TEST\SPFILEORCL.ORA


--> 위 결과에서 value의 값이 존재한다면 spfile, 존재하지 않는다면 pfile이다.

 

 

2. archive log mode 확인

C:\Users>sqlplus "/as sysdba"
SQL*Plus: Release 19.0.0.0.0 - Production on 월 1월 15 10:48:49 2024
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


다음에 접속됨:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0


SQL> archive log list

데이터베이스 로그 모드              아카이브 모드가 아님
자동 아카이브             사용안함으로 설정됨
아카이브 대상            C:\app\archive_file
가장 오래된 온라인 로그 순서     49
아카이브할 다음 로그   51
현재 로그 순서           51



3. instance status확인

SQL> select instance_name, status from v$instance;

--> 데이터베이스가 open상태인지 확인한다.

 

4. 아카이브 로그 저장 경로 확인

SQL> show parameter log_archive_dest_1

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
log_archive_dest_1                   string                 
log_archive_dest_10                  string
log_archive_dest_11                  string
log_archive_dest_12                  string
log_archive_dest_13                  string
log_archive_dest_14                  string
log_archive_dest_15                  string
log_archive_dest_16                  string
log_archive_dest_17                  string
log_archive_dest_18                  string
log_archive_dest_19                  string

--> log_archive_dest_1의 value 값이 없는것을 확인 할 수 있다.

 

5. log_archive_dest_1 parameter 변경

SQL> ALTER system SET log_archive_dest_1 = 'location=C:\app\archive_file' SCOPE=spfile;

--> 실제로 archive log파일이 생성될 위치를 지정한다.

 

6. archive log 파일이 생성될 때 파일 명의 format을 지정한다.

SQL> ALTER system SET log_archive_format = '%t_%s_%r.arc' SCOPE=spfile;


--> 위와 같이 파일명 포맷을 설정합니다.
%t : 쓰레드 번호
%s : 로그 시퀀스 번호
%r : resetlogs ID

 

7. Database 재시작

SQL> shutdown immediate;

SQL> startup mount;

 

8. archive log mode변경

SQL > archive log list;
데이터베이스 로그 모드              아카이브 모드가 아님
자동 아카이브             사용안함으로 설정됨
아카이브 대상            C:\app\archive_file
가장 오래된 온라인 로그 순서     49
아카이브할 다음 로그   51
현재 로그 순서           51

SQL> alter database archivelog;

SQL> alter database open;

SQL> archive log list;
데이터베이스 로그 모드              아카이브 모드
자동 아카이브             사용으로 설정됨
아카이브 대상            C:\app\archive_file
가장 오래된 온라인 로그 순서     49
아카이브할 다음 로그   51
현재 로그 순서           51

 

9. archive파일 생성 확인

SQL> alter system switch logfile;

--> 위 명령어로 해당 위치에 .arc파일이 기록되는지 확인한다.

 

 


참고사이트 :

imbang.net/2019/05/18/오라클-아카이브-모드archive-log-mode-변경-방법/

728x90
반응형