[Oracle] ARCH 프로세서

·2025년 8월 22일
0

오라클 관리

목록 보기
27/163


🔸 이론1. ARCH 프로세서의 역할

💡 redo log file이 다른 내용을 덮기 전에 백업을 받아서
archive log file을 생성


🔸 이론2. 백업을 해놓으면 나중에 복구를 할 수 있다는 것을 그림으로 설명하시오

💡 월요일에 data file을 백업 받았고 아카이브 모드로 운영하고 있어서 매일 archive log file이 생성되고 있었는데, 금요일에 갑자기 data file이 깨지면서 장애가 발생했습니다.
--> 그러면 복구 방법은 월요일에 백업받았던 data file 2번을 가져오고 여기에 archive log file을 적용해서 복구하면 됩니다.
--> 그래서 최신 파일인 금요일 파일로 2번 파일을 만들어주면 됩니다.


실습1. 아카이브 로그 파일이 자동으로 생성되는 아카이브 모드인지 확인하시오

archive log list

SQL> archive log list
데이터베이스 로그 모드              아카이브 모드
자동 아카이브             사용으로 설정됨
아카이브 대상            USE_DB_RECOVERY_FILE_DEST
가장 오래된 온라인 로그 순서     27
아카이브할 다음 로그   29
현재 로그 순서           29
SQL>

실습2. 아카이브 로그 파일이 생성되었는지 확인하시오

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]$

실습3. 다시 노아카이브 모드로 변경하시오

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>

문제1. 데이터 베이스 모드를 아카이브 모드로 변경하시오

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> [

📌 dba가 db 설치 이후에 반드시 해야하는 작업 3가지

  1. 오라클 패치
  2. 아카이브 모드로 변환
  3. 데이터 베이스 백업

⭐ 문제2. rman 으로 접속해서 full backup 을 하시오

[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 조각을 시작하는 중입니다.

실습4. 로그 스위치를 수동으로 일으키시오

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

실습5. 아카이브 로그 파일이 생성되었는지 확인하시오

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;수동으로 일으킬 수 있음


📌 로그 스위치가 일어나면 반드시 발생하는 일 2가지

  1. 체크포인트 이벤트
  2. 아카이브 로그파일 생성

0개의 댓글