database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41936 게시물 읽기
No. 41936
Oracle 온라인 백업중 HA Failover가 실패하는 이유 및 조치 방법[DB 복구]
작성자
조장복(cjb1609)
작성일
2023-03-21 10:50
조회수
397

Oracle 온라인 백업중 HA Failover가 실패하는 이유 와 그에 대한 조치 방법에 대해서 기술합니다[DB 복구]

 

1. 발생 상황

   - 시스템 Active Oracle DB 서버 Down

     시스템은 Active-Standby 구조이기 때문에, 장애가 발생해도 5분내 자동 복구됩니다
     그러나, 5분, 10분, 20분이 지나도 장애가 복구되지 않습니다.
     Failover가 실패한 것 같습니다. 장애 시간이 계속 길어지고 있습니다.
     뭐가 문제일까요? 1개월 전 Failover 모의훈련 때는 잘 됬는데 ....

     장애에 대비해 HA(서버 이중화)를 구성했지만, 종종 Failover 실패가 발생합니다.
     Failover 실패의 가장 큰 원인은 두 서버(Active-Standby) 구성이 일치하지 않기 때문입니다.
     처음 구축할 때는 일치했지만, 운영 중 구성 변경으로 불일치가 발생하면 Failover가 실패합니다.
     하지만, 위의 경우는 두 서버 구성이 완벽히 일치했는데 발생했습니다.
     특이점은 Oracle DB가 설치되어 있고, 장애 시점에 Oracle DB 온라인 백업이 실행 중이었습니다.

 

     "Oracle 온라인 백업"과 "Failover 실패"의 연관관계를 설명하고, 해결 방법을 가이드 합니다

 

    * 평상시 Failover 상황
      Active DB 와 Standby DB 는 HA로 구성되어 있고, Failover 성공
      -> Datafile 헤더 Fuzzy bit = Disable

 

    * 백업시 Failover 상황
      Active DB(온라인 백업중) 와 Standby DB 는 HA로 구성되어 있고, Failover 실패
      -> Datafile 헤더 Fuzzy bit = Enable   
      -> Fuzzy bit가 Enable 되어 있으면, DB startup 중 ORA-10873 에러 발생함
         -> Disable 로 변경 후 DB startup 해야함
            (ORA-10873 : file 1 needs to be either taken out of backup mode or media

 

2. Oracle DB 온라인 백업

   - Oracle은 데이터베이스 가동 중에 백업을 할 수 있습니다. 이를 온라인 백업이라 합니다.
     온라인 백업의 핵심기술은 백업 중 실행되는 Transaction을 보장하는 것입니다.
     Oracle은 이를 위해 Datafile 헤더에 Hot Backup-in-Progress Fuzzy Bit 이라는 것을 Setting 합니다.
     평소에는 Fuzzy bit이 Disable이지만 온라인 백업 중에는 Fuzzy Bit이 Enable로 변경됩니다.


   - "alter database/tablespace ... begin backup;" 명령이 Fuzzy Bit를 Enable로 변경한 것 입니다.
     Fuzzy bit이 Enable이면 Checkpoint 이후에도 Datafile 변경이 있을 수 있다는 뜻으로, 백업이 끝나면
     "alter database/tablespace ... end backup;" 명령으로 Fuzzy bit을 Disable 해야 합니다.

 

3. 온라인 백업 중 Failover 가 실패하는 이유

   DB를 기동할때 Datafile Fuzzy Bit이 Enable 상태라면, Oracle은 다음 두 경우로 판단하고
   ORA-10873 Error를 발생시킵니다. 관리자가 아래 둘 중 하나를 선택하여 조치하라는 것 입니다.


    1. Online Backup 본을 이용하여 Restore 하고 DB를 기동하는 경우
    2. Online Backup 중에 DB가 갑자기 Down된 후에 다시 기동하는 경우


   두 경우 모두 DB를 즉시 기동할 수 없습니다.
    첫째 경우는, 일반적인 DB 복구과정(recover database)을 수행하여 DB를 기동해야 합니다.
    둘째 경우는, 복구 과정이 불필요하므로 "alter database end backup;"으로 Fuzzy Bit을
                 Disable 한 후 DB를 기동해야 합니다.


   위 장애사례를 살펴보면,
   장애시점에 온라인 백업이 진행되고 있었습니다. 즉, Fuzzy bit 이 Enable 상태입니다.
   그 상태에서 장애가 발생했고 Standby 서버로 Failover 가 진행되었습니다.
   Standby Oracle DB에서 "startup;"이 실행됬지만 Fuzzy bit Enable 상태이므로
   ORA-10873 에러가 발생되어 DB 가동이 중단됐고 Failover가 실패로 이어진 것 입니다.

 

   ==== 장애DB alert.log 내용 ====

   ORACLE instance started.
   Database mounted.
   ORA-10873 : file 1 needs to be either taken out of backup mode or media recovered
   ORA-01110 : data file 1 : '/home/oracle/app/oracle/oradata/OPDB/system01.dbf

 

4. 조치(복구)

   DB 가동 Script에 "alter database end backup;" 명령만 추가하면 됩니다.

 

   - 개선 전(예)

     export ORACLE_SID=ORA1
     export ORACLE_HOME=/data1/oracle
     lsnrctl start
     sqlplus "/as sysdba" <<EOF
     startup;
     EOF

 

   - 개선 후(예)

     export ORACLE_SID=ORA1
     export ORACLE_HOME=/data1/oracle
     lsnrctl start
     sqlplus "/as sysdba" <<EOF
     startup mount;
     alter database end backup;
     alter database open;
     EOF

 

   위 같이 Script를 수정하면 온라인 백업 중 장애가 발생해도 문제없이 Failover 가 가능합니다.
   단, 만약 RMAN을 사용 중이라면 기존 Script를 그대로 사용해도 무방합니다

[Top]
No.
제목
작성자
작성일
조회
41939ORACLE DB SQL 쿼리 튜닝[DB 튜닝]
조장복
2023-03-21
627
41938대량 데이터 SQL 튜닝 및 병렬처리 활용 방법[DB 튜닝 및 Parallel 처리]
조장복
2023-03-21
520
41937병렬처리(Parallel Processing) 관련 사항[병렬 Parallel 처리]
조장복
2023-03-21
8639
41936Oracle 온라인 백업중 HA Failover가 실패하는 이유 및 조치 방법[DB 복구]
조장복
2023-03-21
397
41935SQL 쿼리에서 인덱스 컬럼이 조건절에 없을때 인덱스 컬럼을 만들어서 검색속도 개선[DB 튜닝]
조장복
2023-03-21
529
41934데이터 저장 [1]
costudy
2023-03-12
515
41933sqldeveloper 죽었니? 살았니? [1]
전상도
2023-02-28
640
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다