일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- SAA 합격 후기
- 딥레이서 보상함수
- helm
- Firelens
- 그라파나 대시보드
- terraform
- 쿠버네티스
- jenkins
- LoadBalancer Controller
- 메탈LB
- 쿠버네티스 컴포넌트
- 깃허브 액션
- livenessPorbe
- github action 사용법
- EFS CSI Driver
- headless service
- kubernetes 동작 원리
- grafana on kubernetes
- 딥레이서
- 로드밸런서 컨트롤러
- EKS 클러스터
- Kubernets on Jenkins
- 그라파나 시각화
- Aurora cluster
- blue-green
- Solution Architecture
- Prometheus install
- Kubernetes
- 솔데스크
- AWS 딥레이서
Archives
mingming
Oracle - 데이터파일 장애 복구 본문
장애 상황1 - no archive log mode에서 장애 해결( 불완전 복구 )
1. Database Cold Backup 진행
SQL> shutdown immediate;
SQL> !cp /data01/ORCL/* /backup/close/
2. noarchive mode로 변경
SQL> startup mount
SQL> alter database noarchivelog;
SQL> alter database open;
Database altered.
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /oracle/product/19.0.0/dbs/arch
Oldest online log sequence 9
Current log sequence 10
3. 기존 아카이브 로그 삭제
cd $ORACLE_HOME/dbs/arch
rm -rf *
4. 테이블 스페이스 조회
col tablespace_name for a10
col file_name for a40
select tablespace_name, bytes/1024/1024 MB, file_name from dba_data_files;
5. 데이터 베이스 종료 후 데이터파일 삭제
SQL> shutdown immediate;
SQL> !rm -rf /data01/ORCL/users01.dbf
6. 장애상황 발생
SQL> startup
ORACLE instance started.
Total System Global Area 788525944 bytes
Fixed Size 8901496 bytes
Variable Size 339738624 bytes
Database Buffers 432013312 bytes
Redo Buffers 7872512 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 4 - see DBWR trace file
ORA-01110: data file 4: '/oracle/oradata/ORA19C/users01.dbf'
7. 장애 상황 복구
!cp /backup/close/users01.dbf /data01/ORCL/
SQL> set lineszie 200
SQL> select * from v$recover_file;
FILE# ONLINE ONLINE_ ERROR CHANGE# TIME CON_ID
---------- ------- ------- ----------------------------------------------------------------- ---------- ------------ ----------
5 OFFLINE OFFLINE OFFLINE NORMAL 0 0
6 OFFLINE OFFLINE OFFLINE NORMAL 0 0
SQL> alter database open;
장애 상황2 - 완전 복구 (archive mode) - 물리적 장애 복구
Oracle 에서 절대적으로 지켜야 하는 원칙 중 하나는 디스크 I/O가 발생하고 있을 경우 절대 이동하거나 복사 또는 복구 작업을 해서는 안된다는 것 입니다. 장애가 발생할 경우 복구 하기 위해서는 해당 파일에 I/O가 발생하지 않도록 만들고 복구작업을 진행해야 합니다.
1. archive mode 변경
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /oracle/product/19.0.0/dbs/arch
Oldest online log sequence 9
Next log sequence to archive 10
Current log sequence 10
2. Tablespace 생성 및 유저 생성
SQL> create tablespace ming datafile '/data01/ORCL/ming.dbf' size 100M autoextend on;
SQL> create user ming identified by ming default tablespace ming quota unlimited on ming;
SQL> grant connect, resource to ming;
3. 온라인 백업 ( hot backup )
SQL> alter tablespace ming begin backup;
SQL> !cp /data01/ORCL/*.dbf /backup/open/
SQL> alter tablespace ming end backup;
4. 장애 발생
SQL> !rm -rf /data01/ORCL/ming.dbf
SQL> conn ming/ming;
SQL> create table abc(no number) tablespace ming;
SQL> insert into abc values(1);
insert into abc values(1)
*
ERROR at line 1:
ORA-01116: error in opening database file 5
ORA-01110: data file 5: '/data01/ORCL/ming.dbf'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------------- ----------
ABC TABLE
5. 장애 복구 - Datafile offline 후 restore 및 recover
SQL> conn / as sysdba
## Datafile Offline
SQL> alter database datafile '/data01/ORCL/ming.dbf' offline;
## restore
SQL> !cp /backup/open/ming.dbf /data01/ORCL/ming.dbf
## recover
SQL> recover datafile '/data01/ORCL/ming.dbf'
Media recovery complete.
## Datafile online
SQL> alter database datafile '/data01/ORCL/ming.dbf' online;
## 장애 복구
SQL> insert into ming.abc values(1);
1 row created.
SQL> select * from ming.abc;
NO
----------
1
장애 상황 2-1 테이블에 데이터가 있는 상태에서의 데이터파일 유실 복구
1. 테이블에 데이터 삽입 및 로그 스위치
insert into ming.abc values(2);
SQL> alter system switch logfile;
System altered.
SQL> /
System altered.
2. 온라인 백업 및 데이터 파일 삭제
SQL> alter tablespace ming begin backup;
SQL> !cp /data01/ORCL/ming.dbf /backup/open/
SQL> alter tablespace ming end backup;
SQL> !rm -rf /data01/ORCL/ming.dbf
3. 테이블에 데이터 추가 삽입
SQL> insert into ming.abc values(3);
SQL> insert into ming.abc values(4);
SQL> insert into ming.abc values(5);
SQL> select * from ming.abc;
4. 데이터 파일 복구
## Datafile Offline
SQL> alter database datafile '/data01/ORCL/ming.dba' offline;
## restore
SQL> !cp /backup/open/ming.dbf /data01/ORCL/ming.dbf
## recover
SQL> recover datafile '/data01/ORCL/ming.dbf'
## Datafile Online
SQL> alter database datafile '/data01/ORCL/ming.dbf' online;
## 데이터 확인
SQL> select * from ming.abc;
NO
----------
5
1
2
3
4
장애 상황 3 - Offline 안되는 Tablespace 장애 복구
Offline이 불가능한 테이블 스페이스(undo , system) 의 복구시에는 데이터베이스 종료 후 복구해야 합니다.
1. System 테이블 스페이스에 테이블 및 데이터 생성
SQL> alter tablespace system offline;
alter tablespace system offline
*
ERROR at line 1:
ORA-01541: system tablespace cannot be brought offline; shut down if necessary
## system tablespace에 테이블 생성
SQL> create table test(no number) tablespace system;
SQL> insert inot test values(1);
SQL> commit;
SQL> col tablespace_name for a10
col file_name for a40
select tablespace_name, bytes/1024/1024 MB, file_name from dba_data_files;
SQL> SQL>
TABLESPACE MB FILE_NAME
---------- ---------- ----------------------------------------
SYSTEM 700 /data02/ORCL/system01.dbf
SYSAUX 550 /data01/ORCL/sysaux01.dbf
UNDOTBS1 355 /data01/ORCL/undotbs01.dbf
USERS 5 /data01/ORCL/users01.dbf
HR_USER 1024 /data01/ORCL/hr.dbf
MING 200 /data01/ORCL/ming.dbf
2. 온라인 백업
SQL> alter database begin backup;
SQL> !cp /data01/ORCL/* /backup/open/
SQL> alter database end backup;
3. 장애 발생
SQL> !rm -rf /data01/ORCL/system01.dbf
SQL> alter tablespace system offline;
alter tablespace system offline
*
ERROR at line 1:
ORA-01541: system tablespace cannot be brought offline; shut down if necessary
SQL> alter database datafile '/oracle/oradata/ORA19C/system01.dbf' offline;
alter database datafile '/oracle/oradata/ORA19C/system01.dbf' offline
*
ERROR at line 1:
ORA-01541: system tablespace cannot be brought offline; shut down if necessary
4. 장애 복구
SQL> shutdown abort;
## restore
SQL> !cp /backup/open/system01.dbf /data01/ORCL/system01.dbf
SQL> startup mount
## recover
SQL> recover database;
SQL> alter database open;
SQL> select * from test
NO
----------
1
'Database' 카테고리의 다른 글
Oracle - Tablespace & Datafile 관리 (1) | 2023.10.27 |
---|---|
Oracle - Redo Log File 관리 및 장애 복구 (0) | 2023.10.27 |
Oracle - 컨트롤파일 유실 장애 복구 시나리오 (1) | 2023.10.27 |
Current Redo Log File 유실 복구 (1) | 2023.10.24 |