관리 메뉴

Data Modeling Evangelist Kaien Kim's Blog

Oracle(RDS) nologging 이슈 본문

Cloud Computing/AWS

Oracle(RDS) nologging 이슈

2023. 7. 17. 18:47

어제 말씀해주신 Oracle(RDS) nologging 사용에 관하여 확인한 내용입니다.
RDS Oracle에서 nologging 옵션을 사용하여 오브젝트를 생성할 때, 이중화된 RDS Oracle 인스턴스에 장애가 발생한 경우 복구 간에 영향도에 대해서 확인했습니다.

 

위에서 확인한 이중화된 RDS Oracle 인스턴스는 Multi-AZ deployments(다중 AZ 배포) 인스턴스이며,
Multi-AZ 인스턴스 배포는 RDS가 서로 다른 가용 영역에 대기 복제본을 자동으로 프로비저닝합니다. 
데이터는 동기적으로 복제되어 유지되기 때문에 프라이머리 인스턴스에 오류가 발생하였거나, 가용 영역 자체에 중단이 발생하였을 때 failover(장애 조치) 하여 중단이 일어나지 않게 방지할 수 있습니다.

 

Failover가 발생하는 경우는 위에서 설명해 드린 것처럼 인스턴스에 오류가 발생하였거나, 가용 영역 자체에 문제가 발생하였을 경우입니다. 
아래의 경우입니다.

 

- The operating system underlying the RDS database instance is being patched in an offline operation. (RDS OS의 패치)
- The primary host of the RDS Multi-AZ instance is unhealthy. (프라이머리 호스트의 unhealthy)    
- The primary host of the RDS Multi-AZ instance is unreachable due to loss of network connectivity. (프라이머리 호스트의 네트워크 이슈)    
- The RDS instance was modified by customer. (사용자에 의해 리부트를 동반한 옵션 등 수정될 경우)    
- The RDS Multi-AZ primary instance is busy and unresponsive. (RDS Multi-AZ 기본 인스턴스가 사용 중이고 응답이 없음)    
- The storage volume underlying the primary host of the RDS Multi-AZ instance experienced a failure. (RDS Multi-AZ 인스턴스의 기본 호스트에 있는 스토리지 볼륨에 오류가 발생)    
- The user requested a failover of the DB instance. (사용자가 DB 인스턴스의 페일오버를 요청)

 

위에서 설명한 MAZ 환경에서의 failover(장애조치)의 경우는, nologging 옵션을 사용하여 오브젝트를 생성하여 사용할 때는 영향은 없습니다.

 

하지만 datafile에 corrupt이 발생하거나 삭제된 데이터가 필요하여, automated backup이나 스냅샷을 사용하여 복구가 필요한 경우에는 RDS Oracle도 on-premises 환경의 Oracle과 마찬가지로 해당 오브젝트들의 복구가 불가능합니다.
복구(media recovery)가 시작되면 해당 object에 기록된 redo가 없기 때문에 다음과 같은 에러가 발생하게 됩니다.
ORA-01578: ORACLE data block corrupted (file # 3, block # 1023)
ORA-01110: data file 13: '/<path>/<datafilename>.dbf'
ORA-26040: Data block was loaded using the NOLOGGING option

 

그렇기 때문에 nologging 옵션은 해당 오브젝트의 데이터가 중요하지 않은 경우(로그나 임시 데이터 등), 복구가 필요하지 않은 경우에만 적용하는 것을 AWS에서 권장합니다.