dba가 백업을 하기에 앞서서 db에 기본적으로 셋팅해놔야 할 필수작업들을 14장에서 배우고있다.
1. 인스턴스 장애가 발생했을 때 복구에 걸리는 시간을 지정
- 관련 파라미터 :
fast_start_mttr_target
(기본값 0, 최대값 1시간) - 10분정도로 지정하면 됩니다!
2. 오라클 데이터 베이스를 구성하는 중요 파일들을 다중화 합니다.
data file
: 백업 대상control file
: 다중화 대상redo log file
: 다중화 대상
✅ 다중화가 되어져 있는지 확인 작업을 해야한다.
3. 아카이브 로그 모드로 변환을 합니다. (오늘 진행)
SYS @ orcl > @log
GROUP# STATUS SEQUENCE#
---------- ---------------- ----------
1 INACTIVE 128
2 INACTIVE 129
3 CURRENT 131
4 INACTIVE 126
5 INACTIVE 127
6 INACTIVE 130
-- 6개가 있다 !
✅ 로그라이터가 두개 멤버에 내려쓰는데 꽉차면 로그스위치가 일어난다. 6번까지 꽉차면 다시 그룹1으로 오는데 이게 덮어씌워진다. 덮어씌워지기전에 아카이브로그 파일에 내용들이 저장되므로 아카이브 로그 모드를 해놓아야 함 !
: 아카이브 라는 프로세서가 리두로그파일에 대한 복사본을 생성해준다.
💡 로그라이터는 리두로그 파일에 내려쓰지만 이 복사본을 아카이브 로그 파일에 만드는 애는 아카이브 프로세서이다.
✅ arch 프로세서는 REDO LOG FILE을 백업하는 백그라운드 프로세서 입니다.
실습
1. 아카이브 모드인지 확인하기SYS @ orcl > archive log list Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 126 Next log sequence to archive 131 Current log sequence 131
실습
2. 생성되는 위치SYS @ orcl > show parameter db_recovery_file_dest NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string +FRA -- 여기에 생성 db_recovery_file_dest_size big integer 20G
실습
3. 아카이브 로그 파일의 위치를 확인하는 sqlselect name from v$archived_log; +FRA/orcl/archivelog/2023_10_04/thread_1_seq_130.328.1149327701 +FRA/orcl/archivelog/2023_10_04/thread_1_seq_129.329.1149327699 92 rows selected.
thread_1
는 인스턴스 번호. 인스턴스1 이다.seq_130
는 로그 시퀀스 번호. 130개나 되었다! 130에 대한 아카이브 로그 파일이 스레드 1번에 생성되었다 라는 뜻.
실습
4. 아카이브 프로세서가 잘 떠있는지 확인하는 sqlselect * from v$bgprocess where name like '%ARC%'; 5F675038 2 ARC0 Archival Process 0 0 5F675B10 1 ARC1 Archival Process 1 0 5F6770C0 1 ARC2 Archival Process 2 0 5F677B98 1 ARC3 Archival Process 3 0
✅ archn 이라고 나오는 이유가 n 자리에 숫자가 들어가기 때문! 얘네들이 리두로그파일을 백업해서 아카이브 로그 파일을 만드는 프로세서 들이다 !
[orcl:~]$ ps -ef | grep arc oracle 10814 1 0 09:11 ? 00:00:00 ora_arc0_orcl oracle 10816 1 0 09:11 ? 00:00:00 ora_arc1_orcl oracle 10820 1 0 09:11 ? 00:00:00 ora_arc2_orcl oracle 10824 1 0 09:11 ? 00:00:00 ora_arc3_orcl
실습
1. 현재 아카이브 로그 파일이 생성되는 위치를 +FRA가 아닌 /home/oracle/arch라는 폴더에 생성되게끔 /home/oracle 밑에 arch 라는 폴더를 생성하기
[orcl:~]$ cd ~ [orcl:~]$ pwd /home/oracle [orcl:~]$ mkdir arch [orcl:~]$ ls -ld arch drwxr-xr-x 2 oracle oinstall 4096 10월 4 10:27 arch
실습
2. /home/oracle/arch가 아카이브 로그파일이 생성될 위치가 되게 하시오
SYS> alter system set db_recovery_file_Dest='/home/oracle/arch';
실습
3. 로그 스위치를 수동으로 일으켜서 아카이브 로그 파일이 강제로 생성되게 하기
SYS> alter system switch logfile; [orcl:~]$ cd arch [orcl:arch]$ ls ORCL [orcl:arch]$ cd ORCL/ [orcl:ORCL]$ ls archivelog [orcl:ORCL]$ cd archivelog/ [orcl:archivelog]$ ls 2023_10_04 [orcl:archivelog]$ cd 2023_10_04/ [orcl:2023_10_04]$ pwd /home/oracle/arch/ORCL/archivelog/2023_10_04 [orcl:2023_10_04]$ ls o1_mf_1_131_lksj20r0_.arc
실습
4. 노아카이브 모드로 변환하기
SQL> shutdown immediate SQL> startup mount SQL> alter database noarchivelog; SQL> alter database open; SQL> archive log list SYS @ orcl > archive log list; Database log mode No Archive Mode Automatic archival Disabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 127 Current log sequence 132
실습
5. 다시 아카이브 모드로 변환하기
SQL> shutdown immediate SQL> startup mount SQL> alter database archivelog; SQL> alter database open; SQL> archive log list Database log mode Archive Mode
select name from v$controlfile;
select group#, members from v$log;
archive log list
alter system set fast_start_mttr_target=600;
아카이브 로그 파일 이름 및 대상을 구성하려면
Enterprise Manager > Availability > Configure Recovery Settings
를 선택합니다.
이전 로그 파일을 겹쳐쓰지 않도록 하려면 각각의 아카이브 로그 파일이 고유한 이름을 가져야
합니다. 슬라이드에 표시된 것과 같이 이름 지정 형식을 지정하십시오. 고유한 파일 이름을
생성할 수 있도록 Oracle Database 11g에서는 이름 형식에 다양한 대체 문자를 허용합니다.
•%s
: 파일 이름의 일부로 Log Sequence Number를 포함합니다.
•%t
: 파일 이름의 일부로 스레드 번호를 포함합니다.
•%r
: resetlogs ID를 포함하여 Log Sequence Number를 재설정하는 특정 고급 Recovery
기법후에도 아카이브 로그 파일 이름이 고유하게 유지되도록 보장합니다.
•%d
: 파일 이름의 일부로 데이터베이스 ID를 포함합니다.
형식에는 최적의 사용법으로 %s, %t 및 %r이 포함됩니다(%d는 여러 데이터베이스가 동일한
아카이브 로그 대상을 공유하는 경우에 포함될 수도 있음).
기본적으로 Fast Recovery Area가 활성화된 경우 USE_DB_RECOVERY_FILE_DEST는
아카이브 로그 파일 대상으로 지정됩니다. 아카이브 로그 파일은 최대 10개의 다른 대상에
기록될 수 있습니다. 대상은 로컬(디렉토리) 또는 원격(Standby Database에 대한 Oracle Net alias)에
있을 수 있습니다. 더 많은 대상을 추가하려면 Add Another Row를 누릅니다. Recovery 설정을
변경하려면 SYSDBA 또는 SYSOPER로 연결해야 합니다.
주: 아카이브를 이 위치로 보내지 않으려면 USE_DB_RECOVERY_FILE_DEST를 삭제하십시오.
sqlplus / as sysdba
shutdown immediate
startup mount
alter database archivelog;
alter database open;
archive log list
이 단원을 마치면 다음을 수행할 수 있습니다.
• 일관성 있는 데이터베이스 백업 생성 -> db close상태에서 백업. 백업상태에서 하는것을 많
• 데이터베이스를 종료하지 않고 백업 -> db open중에 백업
• Incremental 백업 생성 -> 변경사항만 백업
• 데이터베이스 백업 자동화
• 백업 관리 및 백업 보고서 보기
• Fast Recovery Area 모니터 -> 백업파일과 아카이브로그파일이 저장되므로 풀나지 않도록 주의
1. RAMN을 이용한 백업
2. Tape에 백업하는
3. 유저관리 방식의 백업
위 실습 진행 전에 테이블스페이스 정리했음
select tablespace_name from dba_data_files; drop tablespace TS206 including contents and datafiles; drop tablespace TS51 including contents and datafiles; drop tablespace TS05 including contents and datafiles; drop tablespace TS5000 including contents and datafiles; drop tablespace TS300 including contents and datafiles;
1. data file의 위치를 확인
SQL> select file_name from dba_data_files; FILE_NAME -------------------------------------------------------------------------------- +DATA/orcl/datafile/users.259.796857625 +DATA/orcl/datafile/undotbs1.258.796857625 +DATA/orcl/datafile/sysaux.257.796857623 +DATA/orcl/datafile/system.256.796857621 +DATA/orcl/datafile/example.265.796857803 +DATA/orcl/datafile/sysaux.267.1145464529 +DATA/orcl/datafile/users.268.1145464531 +DATA/orcl/datafile/system.269.1145464533 +DATA/orcl/datafile/system.270.1145464597 +DATA/orcl/datafile/small_undo.273.1148230607 /home/oracle/example02.dbf FILE_NAME -------------------------------------------------------------------------------- /home/oracle/sysaux02.dbf /home/oracle/system02.dbf /home/oracle/ts200.dbf +DATA/orcl/datafile/sysaux.274.1148637749 +DATA/orcl/datafile/users.276.1148637749 16 rows selected.
2. control file의 위치를 확인
SQL> select name from v$controlfile; NAME ---------------------------------------------------------------------------- +DATA/orcl/controlfile/current.260.796857737 +FRA/orcl/controlfile/current.256.1148659713 /home/oracle/control03.ctl
3. redo logfile의 위치를 확인
SQL> select member from v$logfile; MEMBER -------------------------------------------------------------------------------- +DATA/orcl/onlinelog/group_3.263.796857759 +FRA/orcl/onlinelog/group_3.259.796857763 +DATA/orcl/onlinelog/group_2.262.796857753 +FRA/orcl/onlinelog/group_2.258.796857757 +DATA/orcl/onlinelog/group_1.261.796857743 +FRA/orcl/onlinelog/group_1.257.796857749 +DATA/orcl/onlinelog/group_4.271.1146924991 +FRA/orcl/onlinelog/group_4.264.1146924997 +DATA/orcl/onlinelog/group_5.272.1146925419 +FRA/orcl/onlinelog/group_5.265.1146925423 +DATA/orcl/onlinelog/group_6.275.1148660837 MEMBER ----------------------------------------------------------------------------- +FRA/orcl/onlinelog/group_6.330.1148660945 12 rows selected.
4. db를 정상종료
shutdown immediate
5. 위 3개의 파일을 전부 하나의 특정 백업 디렉토리에 복사한다.-- home/oralce 밑에 backup 폴더 만들기 [orcl:~]$ mkdir backup [orcl:~]$ ps -ef | grep pmon oracle 5469 1 0 05:48 ? 00:00:04 asm_pmon_+ASM oracle 13692 11401 0 11:29 pts/4 00:00:00 grep pmon [orcl:~]$ . oraenv ORACLE_SID = [orcl] ? +ASM --ASM으로 접속 The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/grid is /u01/app/oracle [+ASM:~]$ asmcmd ASMCMD> ASMCMD> ls DATA/ FRA/ ASMCMD> cd data/ ASMCMD> ls ASM/ ORCL/ ASMCMD> cd orcl ASMCMD> ls CONTROLFILE/ DATAFILE/ ONLINELOG/ PARAMETERFILE/ TEMPFILE/ spfileorcl.ora ASMCMD> cd datafile/ ASMCMD> ls EXAMPLE.265.796857803 SMALL_UNDO.273.1148230607 SYSAUX.257.796857623 SYSAUX.267.1145464529 SYSAUX.274.1148637749 SYSTEM.256.796857621 SYSTEM.269.1145464533 SYSTEM.270.1145464597 UNDOTBS1.258.796857625 USERS.259.796857625 USERS.268.1145464531 USERS.276.1148637749 --------copy 진행---------- cp EXAMPLE.265.796857803 /home/oracle/backup/ cp SMALL_UNDO.273.1148230607 /home/oracle/backup/ cp SYSAUX.257.796857623 /home/oracle/backup/ cp SYSAUX.267.1145464529 /home/oracle/backup/ cp SYSAUX.274.1148637749 /home/oracle/backup/ cp SYSTEM.256.796857621 /home/oracle/backup/ cp SYSTEM.269.1145464533 /home/oracle/backup/ cp SYSTEM.270.1145464597 /home/oracle/backup/ cp UNDOTBS1.258.796857625 /home/oracle/backup/ cp USERS.259.796857625 /home/oracle/backup/ cp USERS.268.1145464531 /home/oracle/backup/ cp USERS.276.1148637749 /home/oracle/backup/ cp sysaux02.dbf /home/oracle/backup/ -- os에서 진행 cp system02.dbf /home/oracle/backup/ cp ts200.dbf /home/oracle/backup/ cp undotbs3.dbf /home/oracle/backup/ [orcl:backup]$ ls -l | wc -l --------------------controlfile(os,+FRA,+DATA)---------------------------- [orcl:~]$ ls -l control03.ctl -rw-r----- 1 oracle dba 9846784 10월 4 11:29 control03.ctl [orcl:~]$ cp control03.ctl /home/oracle/backup/ ----------------- ASMCMD> cd .. ASMCMD> ls ASM/ ORCL/ ASMCMD> pwd +data ASMCMD> cd .. ASMCMD> ls DATA/ FRA/ ASMCMD> pwd + ASMCMD> cd fra/ ASMCMD> ls ORCL/ ASMCMD> cd orcl ASMCMD> ls ARCHIVELOG/ BACKUPSET/ CONTROLFILE/ ONLINELOG/ ASMCMD> cd controlfile/ ASMCMD> ls current.256.1148659713 ASMCMD> cp current.256.1148659713 /home/oracle/backup/ copying +fra/orcl/controlfile/current.256.1148659713 -> /home/oracle/backup//current.256.1148659713 ------------------ ASMCMD> ls CONTROLFILE/ DATAFILE/ ONLINELOG/ PARAMETERFILE/ TEMPFILE/ spfileorcl.ora ASMCMD> cd controlfile ASMCMD> ls Current.260.796857737 ASMCMD> cp Current.260.796857737 /home/oracle/backup/ copying +data/orcl/controlfile/Current.260.796857737 -> /home/oracle/backup//Current.260.796857737 --------------------------------redolog(+data)-------------------------------- ASMCMD> cd .. ASMCMD> ls DATA/ FRA/ ASMCMD> cd data/ ASMCMD> ls ASM/ ORCL/ ASMCMD> cd orcl/ ASMCMD> ls CONTROLFILE/ DATAFILE/ ONLINELOG/ PARAMETERFILE/ TEMPFILE/ spfileorcl.ora ASMCMD> cd onlinelog/ ASMCMD> ls group_1.261.796857743 group_2.262.796857753 group_3.263.796857759 group_4.271.1146924991 group_5.272.1146925419 group_6.275.1148660837 cp group_1.261.796857743 /home/oracle/backup/ cp group_2.262.796857753 /home/oracle/backup/ cp group_3.263.796857759 /home/oracle/backup/ cp group_4.271.1146924991 /home/oracle/backup/ cp group_5.272.1146925419 /home/oracle/backup/ cp group_6.275.1148660837 /home/oracle/backup/ --------------------------------redolog(+FRA)-------------------------------- ASMCMD> cd onlinelog/ ASMCMD> ls group_1.257.796857749 group_2.258.796857757 group_3.259.796857763 group_4.264.1146924997 group_5.265.1146925423 group_6.330.1148660945 cp group_1.257.796857749 /home/oracle/backup/ cp group_2.258.796857757 /home/oracle/backup/ cp group_3.259.796857763 /home/oracle/backup/ cp group_4.264.1146924997 /home/oracle/backup/ cp group_5.265.1146925423 /home/oracle/backup/ cp group_6.330.1148660945 /home/oracle/backup/
공간확인해보기 /
가 /home/oracle임
[orcl:backup]$ df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
199019448 50767244 137979436 27% /
/dev/sda1 101086 18291 77576 20% /boot
tmpfs 1815956 157532 1658424 9% /dev/shm
/dev/hdc 52244 52244 0 100% /media/VBox_GAs_7.0.10
전체(whole)
백업 : datafile, controlfile, redo log file전체(full)
백업 : 모든 데이터 블럭을 다 백업(파일 안에 있는 블럭들)cold backup
hot backup
💡 Rman으로 백업할 때 백업 파일 2가지
1. image copy
: os의 파일을 그대로 백업하는 것
2. backupset
: data가 있는 블럭만 백업하는 것
만약 users01.dbf라는 파일 안에 전체의 1/3만 데이터가 차있고 2/3가 비어있다면, 이미지 카피는 그대로 복사하는 것이고(통채로) 백업셋은 들어있는 1/3의 데이터만 가져와서 백업한다.
RMAN> configure controlfile autobackup on;
RMAN> backup database including current controlfile;
실습
RMAN을 이용해서 오전에 했던 전체 database 백업을 하기(db올라가있는 상태로하기)
$ rman target / nocatalog RMAN> configure controlfile autobackup on;
✅ 앞으로 어느 파일을 백업받던 백업을 수행할 때마다 무조건 컨트롤파일과 파라미터 파일을 자동으로 백업합니다.
RMAN> backup database include current controlfile; channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 Finished backup at 04-OCT-23 Starting Control File and SPFILE Autobackup at 04-OCT-23 piece handle=/home/oracle/arch/ORCL/autobackup/2023_10_04/o1_mf_s_1149344144_lksx80b3_.bkp comment=NONE Finished Control File and SPFILE Autobackup at 04-OCT-23
RMAN> list backupset;
✅ 사용자도 편하고 오라클에서도 권장하는 강력한 백업 방법이 Rman 백업입니다!
위는 em으로 백업하는 방법
컨트롤 파일을 생성하는 스크립트를 만드는 작업.
alter database backup controlfile to trace
as '/home/oracle/create_controlfile.txt';
위 명령어를 반드시 수정해야할 떄
1. DB구조가 변경되었을 때 (DATAFILE, REDO LOG FILE의 위치가 변경)
2. 새로운 테이블스페이스를 생성했을 때
3. 기존 테이블 스페이스에 DATA FILE을 추가했을 때
🤔 만약 RMAN으로 컨트롤 파일을 자동으로 백업하는 구성을 했으면 오라클이 알아서 DB의 구조 변경되었을떄 컨트롤 파일을 자동백업합니다.
문제
ts700 이라는 테이블 스페이스를 10m로 생성하는데 alert log 파일을 아래쪽에 tail -f 로 모니터링 하면서 생성하시오
SYS> create tablespace ts700
datafile '/home/oracle/ts700.dbf' siz 10m;
문제
em에서 rman 백업본을 확인하시오 (책 15-17페이지)
em -> 가용성 -> 현재백업관리
문제
em에서 백업 보고서 보기를 확인 (15-18)
em -> 가용성 -> 백업 보고서
문제
em에서 fast recovery area 영역에 사용율에 대한 원형 그래프를 확인하시오(p.15-19)
db_recovery_file_dest로 지정한 위치 !
em -> 가용성 -> 복구 설정 -> 밑으로 내리면 원형그래프 나옴
✅ rman target / nocatalog 써도 되고 안써도 됨. 디폴트라서! 더 강력하게 쓰고 싶다면 catalog를 쓴다. 이것은 나중에 나옴 !
✅plus archivelog
를 쓰면 아카이브로그 파일 까지 백업이 된다.rman target / nocatalog RMAN> configure controlfile autobackup on; RMAN> backup database plus archivelog;
💡위와 같이 백업하면 4개의 파일을 전부 백업합니다.
1. data file
2. controlfile
3. spfile
4. archive log file
이 단원을 마치면 다음을 수행할 수 있습니다.
- Recovery 수행 필요성 판단
- 다양한 인터페이스 액세스(예: Enterprise Manager 및 명령행)
- RMAN(Recovery Manager) 및 Data Recovery Advisor
같은 사용 가능한 옵션 설명 및 사용- Recovery 수행:
- 콘트롤 파일
- 리두 로그 파일
- 데이터 파일
실습1.
data file중 하나를 깨트리고 db를 내렸다 올려보면서 어디까지 올라오는지 확인하기
- data file 위치를 확인
SQL> select file_name from dba_data_files; SQL> create tablespace ts700 datafile '/home/oracle/ts700.dbf' size 10m;
- rman으로 접속해서 ts700테이블 스페이스만 백업을 받기
RMAN> backup tablespace ts700; RMAN> list backup of tablespace ts700;
- os에서 /home/oracle밑에 있는 ts700.dbf를 삭제합니다.
rm ts700.dbf
- db를 내렸다 올립니다.
SQL> shutdown abort SQL> startup Total System Global Area 1071333376 bytes Fixed Size 1341312 bytes Variable Size 855640192 bytes Database Buffers 209715200 bytes Redo Buffers 4636672 bytes Database mounted. ORA-01157: cannot identify/lock data file 10 - see DBWR trace file ORA-01110: data file 10: '/home/oracle/ts700.dbf'
- rman으로 접속해서 복구
RMAN> restore datafile 10; RMAN> recover datafile 10; RMAN> alter database open
✅
restore(복원)
: 과거에 백업 받은 파일을 원본위치에 가져오는 작업
✅recover(복구)
: 복원한 파일에 로그파일을 적용해서 최신 파일로 만들어주는 작업 -> 아카이브 로그 파일, 현재 리두 로그 파일을 적용햇 최신 파일로 만들어주는 작업 !
❗ 우리는 datafile 10 을 직접 적어서 복구했지만 밑 쿼리로 어떤게 문제인지 찾을 수 있다. 또 한개가 아닌 여러개 가능.
SQL> SELECT name, error
FROM v$datafile
JOIN v$recover_file
USING (file#);
SQL> select d.file#, name, error
from v$datafile d, v$recover_file r
where d.file# = r.file#;
1. 데이터 파일의 위치를 확인하기
SQL> select file_name from dba_data_files; FILE_NAME ----------------------------------------------------------------------------- +DATA/orcl/datafile/users.259.796857625 +DATA/orcl/datafile/undotbs1.258.796857625 +DATA/orcl/datafile/sysaux.257.796857623 +DATA/orcl/datafile/system.256.796857621 +DATA/orcl/datafile/example.265.796857803 +DATA/orcl/datafile/sysaux.267.1145464529 +DATA/orcl/datafile/users.268.1145464531 +DATA/orcl/datafile/system.269.1145464533 +DATA/orcl/datafile/system.270.1145464597 /home/oracle/ts700.dbf +DATA/orcl/datafile/small_undo.273.1148230607 FILE_NAME ----------------------------------------------------------------------------- /home/oracle/example02.dbf /home/oracle/sysaux02.dbf /home/oracle/system02.dbf /home/oracle/ts200.dbf +DATA/orcl/datafile/sysaux.274.1148637749 +DATA/orcl/datafile/users.276.1148637749 17 rows selected.
2. db내리기
SYS> shutdown abort
3. asmcmd로 접속해서 아래의 2개 파일 지우기
+DATA/orcl/datafile/users.259.796857625 +DATA/orcl/datafile/undotbs1.258.796857625 [+ASM:~]$ asmcmd ASMCMD> rm +DATA/orcl/datafile/users.259.796857625 rm +DATA/orcl/datafile/undotbs1.258.796857625
4. startup 하면 에러날것. 조회해보기 -> 이거 안해도 alert log파일에 나오긴 한다. 항상 보고있기.
SQL> select d.file#, name, error from v$datafile d, v$recover_file r where d.file# = r.file#;
5. 복구rman target / RMAN> restore datafile 3; RMAN> restore datafile 4; RMAN> recover datafile 3; RMAN> recover datafile 4; alter database open;
문제
짝꿍하고 자리 바꿔서 짝꿍의 datafile 조회하고 shutdown abort 한 후에 system.dbf빼고 다른 파일 2개 깨트리고 자리로 오기 -> 그리고 내꺼 복구
SYS> startup
SQL> select d.file#, name, error
from v$datafile d, v$recover_file r
where d.file# = r.file#;
rman target /
RMAN> restore datafile 5;
RMAN> restore datafile 14;
RMAN> recover datafile 5;
RMAN> recover datafile 14;
alter database open;
SYS @ orcl > alter system checkpoint;
---복구가 다 되었으면 다시 전체 백업을 수행하기! -> 항상 최신 백업본으로 유지해야 함
RMAN> delete backupset;
RMAN> backup database plus archivelog;
💡 오라클이 장애상황에 대한 대처 방법을 알려줍니다.
실습
순서 !
- datafile의 위치를 확인하기
- shutdown abort로 디비 내리기
- datafile 2개를 삭제하기 (os에서)
- startup 하기 (mount에서 멈출것)
- 알맨으로 접속해서 복구해야할 파일이 무엇인지 확인하기
RMAN> list failure;
- 복구 어드바이져에게 복구 방법을 알려달라고 주문합니다.
RMAN> advise failure;
- 알맨에게 너가 어드바이스 한대로 직접 복구해라 !
RMAN> repair failure;
오늘의 마지막 문제
복구 어드바이저로 장애 상황을 해결하는데 data file을 3개 이상 깨트리고 수행하기!
- datafile의 위치를 확인하기
SQL> select file_name from dba_data_files; FILE_NAME -------------------------------------------------------------------------------- +DATA/orcl/datafile/users.259.1149350615 +DATA/orcl/datafile/undotbs1.258.1149350605 +DATA/orcl/datafile/sysaux.257.796857623 +DATA/orcl/datafile/system.256.796857621 +DATA/orcl/datafile/example.273.1149351731 +DATA/orcl/datafile/sysaux.267.1145464529 +DATA/orcl/datafile/users.268.1145464531 +DATA/orcl/datafile/system.269.1145464533 +DATA/orcl/datafile/system.270.1145464597 /home/oracle/ts700.dbf +DATA/orcl/datafile/small_undo.265.1149351737 FILE_NAME -------------------------------------------------------------------------------- /home/oracle/example02.dbf /home/oracle/sysaux02.dbf /home/oracle/system02.dbf /home/oracle/ts200.dbf +DATA/orcl/datafile/sysaux.274.1148637749 +DATA/orcl/datafile/users.276.1148637749 17 rows selected.
- shutdown abort로 디비 내리기
- datafile 2개를 삭제하기 (os에서)
$ rm sysaux02.dbf $ rm system02.dbf $ rm example02.dbf
- startup 하기 (mount에서 멈출것)
- 알맨으로 접속해서 복구해야할 파일이 무엇인지 확인하기
RMAN> list failure;
- 복구 어드바이져에게 복구 방법을 알려달라고 주문합니다.
RMAN> advise failure;
- 알맨에게 너가 어드바이스 한대로 직접 복구해라 !
RMAN> repair failure;