"오라클 온라인 백업"의 두 판 사이의 차이
DB CAFE
(→장애 발생 시키기) |
(→온라인 백업파일을 이용하여 완전복구 수행) |
||
(같은 사용자의 중간 판 2개는 보이지 않습니다) | |||
239번째 줄: | 239번째 줄: | ||
cp backup_control.ctl /oracle/oradata/ora11g/control04.ctl | cp backup_control.ctl /oracle/oradata/ora11g/control04.ctl | ||
</source> | </source> | ||
+ | |||
+ | ---- | ||
2) DB 마운트 모드 기동 | 2) DB 마운트 모드 기동 | ||
245번째 줄: | 247번째 줄: | ||
SQL> startup mount | SQL> startup mount | ||
</source> | </source> | ||
+ | |||
+ | ---- | ||
3) control 파일 복구 | 3) control 파일 복구 | ||
283번째 줄: | 287번째 줄: | ||
Media Complete Recovery. ← 복구작업이 완료되었습니다. | Media Complete Recovery. ← 복구작업이 완료되었습니다. | ||
</source> | </source> | ||
+ | |||
+ | ---- | ||
4) DB OPEN RESETLOGS | 4) DB OPEN RESETLOGS | ||
296번째 줄: | 302번째 줄: | ||
SQL> alter database open resetlogs; | SQL> alter database open resetlogs; | ||
</source> | </source> | ||
+ | |||
+ | ---- | ||
5) 정상 복구 확인 | 5) 정상 복구 확인 | ||
<source lang=sql> | <source lang=sql> | ||
SQL> select count(*) from scott.dept; | SQL> select count(*) from scott.dept; | ||
− | SQL> shutdown | + | SQL> shutdown immediate; |
− | SQL> | + | SQL> startup; |
</source> | </source> | ||
2023년 8월 9일 (수) 23:37 기준 최신판
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
1 온라인 백업의 방법 과 절차[편집]
1.1 백업 전 DB 점검사항[편집]
1.1.1 DB Online 상태 확인[편집]
select status from v$instance;
1.1.2 아카이브 모드 확인[편집]
- 온라인 백업방법은 반드시 아카이브 모드이어야 합니다.
- 오라클 서버가 사용자들에 의해 사용되고 있는 와중에 백업되는 방법이기 때문에 노-아카이브 모드에서는 수행될 수 없기 때문.
SQL> archive log list
1.1.3 백업 디렉토리 생성[편집]
$ mkdir /backup/
1.2 테이블스페이스 단위 온라인 백업 절차[편집]
1.2.1 [ SYSTEM ] 테이블스페이스 온라인 백업 절차[편집]
1) SYSTEM 테이블스페이스 온라인 백업 시작
SQL> ALTER TABLESPACE SYSTEM BEGIN BACKUP;
2) 백업 파일 복사
SQL> HOST cp /oracle/oradata/ora11g/system01.dbf /backup/
- host 명령어는 sql*plus 에서 쉘명령어를 호출하는 명령어 임.
3) SYSTEM 테이블스페이스에 대한 온라인 백업 종료
SQL> ALTER TABLESPACE SYSTEM END BACKUP;
1.2.2 [ TEMP ] 테이블스페이스에 대한 온라인 백업 절차[편집]
1) TEMP 테이블스페이스에 대한 온라인 백업 시작
SQL> ALTER TABLESPACE TEMP BEGIN BACKUP;
2) 백업 파일 복사
SQL> HOST cp /oracle/oradata/ora11g/temp01.dbf /backup/
3) TEMP 테이블스페이스에 대한 온라인 백업 종료
SQL> ALTER TABLESPACE TEMP END BACKUP;
1.2.3 [ UNDO ] 테이블스페이스에 대한 온라인 백업 절차[편집]
1) UNDO 테이블스페이스에 대한 온라인 백업
SQL> ALTER TABLESPACE UNDOTBS BEGIN BACKUP;
2) 백업 파일 복사
SQL> HOST cp /oracle/oradata/ora11g/undotbs01.dbf /backup/
3) UNDO 테이블스페이스에 대한 온라인 백업 종료
SQL> ALTER TABLESPACE UNDOTBS END BACKUP;
1.2.4 [ 일반 테이블 ] 테이블스페이스에 대한 온라인 백업 절차[편집]
1) TS_EMP 테이블스페이스 백업
SQL> ALTER TABLESPACE TS_EMP BEGIN BACKUP;
SQL> HOST cp /oracle/oradata/ora11g/query01.dbf /backup/
SQL> ALTER TABLESPACE TS_EMP END BACKUP;
1.2.5 온라인 백업된 모든 데이터 파일 확인[편집]
$ cd /backup/
$ ls
SYSTEM01.DBF
UNDOTBS01.DBF
TEMP01.DBF
QUERY01.DBF
1.3 DB 전체 백업 방법[편집]
1) 전체 DB 온라인 백업 시작
SQL> ALTER DATABASE BEGIN BACKUP;
2) 파일 백업
SQL> host cp /oracle/oradata/ora11g/system01.dbf /backup/full_online_backup
SQL> host cp /oracle/oradata/ora11g/undotbs01.dbf /backup/full_online_backup
SQL> host cp /oracle/oradata/ora11g/temp01.dbf /backup/full_online_backup
SQL> host cp /oracle/oradata/ora11g/temp02.dbf /backup/full_online_backup
SQL> host cp /oracle/oradata/ora11g/users01.dbf /backup/full_online_backup
SQL> host cp /oracle/oradata/ora11g/query01.dbf /backup/full_online_backup
3) 전체 DB 온라인 백업의 종료
SQL> ALTER DATABASE END BACKUP;
1.4 온라인 백업을 이용한 완전 복구 방법[편집]
1.4.1 오라클 상태 점검[편집]
1) 오라클 서버가 사용 가능한 상태인지 확인
$ sqlplus "/as sysdba"
SQL> startup
2) 아카이브 파일들이 정상적으로 생성되는지 확인
alter system switch logfile;
insert into scott.dept values(1,'Personnel','Pusan');
insert into scott.dept values(2,'Account','Pusan');
insert into scott.dept values(3,'Q.C','Pusan');
alter system switch logfile;
insert into scott.dept values(4,'Personnel','Seoul');
insert into scott.dept values(5,'Account','Seoul');
insert into scott.dept values(6,'Q.C','Seoul');
alter system switch logfile;
insert into scott.dept values(7,'Personnel','Daejeon');
insert into scott.dept values(8,'Account','Daejeon');
insert into scott.dept values(9,'Q.C','Daejeon');
commit;
select count(*) from scott.dept;
SQL> host ls /oracle/dbs/arch/*.arc
1.4.2 장애 발생 시키기[편집]
- 아래 장애 시나리오 수행 전 반드시 온라인 백업을 수행 하여 백업할것
- 모든 컨트롤 파일과 데이터 파일이 함께 장애가 발생했다고 가정 한다.
1) 갑작스런 정전상태를 만들기 위해 ABORT 옵션으로 오라클 서버를 강제 종료
SQL> shutdown abort
SQL> exit
2) 모든 데이터 파일들에 장애가 발생합니다.
rm /oracle/oradata/ora11g/system01.dbf
rm /oracle/oradata/ora11g/undotbs01.dbf
rm /oracle/oradata/ora11g/temp01.dbf
rm /oracle/oradata/ora11g/temp02.dbf
rm /oracle/oradata/ora11g/users01.dbf
rm /oracle/oradata/ora11g/query01.dbf
3) 컨트롤 파일 삭제
rm /oracle/oradata/ora11g/*.ctl
1.4.3 온라인 백업파일을 이용하여 완전복구 수행[편집]
1) 장애가 발생한 모든 컨트롤 파일과 데이터 파일에 대한 온라인 백업 파일들을 원본 경로로 복사
1-1) 백업된 데이터파일을 원본 경로로 복사
cp /backup/system01.dbf /oracle/oradata/ora11g/
cp /backup/undotbs01.dbf /oracle/oradata/ora11g/
cp /backup/temp01.dbf /oracle/oradata/ora11g/
cp /backup/temp02.dbf /oracle/oradata/ora11g/
cp /backup/users01.dbf /oracle/oradata/ora11g/
cp /backup/query01.dbf /oracle/oradata/ora11g/
1-2) 백업된 컨트롤 파일을 원본 경로로 복사
cp /backup/backup_control.ctl /oracle/oradata/ora11g/control01.ctl
1-3) 장애가 발생한 모든 컨트롤 파일 복사
cp backup_control.ctl /oracle/oradata/ora11g/control02.ctl
cp backup_control.ctl /oracle/oradata/ora11g/control03.ctl
cp backup_control.ctl /oracle/oradata/ora11g/control04.ctl
2) DB 마운트 모드 기동
$ sqlplus "/as sysdba"
SQL> startup mount
3) control 파일 복구
SQL> recover database using BACKUP controlfile;
- 복구해야 할 대상 파일에 이전의 컨트롤 파일이 포함되어 있으므로 USING BACKUP CONTROLFILE 옵션 절을 사용하여 복구작업 수행해야 합니다.
ORA-00279: Change 8050 generated at 01/20/98 15:22:26 needed
ORA-00280: Change 8050 for thread 1 is in sequence #5
Specify log: {=suggested | filename | AUTO | CANCEL}
AUTO ← AUTO 키워드를 사용하여 모든 아카이브 파일을 적용.
ORA-00279: Change 8050 generated at 01/20/98 15:22:26 needed
ORA-00280: Change 8050 for thread 1 is in sequence arch_n.arc
ERROR 발생 ← AUTO 키워드를 적용하여 아카이브를 적용했지만 마지막 아카이브 파일
을 적용할 때 에러가 발생하는 경우가 있습니다. 왜냐하면, 적용해야 할 마지막 백업 데이터는 아카이브 파일에 저장되어 있지 않고 CURRENT 리두로그 파일에 존재하기 때문입니다.
- 에러가 발생하는 경우에는 다시 RECOVER DATABASE ~ 명령어 실행
SQL> RECOVER DATABASE using BACKUP controlfile;
ORA-00279: Change 8050 generated at 01/20/98 15:22:26 needed
ORA-00280: Change 8050 for thread 1 is in sequence arch_n.arc
Specify log: {=suggested | filename | AUTO | CANCEL}
/oracle/oradata/ora11g/redo01.log ← 마지막 백업 데이터가 저장되어 있는 CURRENT 리두로그 파일을 입력
Log Applied.
Media Complete Recovery. ← 복구작업이 완료되었습니다.
4) DB OPEN RESETLOGS
SQL> alter database open resetlogs;
5) 정상 복구 확인
SQL> select count(*) from scott.dept;
SQL> shutdown immediate;
SQL> startup;
1.5 오프라인 백업[편집]
- 불완전 복구를 수행하고 나면 반드시 이전의 마지막 백업파일은 재 사용될 수 없기 때문에 다시 오프라인 백업을 수행해야 함.
- 이전의 아카이브 파일, 트레이스 파일 제거
$ cp /oracle/oradata/ora11g/*.* /backup
$ cp /oracle/admin/ora11g/init.ora /backup
$ rm /oracle/oradata/ora11g/arch/*.arc