1. DB를 archive log mode로 시작
startup mount;
alter database archivelog;
alter database open;
create tablespace test2
datafile '/app/oracle/oradata/testdb/test02.dbf' size 5M;
2. 정상 종료 후 백업 수행
(모드 변경 후에는 항상 전체 백업을 할 것)
select name from v$datafile;
select name from v$controlfile;
select member from v$logfile;
shutdown immediate;
!cp /app/oracle/oradata/testdb/* /data/backup/close/
startup
3. 장애를 발생시키고 복구 진행
create table scott.tt750 (no number) tablespace test2;
insert into scott.tt750 values (1);
commit;
select * from scott.tt750;
4. 장애 발생 확인
!rm -rf /app/oracle/oradata/testdb/test02.dbf
!ls /app/oracle/oradata/testdb/test02.dbf
alter tablespace test2 offline;
alter tablespacae test2 online;
에러발생
5. 백업으로부터 삭제 된 데이터 파일 복원 후 복구
!cp /data/backup/close/test02.dbf /app/oracle/oradata/testdb/
alter database test2 online;
에러발생
recover tablespace test2;
alter tablespace test2 onlie;
select * from scott.tt750;
db 정지 후 복구(offline 안되는 tablespace)
1 system tablespace 에 연습용 테이블 생성
create table scott.tt800(no number) tablespace system;
insert into scott.tt800 values (1);
commit;
select * from scott.tt800;
2. system tablespace 삭제 후 db 종료
!rm /app/oracle/oradata/testdb/system01.dbf
alter tablespace system offline;
에러
shutdown immediate;
startup;
에러
3. 백업 파일에서 system01.dbf를 복원 한 후 복구
!cp /data/backup/close/system01.dbf /app/oracle/oradata/testdb/
recover tablespace system;
alter database open;
select * from scott.tt800;
백업 파일이 없는 상태에서의 복구
이 방법으로 생성되지 않는 파일들이 있으므로 주의해야 함! 평소에 백업을 잘 시켜놓을 것
1. 장애발생
!vi dd.sql
conn / as sysdba
set line 200
col tablespace_name for a10
col file_name for a50
col mb for 999
select tablespace_name, byres/1024/1024/ MB, file_name
from dba_data_files
/
:wq!
@dd
!rm -f /app/oracle/oradata/testdb/test02.dbf
!ls /app/oracle/oradata/testdb/test02.dbf
그런파일이나 디렉토리 없음
2. 테스트용 테이블을 생성 후 데이터를 입력
create table scott.tt810 (no number) tablespace test2;
insert into scott.tt810 values(1);
commit;
select * from scott.tt810;
alter teblespace test2 offline;
alter tablespace test2 online;
에러
select * from scott.tt810;
에러
3. 파일을 생성해서 복구 수행
@dd
alter database create datafile
'/app/oracle/oradata/testdb/test02.dbf'
as '/home/oracle/test01.dbf';
recover tablespace test2;
alter tablespace test2 online;
select * from scott.tt810;
'DB > oralce' 카테고리의 다른 글
시점복구시 주의할 사항 (0) | 2014.11.04 |
---|---|
ora-01190 (0) | 2014.11.04 |
recovery 이론 및 dump파일 내용 (0) | 2014.11.01 |
오라클이 시작되는 원리 (0) | 2014.10.31 |
오라클 실습시 용량부족으로 디스크 붙이는 방법 (0) | 2014.10.31 |