Backup/Noarchive Log Mode

BackUp 받지 않는 Tablespace 손상되었을 경우 ⓒ

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

1. 테이블스페이스 및 위치 조회하기

select tablespace_name, file_name from dba_data_files;


2. 테이블스페이스 생성

create tablespace insa_tbs datafile '/u01/app/oracle/oradata/ora11g/insa_tbs01.dbf' size 10m;


3. SCN 및 리두 정보확인
=> 리두정보확인

select * from v$log;

 

#) current_scn 번호 확인

select current_scn from v$database;

 

#) data file 확인 

=> insa_tbs TBS는 새로 만든 시점에 CKTP가 발생하고 이후에 CKPT가 발생하지 않았기 때문에 SCN 다르다.

select name, checkpoint_change# from v$datafile;

 

4. Table 생성해보기 (조금 전에 만들었던 TBS에 table만들기(segment생성))

CREATE TABLE hr.new(id number) tablespace insa_tbs;
INSERT INTO hr.new(id) VALUES(1);
COMMIT;
SELECT * FROM hr.new;


=> 현재 insa_tbs는 백업받지 않은 상태
=> COMMIT했으니 LGWR는 REDO에 REDO ENTRY작성했음 ★★

5. <<sys session>>

select * from v$log;

- sequence 번호 확인 

 

2) 로그스위치 강제로 발생시키기 4번 

- sequence 번호 변화! 

alter system switch logfile;

3) sequence 번호 확인 

select * from v$log;


6. 장애유발
1) TBS 삭제

! rm /u01/app/oracle/oradata/ora11g/insa_tbs01.dbf


2) TBS 조회 및 전체 조회 

! ls /u01/app/oracle/oradata/ora11g/insa_tbs01.dbf
! ls /u01/app/oracle/oradata/ora11g/


3) 정상적인 DB 종료

=> ORA-03113: 해당 오류는 oracle DB 연결이 끊어졌음을 나타내는 오류이다.

shutdown immediate

 


4) DB 올리기 

=> ORA-24324 : Oracle call Interface 에서 발생하는 오류이다.

startup

 

 


7. 해결방안
1) DB에 접속불가 문제 해결, OS 로 나오기 

exit


2) 로그인
[oracle@oracle noarch]$ sqlplus /nolog

: sqlplus /nolog 는 인증 없이 실행하는 명령어로, 로그인하지 않고 논리적인 연결만 설정하겠다는 의미 

 

#) sys 계정으로 다시 로그인 후 DB 올리기

conn / as sysdba
startup

- 오류 발생: 'insa_tbs01.dbf' 삭제했기 때문에 DB는 mount 단계까지만 올린다.


3)  DB 상태 확인 

select status from v$instance;


4) TBS상태조회

=> 'insa_tbs01.tbs' 상태 확인

select name, status from v$datafile;


5) 얼른 해당 TBS를 OFFLINE으로 바꾸기 ★

ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/ora11g/insa_tbs01.dbf' OFFLINE DROP;


6) 변경후 TBS 상태 조회
=> 'insa_tbs01.tbs' 상태 확인

select name, status from v$datafile;

7) 복구작업 
- 빈 파일(껍데기) 만드는 작업 ★

alter database create datafile '/u01/app/oracle/oradata/ora11g/insa_tbs01.dbf';

 

8) 빈 파일(껍데기) 만들어졌는지 확인 

! ls /u01/app/oracle/oradata/ora11g/
! ls /u01/app/oracle/oradata/ora11g/insa_tbs01.dbf


9) 빈 파일(껍데기) 에 redo를 적용해야한다.  하지만 redo log file이 없는상태 ★

alter database recover datafile '/u01/app/oracle/oradata/ora11g/insa_tbs01.dbf';



10 ) recover 시도해서 process가 엉킴

★ db내렸다 올리기

ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/ora11g/insa_tbs01.dbf' OFFLINE DROP;

 


11) db내렸다 올리기 ★★

=> 비정상적인 종료

shutdown abort
startup


12) 테이블스페이스 삭제하기

DROP TABLESPACE insa_tbs including contents and datafiles;


13) SCN 및 TBS 조회하기

select current_scn from v$database;

 

#) data file 확인=> checkpoint 확인

select name, checkpoint_change# from v$datafile;

=> 상태 확인

select name, status from v$datafile;

14) 복구 완료

728x90
반응형
LIST