안녕하세요 surmin입니다 🙂
오늘은 Oracle에서 백업과 복구 유틸리티인 RMAN에 대하여 가져왔습니다
먼저 간단하게 백업 종류들에 대하여 말씀을 드리겠습니다.
1. 전체 데이터베이스 백업 (Whole Database Backup)
- 모든 데이터 파일, 컨트롤 파일, 리두 로그 파일을 백업합니다.
- 데이터베이스가 open 상태이거나 shutdown 상태일 때 백업할 수 있습니다.
2. 부분 데이터베이스 백업 (Partial Database Backup)
- 특정 테이블스페이스에 속한 데이터 파일만 백업합니다.
- Archive log mode에서만 가능하며, 특정 테이블스페이스의 데이터를 복원하는 데 유용합니다.
3. 일관성 있는 백업 (Consistent Backup)
- 종류: Close backup, Cold backup, Offline backup입니다.
- 일관성이 없는 백업본으로는 타임 베이스 리커버리가 불가능합니다. 이는 헤더마다 SCN(시스템 변경 번호)이 맞지 않기 때문입니다.
- Noarchive log mode에서는 일관성 있는 백업만 수행할 수 있습니다.
- 데이터베이스를 정상적으로 종료한 후 백업을 수행해야 하며, 모든 데이터 파일, 컨트롤 파일, 리두 로그 파일의 체크포인트 정보가 동일합니다.
- 이 백업은 noarchive log mode와 archive log mode 모두에서 사용 가능합니다.
4. 일관성 없는 백업 (Inconsistent Backup)
- 종류: Open backup, Hot backup, Online backup입니다.
- 데이터베이스가 운영 중일 때 백업을 수행합니다.
- 이 백업은 archive log mode에서만 가능하며, 데이터 일관성이 보장되지 않습니다.
- 데이터베이스 레벨 또는 테이블스페이스 레벨에서 수행할 수 있는데, 이는 부분 데이터베이스 백업과 유사합니다.
5. 전체 백업 (Full Backup)
- 선택한 파일에 속한 모두 데이터 블록 백업
6. 증분 백업 (Incremental Backup)
- 이전 전체 백업 이후에 변경된 블록에 대해서만 백업을 수행합니다.
- 이 백업은 RMAN(Recovery Manager)을 사용하여 수행해야 합니다.
- 블록들중에서 사용하고 있는 블락에 대해서만 즉 크기가 100G가지만 실제로 사용중인 데이터가 1G이면 1G만 받는다.
사전 작업: 아카이브 로그와 RMAN 백업을 받을 디렉터리가 필요합니다.
RMAN을 활용하기 위해서는 먼저 아카이브 로그 모드가 활성화되어 있어야 합니다. 그러면 아카이브 로그 설정부터 살펴보겠습니다
SQL> archive log list
Database log mode No Archive Mode #아카이브 설정 NO 확인
Automatic archival Disabled # 자동 아카이브 기능 비활성화 확인
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 27
Current log sequence 29
SQL> show parameter log_archive
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_config string
log_archive_dest string
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_2 string
log_archive_dest_20 string
log_archive_dest_21 string
log_archive_dest_22 string
log_archive_dest_23 string
log_archive_dest_24 string
log_archive_dest_25 string
log_archive_dest_26 string
log_archive_dest_27 string
log_archive_dest_28 string
log_archive_dest_29 string
log_archive_dest_3 string
log_archive_dest_30 string
log_archive_dest_31 string
log_archive_dest_4 string
log_archive_dest_5 string
log_archive_dest_6 string
log_archive_dest_7 string
log_archive_dest_8 string
log_archive_dest_9 string
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_1 string enable
log_archive_dest_state_10 string enable
log_archive_dest_state_11 string enable
log_archive_dest_state_12 string enable
log_archive_dest_state_13 string enable
log_archive_dest_state_14 string enable
log_archive_dest_state_15 string enable
log_archive_dest_state_16 string enable
log_archive_dest_state_17 string enable
log_archive_dest_state_18 string enable
log_archive_dest_state_19 string enable
log_archive_dest_state_2 string enable
log_archive_dest_state_20 string enable
log_archive_dest_state_21 string enable
log_archive_dest_state_22 string enable
log_archive_dest_state_23 string enable
log_archive_dest_state_24 string enable
log_archive_dest_state_25 string enable
log_archive_dest_state_26 string enable
log_archive_dest_state_27 string enable
log_archive_dest_state_3 string enable
log_archive_dest_state_30 string enable
log_archive_dest_state_31 string enable
log_archive_dest_state_4 string enable
log_archive_dest_state_5 string enable
log_archive_dest_state_6 string enable
log_archive_dest_state_7 string enable
log_archive_dest_state_8 string enable
log_archive_dest_state_9 string enable
log_archive_duplex_dest string
log_archive_format string %t_%s_%r.dbf #아카이브 로그 파일의 이름 형식을 정의합니다.
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_max_processes integer 4
log_archive_min_succeed_dest integer 1
log_archive_start boolean FALSE
log_archive_trace integer 0
log_archive_format string %t_%s_%r.dbf를 보면 로그 아카이브 포맷이 .dbf로 설정되어 있음을 알 수 있습니다. 그러나 .dbf는 데이터 파일의 확장자와 혼동될 수 있으므로, 확장자를 변경하는 것이 좋습니다. 실제로는 확장자가 없어도 정상적으로 작동하며, 관리자가 이 점을 알고 있으면 됩니다.
#확장자 변경
SQL> ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' scope=spfile;
-- 시스템의 로그 아카이브 파일 형식을 '%t_%s_%r.arc'로 설정합니다.
-- '%t'는 테이블스페이스의 번호, '%s'는 시퀀스 번호, '%r'은 리두 로그의 번호를 나타냅니다.
-- 'scope=spfile'은 이 변경 사항이 서버 파라미터 파일(SPFILE)에 저장되어
-- 데이터베이스가 재시작될 때도 유지되도록 함을 의미합니다.
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='location=/archivelog' scope=spfile;
-- 시스템의 로그 아카이브 목적지 1을 '/archivelog'로 설정합니다.
-- 'scope=spfile'은 이 변경 사항이 서버 파라미터 파일(SPFILE)에 저장되어
-- 데이터베이스가 재시작될 때도 유지되도록 함을 의미합니다.
SQL> SHUTDOWN IMMEDIATE;
아카이브 로그 파일을 받을 파티션을 생성한 후, 권한 및 소유자를 지정합니다.
#oracle 접근 위하여 권한 및 소유자 변경
[root@oracle19c /]# chmod 755 archivelog
[root@oracle19c /]# chown oracle:oinstall archivelog
#리스너 확인 down 이면 올리기
[oracle@oracle19c ~]$ lsnrctl status
#db mount까지만
SQL> startup mount
SQL> ALTER DATABASE ARCHIVELOG;
-- 데이터베이스를 아카이브 모드로 전환합니다.
-- 아카이브 모드로 설정하면 트랜잭션 로그가 아카이브되어 데이터 손실을 방지할 수 있습니다.
-- 이 명령어를 실행한 후에는 아카이브 로그가 생성되며,
-- 데이터베이스가 강제로 종료되더라도 이전 트랜잭션을 복구할 수 있습니다.
Database altered.
SQL> alter database open;
아카이브 로그 파일 설정확인
SQL> ARCHIVE LOG LIST;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /archivelog
Oldest online log sequence 28
Next log sequence to archive 30
Current log sequence 30
#redo file을 아카이브 로그 디렉터리로 보내기위하여 일부러 SWITCH 발생 시킵니다.
SQL> ALTER SYSTEM SWITCH LOGFILE;
SQL> / #방금 실행한 명령어 실행
SQL> /
SQL> !
#이전 명령어를 종료하고 쉘 프롬프트로 돌아갑니다.
[oracle@oracle19c ~]$ cd /archivelog/
#'/archivelog/' 디렉터리로 이동합니다. 아카이브 로그 파일이 저장된 위치입니다.
1_30_1175653257.arc 1_31_1175653257.arc 1_32_1175653257.arc 1_33_1175653257.arc 1_34_1175653257.arc
# 현재 디렉터리에 존재하는 아카이브 로그 파일 리스트입니다.
# 파일 이름은 아카이브 로그의 시퀀스 번호와 기타 정보를 포함하고 있습니다.
#아카이브 파일 확인 하였으며, 바이너리 파일이다.
[oracle@oracle19c archivelog]$ ll
total 2576
-rw-r----- 1 oracle oinstall 2618880 Aug 20 22:39 1_30_1175653257.arc
-rw-r----- 1 oracle oinstall 1024 Aug 20 22:39 1_31_1175653257.arc
-rw-r----- 1 oracle oinstall 4096 Aug 20 22:39 1_32_1175653257.arc
-rw-r----- 1 oracle oinstall 1024 Aug 20 22:39 1_33_1175653257.arc
-rw-r----- 1 oracle oinstall 1024 Aug 20 22:39 1_34_1175653257.arc
RMAN 수행 시 알면 좋은 점
- 아카이브가 꽉 차면 데이터베이스가 멈추기 때문에, RMAN으로 백업한 후 아카이브를 삭제해야 합니다.
- RMAN 백업을 수행하기 위해서는 아카이브 로그 모드로 변경해야 합니다. Noarchive 로그 모드에서는 RMAN을 사용할 수 없으므로, 아카이브 로그 모드로 변경한 것입니다.
위에서 한것과 마찬가지로 RMAN 백업 본을 위하여 디렉터리 지정 혹은 생성 해줍니다.
[root@oracle19c /]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part /archivelog
sr0 11:0 1 1024M 0 rom
sdc 8:32 0 50G 0 disk
└─sdc1 8:33 0 50G 0 part /rmanbackup
sda 8:0 0 50G 0 disk
├─sda2 8:2 0 49G 0 part
│ ├─ol-swap 252:1 0 2G 0 lvm [SWAP]
│ └─ol-root 252:0 0 47G 0 lvm /
└─sda1 8:1 0 1G 0 part /boot
RMAN 설정
RMAN구성 확인
[oracle@oracle19c ~]$ rman target /
# oracle 사용자로 로그인한 상태에서 RMAN(Recovery Manager)을 실행하고 현재 데이터베이스('/')에 연결합니다.
RMAN> SHOW ALL;
# RMAN에서 모든 구성 설정을 보여달라는 명령입니다.
using target database control file instead of recovery catalog
# 복구 카탈로그 대신 대상 데이터베이스의 컨트롤 파일을 사용한다는 메시지입니다.
RMAN configuration parameters for database with db_unique_name ORA19C are:
# ORA19C라는 고유 이름을 가진 데이터베이스에 대한 RMAN 구성 매개변수들입니다.
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
# 백업 보존 정책을 중복성 1로 설정합니다. 즉, 최소 1개의 백업을 유지합니다.
# 백업 셋 자체를 하나만 가지고 있겠다.
CONFIGURE BACKUP OPTIMIZATION OFF; # default
# 백업 최적화 기능을 끕니다. 이 기능은 불필요한 백업을 방지할 수 있습니다.
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
# 기본 백업 장치 유형을 디스크로 설정합니다.
# 어느 디스크에 지정을 할건지 지정하는 옵션
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
# 컨트롤 파일 자동 백업 기능을 켭니다.
# rman으로 백업할때 자동으로 백업 , spfile도 자동으로 백업도 해줌
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
# 디스크에 대한 컨트롤 파일 자동 백업 형식을 '%F'로 설정합니다. ('%F'는 기본 파일 이름 형식)
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
# DATAFILE, CONTROL FILE의 backup set의 copy본 갯수를 지정함
# 코어 수에맞게 설정하면 좋지만 인프라에 따라 조금씩 다름
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
# 디스크에 대한 데이터 파일 백업 복사본 수를 1로 설정합니다.
#데이터 파일을 백업할 때 단일 복사본만 생성된다는 의미
# 복사본 여러게로 경로 지정가능
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
# ARCHIVELOG FILE의 backup set의 copy본 갯수를 지정함
# 복사본 여러게로 경로 지정가능
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
# 백업 세트의 최대 크기를 무제한으로 설정합니다.
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
# 데이터베이스 암호화 기능을 끕니다.
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
# 암호화 알고리즘을 AES128로 설정합니다.
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
# 압축 알고리즘을 'BASIC'으로 설정하고 로드 성능을 최적화합니다.
#스탠다드하고 엔터프라이즈하고 사용하는 옵션이 다름
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
# RMAN 출력 로그 저장기간을 지정된 일 수로 구성함
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
# flash recovery area의 archived redo log에 대한 삭제 여부를 설정함
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/19.3.0/dbhome_1/dbs/snapcf_ORA19C.f'; # default
# RMAN은 resync시 생성되는 임시 snapshot control file의 이름을 지정함
추가설정
RMAN> CONFIGURE channel DEVICE TYPE DISK format '/rmanbackup/%d_%U_%T.bk';
-- 백업 채널을 디스크 장치 유형으로 설정하고, 백업 파일 형식을 지정합니다.
-- %d: 데이터베이스 이름, %U: 고유 식별자, %T: 타임스탬프를 사용하여 파일 이름을 생성합니다.
RMAN> CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/rmanbackup/snapcf_ORA19C.f';
-- 스냅샷 제어 파일의 경로와 이름을 지정합니다.
-- 스냅샷 제어 파일은 RMAN 작업 중에 사용되는 중요한 파일입니다.
#확인
RMAN> SHOW ALL;
RMAN configuration parameters for database with db_unique_name ORA19C are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/rmanbackup/%d_%U_%T.bk';
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/rmanbackup/snapcf_ORA19C.f';
RMAN백업
RMAN> backup as backupset database plus ARCHIVELOG delete input;
#데이터베이스와 아카이브 로그를 백업하고, 백업이 완료된 아카이브 로그 파일은 삭제합니다.
Starting backup at 23-AUG-24
current log archived
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=287 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=38 device type=DISK
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=35 RECID=6 STAMP=1177541288
channel ORA_DISK_1: starting piece 1 at 23-AUG-24
channel ORA_DISK_2: starting archived log backup set
channel ORA_DISK_2: specifying archived log(s) in backup set
input archived log thread=1 sequence=39 RECID=10 STAMP=1177723540
channel ORA_DISK_2: finished piece 1 at 23-AUG-24
piece handle=/rmanbackup/023358kl_1_1_20240823 tag=TAG20240823T012541 comment=NONE
channel ORA_DISK_2: backup set complete, elapsed time: 00:00:03
channel ORA_DISK_2: deleting archived log(s)
archived log file name=/archivelog/1_39_1175653257.arc RECID=10 STAMP=1177723540
Finished backup at 23-AUG-24
Starting backup at 23-AUG-24
using channel ORA_DISK_1
using channel ORA_DISK_2
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/app/oracle/oradata/ORA19C/system01.dbf
channel ORA_DISK_1: finished piece 1 at 23-AUG-24
piece handle=/rmanbackup/043358kp_1_1_20240823 tag=TAG20240823T012545 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:45
Finished backup at 23-AUG-24
Starting backup at 23-AUG-24
current log archived
using channel ORA_DISK_1
using channel ORA_DISK_2
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=40 RECID=11 STAMP=1177723590
channel ORA_DISK_1: finished piece 1 at 23-AUG-24
piece handle=/rmanbackup/063358m6_1_1_20240823 tag=TAG20240823T012630 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: deleting archived log(s)
archived log file name=/archivelog/1_40_1175653257.arc RECID=11 STAMP=1177723590
Finished backup at 23-AUG-24
Starting Control File and SPFILE Autobackup at 23-AUG-24
piece handle=/u01/app/oracle/fast_recovery_area/ORA19C/autobackup/2024_08_23/o1_mf_s_1177723591_mdgsorl6_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 23-AUG-24
확인
#아카이브 로그 없어짐 확인
[oracle@oracle19c /]$ cd archivelog/
[oracle@oracle19c archivelog]$ ll
total 0
[oracle@oracle19c rmanbackup]$ ll
total 4096552
-rw-r----- 1 oracle oinstall 71326720 Aug 23 01:25 013358kl_1_1_20240823
-rw-r----- 1 oracle oinstall 52240896 Aug 23 01:25 023358kl_1_1_20240823
-rw-r----- 1 oracle oinstall 2631168 Aug 23 01:25 033358ko_1_1_20240823
-rw-r----- 1 oracle oinstall 836255744 Aug 23 01:26 043358kp_1_1_20240823
-rw-r----- 1 oracle oinstall 516595712 Aug 23 01:26 053358kp_1_1_20240823
-rw-r----- 1 oracle oinstall 5120 Aug 23 01:26 063358m6_1_1_20240823
-rw-r----- 1 oracle oinstall 15872 Aug 23 01:31 ORA19C_08335904_1_1_20240823_ORA19C
-rw-r----- 1 oracle oinstall 835887104 Aug 23 01:32 ORA19C_09335905_1_1_20240823_ORA19C
-rw-r----- 1 oracle oinstall 516595712 Aug 23 01:32 ORA19C_0a335905_1_1_20240823_ORA19C
-rw-r----- 1 oracle oinstall 5632 Aug 23 01:32 ORA19C_0b33591j_1_1_20240823_ORA19C
-rw-r----- 1 oracle oinstall 152064 Aug 23 01:44 ORA19C_0d3359n5_1_1_20240823.bk
-rw-r----- 1 oracle oinstall 835936256 Aug 23 01:44 ORA19C_0e3359n6_1_1_20240823.bk
-rw-r----- 1 oracle oinstall 516595712 Aug 23 01:44 ORA19C_0f3359n6_1_1_20240823.bk
-rw-r----- 1 oracle oinstall 5120 Aug 23 01:44 ORA19C_0g3359ok_1_1_20240823.bk
-rw-r----- 1 oracle oinstall 10600448 Aug 23 01:44 snapcf_ORA19C.f
백업 파일들 보기
- 상태: 사용 가능 (AVAILABLE), 압축: 없음 (NO)을 나타냅니다.
RMAN> list backup; # RMAN에서 현재의 백업 세트를 나열하는 명령어
List of Backup Sets # 백업 세트 목록의 시작
=================== # 구분선
# 각 백업 세트에 대한 정보
BS Key Size Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
1 49.82M DISK 00:00:00 23-AUG-24 # 첫 번째 백업 세트 정보: 키, 크기, 장치 유형, 경과 시간, 완료 시간
BP Key: 1 Status: AVAILABLE Compressed: NO Tag: TAG20240823T012541 # 백업 조각 키, 상태, 압축 여부, 태그 정보
Piece Name: /rmanbackup/023358kl_1_1_20240823 # 백업 조각의 파일 경로
List of Archived Logs in backup set 1 # 백업 세트 1에 포함된 아카이브 로그 목록
Thrd Seq Low SCN Low Time Next SCN Next Time
---- ------- ---------- --------- ---------- ---------
1 39 5339115 22-AUG-24 5362059 23-AUG-24 # 스레드 번호, 시퀀스, 낮은 SCN, 낮은 시간, 다음 SCN, 다음 시간
# 두 번째 백업 세트 정보
BS Key Size Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
2 68.02M DISK 00:00:02 23-AUG-24 # 두 번째 백업 세트 정보
BP Key: 2 Status: AVAILABLE Compressed: NO Tag: TAG20240823T012541 # 백업 조각 키, 상태, 압축 여부, 태그
Piece Name: /rmanbackup/013358kl_1_1_20240823 # 백업 조각 경로
List of Archived Logs in backup set 2 # 백업 세트 2에 포함된 아카이브 로그 목록
Thrd Seq Low SCN Low Time Next SCN Next Time
---- ------- ---------- --------- ---------- ---------
1 35 4906820 20-AUG-24 5007189 20-AUG-24 # 아카이브 로그 정보
1 36 5007189 20-AUG-24 5113413 21-AUG-24
1 37 5113413 21-AUG-24 5226364 21-AUG-24
1 38 5226364 21-AUG-24 5339115 22-AUG-24
# 세 번째 백업 세트 정보
BS Key Size Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
3 2.51M DISK 00:00:00 23-AUG-24 # 세 번째 백업 세트 정보
BP Key: 3 Status: AVAILABLE Compressed: NO Tag: TAG20240823T012541 # 백업 조각 정보
Piece Name: /rmanbackup/033358ko_1_1_20240823 # 백업 조각 경로
List of Archived Logs in backup set 3 # 백업 세트 3에 포함된 아카이브 로그 목록
Thrd Seq Low SCN Low Time Next SCN Next Time
---- ------- ---------- --------- ---------- ---------
1 30 4904956 20-AUG-24 4906805 20-AUG-24
1 31 4906805 20-AUG-24 4906809 20-AUG-24
1 32 4906809 20-AUG-24 4906814 20-AUG-24
1 33 4906814 20-AUG-24 4906817 20-AUG-24
1 34 4906817 20-AUG-24 4906820 20-AUG-24
# 네 번째 백업 세트 정보
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
4 Full 492.66M DISK 00:00:25 23-AUG-24 # 전체 데이터베이스 백업 정보
BP Key: 4 Status: AVAILABLE Compressed: NO Tag: TAG20240823T012545 # 백업 조각 정보
Piece Name: /rmanbackup/053358kp_1_1_20240823 # 백업 조각 경로
List of Datafiles in backup set 4 # 백업 세트 4에 포함된 데이터파일 목록
File LV Type Ckp SCN Ckp Time Abs Fuz SCN Sparse Name
---- -- ---- ---------- --------- ----------- ------ ----
3 Full 5362091 23-AUG-24 NO /u01/app/oracle/oradata/ORA19C/sysaux01.dbf # 데이터파일 정보
5 Full 5362091 23-AUG-24 NO /u01/app/oracle/oradata/ORA19C/insa_tbs01.dbf
7 Full 5362091 23-AUG-24 NO /u01/app/oracle/oradata/ORA19C/users01.dbf
# 다섯 번째 백업 세트 정보
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
5 Full 797.51M DISK 00:00:30 23-AUG-24 # 전체 데이터베이스 백업 정보
BP Key: 5 Status: AVAILABLE Compressed: NO Tag: TAG20240823T012545 # 백업 조각 정보
Piece Name: /rmanbackup/043358kp_1_1_20240823 # 백업 조각 경로
List of Datafiles in backup set 5 # 백업 세트 5에 포함된 데이터파일 목록
File LV Type Ckp SCN Ckp Time Abs Fuz SCN Sparse Name
---- -- ---- ---------- --------- ----------- ------ ----
1 Full 5362090 23-AUG-24 NO /u01/app/oracle/oradata/ORA19C/system01.dbf # 데이터파일 정보
4 Full 5362090 23-AUG-24 NO /u01/app/oracle/oradata/ORA19C/undotbs01.dbf
# 여섯 번째 백업 세트 정보
BS Key Size Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
6 4.50K DISK 00:00:00 23-AUG-24 # 여섯 번째 백업 세트 정보
BP Key: 6 Status: AVAILABLE Compressed: NO Tag: TAG20240823T012630 # 백업 조각 정보
Piece Name: /rmanbackup/063358m6_1_1_20240823 # 백업 조각 경로
List of Archived Logs in backup set 6 # 백업 세트 6에 포함된 아카이브 로그 목록
Thrd Seq Low SCN Low Time Next SCN Next Time
---- ------- ---------- --------- ---------- ---------
1 40 5362059 23-AUG-24 5362115 23-AUG-24 # 아카이브 로그 정보
# 일곱 번째 백업 세트 정보
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
7 Full 10.20M DISK 00:00:01 23-AUG-24 # 전체 백업 정보
BP Key: 7 Status: AVAILABLE Compressed: NO Tag: TAG20240823T012631 # 백업 조각 정보
Piece Name: /u01/app/oracle/fast_recovery_area/ORA19C/autobackup/2024_08_23/o1_mf_s_1177723591_mdgsorl6_.bkp # 백업 조각 경로
SPFILE Included: Modification time: 22-AUG-24 # SPFILE 포함 정보 및 수정 시간
SPFILE db_unique_name: ORA19C # SPFILE의 데이터베이스 고유 이름
Control File Included: Ckp
손상된 데이터 블록이 있는지 검증하는 방법
#데이터베이스의 백업 파일을 검증
RMAN> validate database;
Starting validate at 23-AUG-24
using channel ORA_DISK_1
using channel ORA_DISK_2
channel ORA_DISK_1: starting validation of datafile
channel ORA_DISK_1: specifying datafile(s) for validation
input datafile file number=00003 name=/u01/app/oracle/oradata/ORA19C/sysaux01.dbf
input datafile file number=00007 name=/u01/app/oracle/oradata/ORA19C/users01.dbf
input datafile file number=00005 name=/u01/app/oracle/oradata/ORA19C/insa_tbs01.dbf
channel ORA_DISK_2: starting validation of datafile
channel ORA_DISK_2: specifying datafile(s) for validation
input datafile file number=00001 name=/u01/app/oracle/oradata/ORA19C/system01.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/ORA19C/undotbs01.dbf
channel ORA_DISK_1: validation complete, elapsed time: 00:00:15
List of Datafiles
=================
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
3 OK 0 22828 84480 5364673
File Name: /u01/app/oracle/oradata/ORA19C/sysaux01.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 10891
Index 0 9264
Other 0 41497
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
5 OK 0 1 128 3628158
File Name: /u01/app/oracle/oradata/ORA19C/insa_tbs01.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 110
Index 0 0
Other 0 17
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
7 OK 0 101 641 1252497
File Name: /u01/app/oracle/oradata/ORA19C/users01.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 60
Index 0 15
Other 0 464
channel ORA_DISK_1: starting validation of datafile
channel ORA_DISK_1: specifying datafile(s) for validation
including current SPFILE in backup set
channel ORA_DISK_1: validation complete, elapsed time: 00:00:01
List of Control File and SPFILE
===============================
File Type Status Blocks Failing Blocks Examined
------------ ------ -------------- ---------------
SPFILE OK 0 2
channel ORA_DISK_1: starting validation of datafile
channel ORA_DISK_1: specifying datafile(s) for validation
including current control file for validation
channel ORA_DISK_2: validation complete, elapsed time: 00:00:16
List of Datafiles
=================
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
1 OK 0 17937 117769 5364781
File Name: /u01/app/oracle/oradata/ORA19C/system01.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 81495
Index 0 13239
Other 0 5089
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
4 OK 0 624 44160 5364788
File Name: /u01/app/oracle/oradata/ORA19C/undotbs01.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 0
Index 0 0
Other 0 43536
channel ORA_DISK_1: validation complete, elapsed time: 00:00:01
List of Control File and SPFILE
===============================
File Type Status Blocks Failing Blocks Examined
------------ ------ -------------- ---------------
Control File OK 0 646
Finished validate at 23-AUG-24
DB 복원 시도하기
SQL> shutdown IMMEDIATE
[oracle@oracle19c ORA19C]$ pwd
/u01/app/oracle/oradata/ORA19C
[oracle@oracle19c ORA19C]$ ls
control01.ctl insa_tbs01.dbf redo01.log redo02.log redo03.log sysaux01.dbf system01.dbf temp01.dbf undotbs01.dbf users01.dbf
[oracle@oracle19c ORA19C]$ rm -rf *.*
[oracle@oracle19c ORA19C]$ ls
SQL> startup
ORACLE instance started
Total System Global Area 713027608 bytes
Fixed Size 8900632 bytes
Variable Size 490733568 bytes
Database Buffers 205520896 bytes
Redo Buffers 7872512 bytes
ORA-00205: error in identifying control file, check alert log for more info
SQL> shutdown abort
SQL> startup mount
ORACLE instance started.
Total System Global Area 713027608 bytes
Fixed Size 8900632 bytes
Variable Size 490733568 bytes
Database Buffers 205520896 bytes
Redo Buffers 7872512 bytes
ORA-00205: error in identifying control file, check alert log for more info
#sp파일 복원
RMAN> RESTORE SPFILE TO '/u01/app/oracle/product/19.3.0/dbhome_1/dbs/spfileORA19C.ora' FROM AUTOBACKUP;
STARTUP MOUNT;
RMAN> SELECT DBID FROM V$DATABASE;
run {
startup nomount; # 데이터베이스를 NOMOUNT 모드로 시작
set DBID 1228841285; # DBID 설정 (조회 필요: SELECT DBID FROM V$DATABASE;)
restore spfile to '/u01/app/oracle/product/19.3.0/dbhome_1/dbs/spfileORA19C.ora' from autobackup; #자동 백업에서 SPFILE 복원
shutdown immediate; # 즉시 데이터베이스 종료
startup nomount; # 데이터베이스를 NOMOUNT 모드로 다시 시작
restore controlfile from autobackup; # 자동 백업에서 CONTROLFILE 복원
alter database mount; # 데이터베이스를 MOUNT 모드로 변경
restore database; # 데이터베이스 복원
recover database; # 데이터베이스 복구
alter database open resetlogs; # 데이터베이스를 오픈하고 로그 리셋
}
SELECT name, checkpoint_change# FROM v$datafile;
체크포인트 확인
SELECT name, checkpoint_change# FROM v$datafile;
끝까지 함께해 주셔서 감사합니다! 다음에는 더 흥미로운 주제나 관련된 내용을 준비해 오겠습니다.
참조
Oracle Database recovery using RMAN fails with RMAN-06054: media recovery requesting unknown archived log
https://blog.naver.com/hanajava/220698227558