Backup/Noarchive Log Mode

특정한 데이터 파일 손상되었을 경우(단, backup 이후에 redo 정보가 없을 경우)

잇꼬 2024. 1. 9. 17:17
728x90
반응형
SMALL

1. 정상적인 종료 후 OS로 나오기

shutdown immediate

2. 불안전한 복구(과거로 돌아가기)
[oracle1@oracle ~]$ cd /home/oracle/backup/noarch/
[oracle1@oracle noarch]$ cp -av *.* /u01/app/oracle/oradata/ora11g/

 

3. oracle 접속 후 DB 올리기

[oracle1@oracle noarch]$ exit

startup

#) current_scn 번호 확인

select current_scn from v$database;


#) datafile 위치, checkpoint 확인 

select name, checkpoint_change# from v$datafile;


#) current, sequence 번호 확인

select * from v$log;


4. <HR SESSION>
#) new table 확인 불가

conn hr/hr
select * from hr.new;

#) new table 생성 후 data 로드 및 저장

create table new (id number) tablespace example;
insert into new (id) values (1);
commit;
select * from hr.new;

 

5. <SYS SESSION>

#) redo log 정보 확인

select * from v$log;

 

6. 강제로 스위치 발생*3번 발생

# 장애 유발 시키기 # 

alter system switch logfile;

 

#) 스위치 발생 후 변경 확인

select * from v$log;


#) datafile 확인

select current_scn from v$database;

#) datafile 위치, checkpoint 확인 

select name, checkpoint_change# from v$datafile;

 

#) hr.new 의 tablespace 생성 확인

select f.FILE_NAME
from DBA_EXTENTS e, DBA_DATA_FILES f
where e.FILE_ID = f.FILE_ID
and e.SEGMENT_NAME = 'NEW'
and e.owner = 'HR';

 

7. 정상적인 종료 후 OS로 나오기 

shutdown immediate

# 장애 유발 #
[oracle1@oracle ~]$ rm /u01/app/oracle/oradata/ora11g/example01.dbf
[oracle1@oracle ~]$ ls /u01/app/oracle/oradata/ora11g/example01.dbf

 

8. oracle 접속 후 DB 올리기

[oracle1@oracle ~]$ exit

startup

#) 오류발생 

ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '/u01/app/oracle/oradata/ora11g/example01.dbf'

해석) 해당 파일이 없어 DB mount 단계까지 올린다.

 

#) instance 단계 확인

select status from v$instance;

 

 

9. backup 딕셔너리 있는 위치로 가서 copy 

SQL> !
[oracle1@oracle ~]$ cd backup/noarch
[oracle1@oracle noarch]$ ls example01.dbf
[oracle1@oracle noarch]$ cp -av example01.dbf /u01/app/oracle/oradata/ora11g/example01.dbf

 

10. oracle 접속 후 recover 시도.

[oracle1@oracle noarch]$ exit

recover database;


ORA-00280: change 1707419 for thread 1 is in sequence #21 (← 21번 에 해당하는 redo 파일이 필요하다)

Specify log: {<RET>=suggested | filename(파일명) | AUTO(자동) | CANCEL(취소)}
AUTO(입력)

[결과]


#) 어차피 DB 깨져있으니 정상적인 종료는 되지 않는다.
결론: DB 불안전한 내리기

shutdown abort

11. 모든 파일을 copy 하기
SQL> !
[oracle1@oracle noarch]$ cp -av *.* /u01/app/oracle/oradata/ora11g/
[oracle1@oracle noarch]$ pwd

 

12. oracle 접속 후 DB 올리기

[oracle1@oracle noarch]$ exit

startup

#) current_scn 번호 확인

select current_scn from v$database;

#) datafile 위치, checkpoint 위치

select name, checkpoint_change# from v$datafile;


#) current, sequence 번호 확인

select * from v$log;

13. 복구 완료

728x90
반응형
LIST