💡 redo log file이 다른 내용을 덮기 전에 백업을 받아서
archive log file을 생성
💡 월요일에 data file을 백업 받았고 아카이브 모드로 운영하고 있어서 매일 archive log file이 생성되고 있었는데, 금요일에 갑자기 data file이 깨지면서 장애가 발생했습니다.
--> 그러면 복구 방법은 월요일에 백업받았던 data file 2번을 가져오고 여기에 archive log file을 적용해서 복구하면 됩니다.
--> 그래서 최신 파일인 금요일 파일로 2번 파일을 만들어주면 됩니다.
archive log list
SQL> archive log list
데이터베이스 로그 모드 아카이브 모드
자동 아카이브 사용으로 설정됨
아카이브 대상 USE_DB_RECOVERY_FILE_DEST
가장 오래된 온라인 로그 순서 27
아카이브할 다음 로그 29
현재 로그 순서 29
SQL>
SQL> show parameter db_recovery_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /u01/app/oracle/fast_recovery_area
db_recovery_file_dest_size big integer 8256M
[oracle@ora19c ~]$ cd /u01/app/oracle/fast_recovery_area/
[oracle@ora19c fast_recovery_area]$ ls
ORA19
[oracle@ora19c fast_recovery_area]$ cd ORA19
[oracle@ora19c ORA19]$ ls
archivelog autobackup backupset control02.ctl onlinelog
[oracle@ora19c ORA19]$ cd archivelog
[oracle@ora19c archivelog]$ ls
2025_08_18 2025_08_19 2025_08_20 2025_08_21 2025_08_22
[oracle@ora19c archivelog]$ cd 2025_08_18
[oracle@ora19c 2025_08_18]$ ls
[oracle@ora19c 2025_08_18]$ ls
[oracle@ora19c 2025_08_18]$ cd ..
[oracle@ora19c archivelog]$ cd 2025_08_19
[oracle@ora19c 2025_08_19]$ ls
[oracle@ora19c 2025_08_19]$ cd ..
[oracle@ora19c archivelog]$ cd 2025_08_21
[oracle@ora19c 2025_08_21]$ ls
o1_mf_1_22_nbdtokjb_.arc o1_mf_1_24_nbdzt5o2_.arc o1_mf_1_26_nbff6ydv_.arc
o1_mf_1_23_nbdymmnz_.arc o1_mf_1_25_nbf89pfc_.arc o1_mf_1_27_nbfpghnz_.arc
[oracle@ora19c 2025_08_21]$
archive log list shutdown immediate startup mount alter database noarchivelog; alter database open; archive log list
SQL> archive log list
데이터베이스 로그 모드 아카이브 모드
자동 아카이브 사용으로 설정됨
아카이브 대상 USE_DB_RECOVERY_FILE_DEST
가장 오래된 온라인 로그 순서 27
아카이브할 다음 로그 29
현재 로그 순서 29
SQL>
SQL> shutdown immediate
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
SQL>
SQL> startup mount
ORACLE 인스턴스가 시작되었습니다.
Total System Global Area 1979709008 bytes
Fixed Size 8898128 bytes
Variable Size 520093696 bytes
Database Buffers 1426063360 bytes
Redo Buffers 24653824 bytes
데이터베이스가 마운트되었습니다.
SQL>
SQL> alter database noarchivelog;
데이타베이스가 변경되었습니다.
SQL> alter database open;
데이타베이스가 변경되었습니다.
SQL> archive log list
데이터베이스 로그 모드 아카이브 모드가 아님
자동 아카이브 사용 안함으로 설정됨
아카이브 대상 USE_DB_RECOVERY_FILE_DEST
가장 오래된 온라인 로그 순서 27
현재 로그 순서 29
SQL>
shutdown immediate startup mount alter database archivelog; alter database open; archive log list
SQL> shutdown immediate
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
SQL>
SQL> startup mount
ORACLE 인스턴스가 시작되었습니다.
Total System Global Area 1979709008 bytes
Fixed Size 8898128 bytes
Variable Size 520093696 bytes
Database Buffers 1426063360 bytes
Redo Buffers 24653824 bytes
데이터베이스가 마운트되었습니다.
SQL>
SQL> alter database archivelog;
데이타베이스가 변경되었습니다.
SQL> alter database open;
데이타베이스가 변경되었습니다.
SQL> archive log list
데이터베이스 로그 모드 아카이브 모드
자동 아카이브 사용으로 설정됨
아카이브 대상 USE_DB_RECOVERY_FILE_DEST
가장 오래된 온라인 로그 순서 27
아카이브할 다음 로그 29
현재 로그 순서 29
SQL> [
- 오라클 패치
- 아카이브 모드로 변환
- 데이터 베이스 백업
[oracle@ora19c ~]$ rman target / RMAN> backup database include current controlfile;
[oracle@ora19c ~]$ rman target /
RMAN> backup database include current controlfile;
25/08/22에서 backup을(를) 시작하는 중입니다.
복구 카탈로그 대신 대상 데이터베이스 제어 파일을 사용하고 있습니다.
채널을 할당했습니다: ORA_DISK_1
채널 ORA_DISK_1: SID=268 장치 유형=DISK
ORA_DISK_1 채널: 전체 데이터 파일 백업 집합을 시작하는 중입니다.
ORA_DISK_1 채널: 백업 집합에서 데이터 파일을 지정하는 중입니다.
입력 데이터 파일 번호=00001 이름=/u01/app/oracle/oradata/ORA19/system01.dbf
입력 데이터 파일 번호=00003 이름=/u01/app/oracle/oradata/ORA19/sysaux01.dbf
입력 데이터 파일 번호=00004 이름=/u01/app/oracle/oradata/ORA19/undotbs01.dbf
입력 데이터 파일 번호=00007 이름=/u01/app/oracle/oradata/ORA19/users01.dbf
채널 ORA_DISK_1: 25/08/22에서 1 조각을 시작하는 중입니다.
sys 유저로 접속
SQL> select group#, status, sequence#
2 from v$log;
GROUP# STATUS SEQUENCE#
---------- ---------------- ----------
1 INACTIVE 10
2 CURRENT 11
3 INACTIVE 9
SQL> save log.sql
file log.sql(이)가 생성되었습니다
SQL> @log
GROUP# STATUS SEQUENCE#
---------- ---------------- ----------
1 INACTIVE 10
2 CURRENT 11
3 INACTIVE 9
SQL> select name
from v$archived_log;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/fast_recovery_area/ORA19/archivelog/2025_08_20/o1_mf_1_19_nbc0tm
2j_.arc
/u01/app/oracle/fast_recovery_area/ORA19/archivelog/2025_08_20/o1_mf_1_20_nbc0v6
sf_.arc
/u01/app/oracle/fast_recovery_area/ORA19/archivelog/2025_08_20/o1_mf_1_21_nbc175
j1_.arc
/u01/app/oracle/fast_recovery_area/ORA19/archivelog/2025_08_21/o1_mf_1_22_nbdtok
jb_.arc
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/fast_recovery_area/ORA19/archivelog/2025_08_21/o1_mf_1_23_nbdymm
nz_.arc
/u01/app/oracle/fast_recovery_area/ORA19/archivelog/2025_08_21/o1_mf_1_24_nbdzt5
o2_.arc
/u01/app/oracle/fast_recovery_area/ORA19/archivelog/2025_08_21/o1_mf_1_25_nbf89p
fc_.arc
/u01/app/oracle/fast_recovery_area/ORA19/archivelog/2025_08_21/o1_mf_1_26_nbff6y
NAME
--------------------------------------------------------------------------------
dv_.arc
/u01/app/oracle/fast_recovery_area/ORA19/archivelog/2025_08_21/o1_mf_1_27_nbfpgh
nz_.arc
/u01/app/oracle/fast_recovery_area/ORA19/archivelog/2025_08_22/o1_mf_1_28_nbhf6j
vs_.arc
/u01/app/oracle/fast_recovery_area/ORA19/archivelog/2025_08_22/o1_mf_1_29_nbhm53
33_.arc
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/fast_recovery_area/ORA19/archivelog/2025_08_22/o1_mf_1_30_nbhm62
m8_.arc
/u01/app/oracle/fast_recovery_area/ORA19/archivelog/2025_08_22/o1_mf_1_31_nbhm9s
nf_.arc
/u01/app/oracle/fast_recovery_area/ORA19/archivelog/2025_08_22/o1_mf_1_32_nbhmbo
d3_.arc
14 행이 선택되었습니다.
SQL> save arch.sql
file arch.sql(이)가 생성되었습니다
SQL> @arch
💡 로그 스위치를 일으키면 LGWR가 작동해서 redo log buffer의 내용을 다음 log file에 쓰려고 함. 그리고 로그 스위치는 자동으로 발생하는데
alter system switch logfile;
로 수동으로 일으킬 수 있음
- 체크포인트 이벤트
- 아카이브 로그파일 생성