Data Guard 11g의 주요 내용은 다음과 같다.
Data Guard 구성은 Primary Database라고 하는 데이터베이스에 최대 9개의 Standby Database까지 구성할 수 있다. 이때 redo data를 사용하여 동기화를 유지한다.
Data Guard는 2가지 방법으로 동기화를 한다.
Pysical Data Guard를 구성할 때 사용하는 방법으로 블록 기반으로 Primary Database와 동일한 on-Disk 데이터베이스 구조를 갖추고 있으며, 오라클 미디어 복구를 사용해 업데이트 된다.
Logical Data Guard를 구성할 때 사용하는 방법으로 SQL Statement를 사용해 업데이트된다.
예상 또는 예상하지 않은 작동 중지로 인해 Primary DB가 사용없게 되는 경우 Data Guard Role Management Services가 신속하게 선택된 Standby DB를 사용할 수 있게 전환하기 때문에 다운타임을 최소화하고 데이터 손실을 방지할 수 있다.
11g에서는 다음과 같은 기능들을 제공해 준다.
DG Broker 기능이 추가되었다.
다음과 같은 기능이 추가되었다.
11g 부터는 Physical standby DB를 다양하게 활용 할 수 있다. 심지어 redo 가 physical standby DB에 적용되는 동안에도 query를 실행할 수 있다. 즉, Primary DB를 사용하면서 Physical Standby DB에서 읽기 전용 접속 모드와 같이 실행할 수 있다.
모든 Data Guard Standby DB는 RMAN을 사용해 온라인 백업을 지원한다.
Physical Standby DB (Redo Apply)를 Snapshot Standby로 전환하여 실 서비스 데이터의 정확한 읽기-쓰기를 통해 핫 패치와 다른 테스트가 가능하다. 다음과 같은 기능이 제공된다.
Logical Standby (SQL Apply) DB는 공개 읽기-쓰기라는 새로운 유연성을 제공한다. SQL Apply에 의해 유지되는 데이터를 변경할 수 없으면서 추가 로컬 테이블이 데이터베이스에 더해지고, 로컬 인덱스 구조를 생성해 리포팅을 최적화하거나 Standby DB를 데이터 웨어하우스로 활용하거나 데이터 마트를 로딩하는데 사용하는 정보를 처리할 수 있다.
Logical Standby DB를 롤링 데이터베이스 업그레이드를 수행하는데 사용해, 새로운 데이터베이스 패치 세트나 전체 데이터베이스 출시로 인한 업그레이드를 수행할 때 다운타임을 최소화할 수 있다. 뿐만 아니라 Physical Standby DB를 Logical Standby DB로 전환해, 롤링 데이터베이스 업그레이드를 실행한 후 다시 정상적인 Physical Standby DB 운영 상태로 복귀할 수 있습니다.
11g New Feature는 다음과 같다.
새롭게 제공되는 기능으로 다음과 같은 성능 강화를 제공한다.
Physical Standby DB로부터 생성되는 새로운 유형의 Standby DB이다.
Data Guard 11g 은 Fast Start FailOver 를 확장해 Auto Fail-Over로 인해 원하는 RPO (Recovery Point Objective)를 초과하는 데이터 손실로 이어지지 않도록 하는 사용자 구성 데이터 손실 한계를 추가하는 방식으로 최대 성능 모드 (ASYNC)를 지원한다.
사용자는 FailOver가 Fast Start FailOver 한계 시간이 지정하여, 점검 상태나 원하는 ORA 오류에 기초해 기다릴 필요 없이 즉시 발생하도록 Auto FailOver를 구성할 수 있다. 새로운 DBMS_DG PL/SQL Package를 사용해 애플리케이션이 패스트 스타트 페일오버 옵저버 프로세스를 통보해 Auto FailOver를 시작할 수 있다.
사용자들은 Physical Standby를 일시 Logical Standby DB로 전환해 롤링 데이터베이스 업그레이드에 영향을 미치고, 업그레이드가 완료된 후에 Physical Standby로 다시 전환할 수 있다. (KEEP IDENTITY절 사용). 따라서 Logical Standby DB를 생성하는데 필요한 중복 스토리지 투자를 하지 않고 롤링 데이터베이스 업그레이드를 실행하고자 하는 Physical Standby 사용자들에게 혜택을 제공한다.
Physical Standby인 경우 다음과 같은 기능으로 데이터 보호를 한다.
SSL 인증을 비밀번호 파일과 함께 사용하여 redo 전송을 인증할 수 있다.
Logical Standby 시 다음의 추가 데이터 유형 및 기타 오라클 기능, PL/SQL을 지원한다.
다음과 같은 기능이 가능하다.
다음과 같은 기능 강화로 Data Guard Broker를 사용할 때 관리가 더욱 간편해 진다.
다음과 같은 기능이 개선되었다.
Oracle Database 11g Enterprise Edition에서 제공하는 새로운 데이터베이스 옵션을 사용해 Data Guard 구성을 강화할 수 있습니다. 데이터베이스 옵션은 오라클 데이터베이스의 사용과 성능을 확장하기 위해 별도 라이선스 제품으로 제공되고 있다.
실서비스를 위한 DB에서 한 개 이상의 동기화된 데이터베이스로 자원 집중 활동을 오프 로딩하는 방식으로 QoS를 강화하는 Oracle Database 11g Enterprise Edition을 위한 옵션이다. Active Data Guard 옵션과 함께 제공되는 실시간 쿼리 기능을 사용해 계속해서 서비스용 데이터베이스에서 받은 변경내용을 Apply하면서, 쿼리, 소팅, 리포팅, 웹 기반 접속 등을 위한 Physical Standby DB에 읽기 전용 접속을 실행할 수 있다.
또한 Physical Standby DB 상에서 RMAN 블록 변경 추적을 실행해 Physical Standby DB에서 신속한 증가 백업을 실시할 수 있다.
늘어나는 데이터 양을 비용 효율적으로 관리하도록 하는 Oracle Database 11g Enterprise Edition의 옵션이다.
Advanced Compression은 네트워크 트래픽과 백업 프로세스 중의 데이터뿐만 아니라 문서, 이미지, 멀티미디어와 같은 다양한 체계/비체계화 된 데이터를 비롯한 모든 유형의 데이터를 압축한다.
Advanced Compression 옵션은 Standby DB에서 아카이브 로그 갭의 Data Guard 11g 해결 중에 redo 데이터의 네트워크 압축을 수행합니다. 따라서 네트워크나 Standby DB 작동 중지 후에 Standby DB의 재동기화를 가속화하고 네트워크 대역폭을 좀더 효율적으로 활용할 수 있다.
전체 구조는 다음 그림과 같다.
진행 순서는 다음과 같다.
SYNC의 특징은 다음과 같다.
Gap 해결을 가속하하는데 사용하는 몇가지 옵션
다음의 옵션을 사용하여 Gap 문제를 해결 할 수 있다.
Data Guard 11g은 기본과 스탠바이 시스템에서 O.S. 바이너리와 오라클 데이터베이스 바이너리와 같이 다양한 CPU 아키텍처 구축 옵션을 제공한다. 예를 들어, Primary Database가 Windows 상에 위치하고 스탠바이 데이터베이스는 Linux 상에 위치할 수 있다.
즉, Data Guard 11g 은 기본과 스탠바이 시스템이 다른 CPU 아키텍처와 운영시스템 (Windows와 Linux 등), 운영시스템 바이너리 (32/64-bit), 오라클 데이터베이스 바이너리 (32/64-bit)를 가진 경우에 Data Guard 구성 유연성을 증대한다.
하지만, MetaLink Note 413484.1.에서 설명하는 제약에 적용을 받음.
참고
Primary DB와 Standby DB의 두 개의 상시 요건은 논리적 스탠바이 데이터베이스를 사용하는 롤링 데이터베이스 업그레이드 중을 제외하고 endian 포맷이 항상 동일해야 하며 오라클 데이터베이스 출시가 동일해야 한다는 점이다.
데이터 가드는 비용, 가용성, 성능, 데이터 보호 사이의 균형을 위해 세가지 모드의 데이터 보호를 제공한다. 이들 모드는 Data Guard 구성 행동을 관장하는 규칙을 정의하며 사용 가능한 관리 인터페이스를 사용해 쉽게 설정할 수 있다.
다음과 같은 구문을 사용하여 보호 모드를 설정한다.
SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE {PROTECTION | AVAILABILITY | PERFORMANCE};
보호 모드에 따른 특성은 다음과 같다.
Maximum Protection은 최고 수준의 데이터 보호를 제공한다.
Maximum Availability는 Primary DB의 가용성을 유지하면서 다음으로 높은 수준의 데이터 보호를 제공한다.
Maximum Performance는 default 보호 모드이다. Maximum Availability 보다 Primary DB 성능이 높을 수 있지만 데이터 보호는 약간 낮은 편이다.
Data Guard는 Primary Database에서 Standby DB를 일시 분리하는 네트워크 연결성 문제를 원활하게 처리한다. 정확한 행동은 선택된 Data Guard 보호 모드의 규칙에 의해 정해진다.
최종 Standby DB를 사용할 수 없는 경우에 Maximum Availability와 Maximum Performance 모두 Primary Database가 프로세싱 트랜잭션을 계속할 수 있도록 합니다. Standby 연결이 다시 이루어지면 Standby가 기본과 신속하게 재동기화 되면서, 축적된 아카이브 로그가 자동으로 Standby DB에 전송되어 적용됩니다.
Data Guard는 redo 데이터를 Primary DB에 적용하는 두 가지 방법을 제공하며, 이들 방법은 Data Guard가 지원하는 두가지 유형의 Standby DB에 상응한다.
Physical Standby DB는 오라클 미디어 복구를 사용해 기본에서 수신한 redo 데이터를 적용한다. 블록 대 블록 기반으로 Primary Database와 물리적으로 동일하기 때문에 인덱스를 비롯한 데이터베이스 스키마가 동일하다.
Data Guard Redo 적용은 Managed Recovery Process (MRP)라는 특별한 프로세스를 사용합니다. RFS프로세스가 redo 데이터를 Standby Redo Logs (SRLs)에 작성할 때 MRP가 redo 데이터를 읽고 데이터를 Physical Standby DB에 적용합니다.
MRP는 데이터베이스를 mounting한 후 다음과 같은 명령어를 사용해 Physical Standby DB에서 시작됩니다.
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
MRP가 SRL 읽기를 완료하기 전에 SRL이 아카이브 되는 경우 MRP가 스탠바이 아카이브된 로그에서 읽기로 전환될 수 있다 (Primary Database의 redo 생성 속도가 매우 빠른 경우에 발생할 수 있는 상황). Data Guard Redo 적용의 최고 성능을 위해 MRP를 병행해서 작동할 수 있다. MRP가 가동 시에 병렬 복구 프로세스의 최적 숫자를 자동으로 결정한다.
Data Guard의 가장 큰 장점 중 하나가 오라클 프로세스를 사용해 redo 데이터를 Standby DB에 적용하기 전에 이들 데이터를 검증하는 기능이다.
Data Guard는 Standby DB를 redo 블록을 적용하는 방식으로 Primary DB에서 발생할 수 있는 데이터 파일 손상과 완전히 분리해서 동기화하는 아키텍처입니다. SYNC redo 전송의 경우, redo가 기본 SGA에서 전송되기 때문에 Primary Database 상의 물리적 입출력 손상과 완전히 분리됩니다. Standby DB에서 실행되는 소프트웨어 코드 경로 역시 Primary Database의 경로와 근본적으로 다르기 때문에, Primary Database에 영향을 주는 소프트웨어 오류로부터 Standby DB를 효과적으로 보호할 수 있습니다. 손상 감지 확인은 다음의 주요 인터페이스 발생합니다.
사실상 읽기가 스토리지에서 발생하지 않았는데 입출력 서브 시스템이 쓰기 완료를 확인하는 경우에 쓰기 손실이 발생한다. 이어지는 블록 읽기에서 입출력 서브 시스템이 데이터 블록의 스테일 (stale) 버전을 되돌려 데이터베이스의 다른 블록을 업데이트하는데 사용할 수 있으며, 이로 인해 데이터가 손상된다.
DB_LOST_WRITE_PROTECT 초기 파라미터가 설정되면 데이터베이스가 redo 로그에 버퍼 캐시 블록 읽기를 기록하며, 이 정보를 손실된 쓰기를 감지하는데 사용한다.
쓰기 손실 감지는 Data Guard와 사용할 때 가장 효과적이다. 이 경우에 기본과 Standby DB 모두에서 DB_LOST_WRITE_PROTECT를 설정한다. Standby DB가 관리된 복구 중에 redo를 적용하는 경우에 상응하는 블록을 읽고 redo 로그에 있는 SCN과 비교한다.
액티브 Data Guard 옵션의 실시간 쿼리를 사용해 redo 적용이 켜져 있는 상태에서 (복구가 활성화 된 상태)Physical Standby DB를 읽기 전용으로 공개함으로써 쿼리가 Primary Database의 최신 복제에 대해 작동할 수 있도록 합니다. 이러한 기능은 Enterprise Manager Grid Control 11g를 사용하거나 다음과 같은 방식으로 명령어 라인에서 수동으로 활성화 할 수 있습니다.
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
SQL> ALTER DATABASE OPEN;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE
SnapShot Standby DB는 Physical Standby DB를 Snapshot Standby DB로 전환해서 생성하는 완전한 업데이트가 가능한 Standby DB이다.
SQL> ALTER DATABASE CONVERT TO SNAPSHOT STANDBY;
Standby DB가 SnapShot Standby로 전환되는 경우에 간접적으로 보장되는 복구 지점이 생성되고 플래시백 데이터베이스가 활성화된다. SnapShot Standby를 사용 후 마친 후에는 Physical Standby DB로 다시 전환되어 다음을 명령어를 통해 Primary Database와 재동기화된다.
SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY DATABASE;
Data Guard는 DB를 보장된 복구 지점으로 간접적으로 플래시하며, SnapShot이 생성된 후부터 Standby에서 아카이브 된 Primary Database Redo를 자동으로 적용한다. 이 프로세스가 완료되면 보장된 복구 지점도 Drop된다.
SnapShot Standby DB를 ReadOnly로 열어서 테스트나 기타 용도로 사용할 수 있다. Primary Database가 계속해서 redo 데이터를 SnapShot Standby DB에 전송해 데이터가 원격 위치에서 보호받을 수 있도록 한다. SnapShot Standby DB는 redo를 안전하게 유지 하기 위해 아카이브한다. 테스트 활동이 완료되면 SnapShot Standby DB를 Physical Standby DB로 전환하여 SnapShot Standby DB로 작동하는 중에 Primary에서 받은 로그 파일을 적용하는 방식으로 SnapShot Standby DB를 재동기화한다.
데이터의 물리적 조직과 구조가 다를 수 있지만 Logical Standby DB에는 Primary Database와 동일한 논리적 정보가 포함되어 있다. SQL 적용 기술은 Primary Database에서 받은 redo 데이터를 SQL 구문으로 변형한 후에 Standby DB 상에서 SQL 구문을 실행하는 방식으로 Logical Standby DB를 Primary Database와 동기화해 유지한다. Physical Standby DB와 유사하게, 이를 통해 적용이 활성화된 상태에서 쿼리나 리포팅 목적으로 Logical Standby DB에 접속할 수 있다.
Logical Standby DB는 SQL 구문을 사용해 업데이트되기 때문에 Physical Standby DB보다 유연성이 높다. 따라서 Logical Standby DB는 읽기-쓰기 모드에서 열수 있고 데이터베이스에 읽기-쓰기 접속을 필요로 하는 다른 업무를 수행할 수 있다 (Standby DB에만 존재하는 로컬 테이블 추가나 읽기-쓰기 접속을 필요로 하는 리포팅이나 합산 수행 등). SQL 적용에 의해 유지되는 테이블 상에 추가 인덱스와 Materialized뷰를 생성함으로써 이들 업무를 최적화 할 수 있다 (데이터베이스가 공개 읽기-쓰기이지만 SQL 적용이 Primary Database와 동기화를 책임지는 데이터에는 변경을 허용하지 않는다는 사실에 주의해야 한다.)
Logical Standby DB는 여러 데이터베이스 스키마를 호스팅하고, 사용자는 Primary Database에서 업데이트되지 않는 스키마에 있는 테이블 에서 정상적인 데이터 조작을 할 수 있다. Logical Standby DB는 데이터 유형, 테이블 유형, DDL-DML 작동 유형에 다소의 제약이 있다.
지원이 되지 않는 데이터 유형과 스토리지 특성 목록은 아래 문서를 참조한다.
http://download.oracle.com/docs/cd/B28359_01/server.111/b28294/toc.htm
SQL 적용은 Primary Database에서부터 Logical Standby DB로 변경 적용 업무를 수행하는 Background 프로세스 컬렉션을 사용한다. 다음 그림에서 각 프로세스가 수행하는 정보 흐름과 역할을 표시하고 있다.
각 프로세스의 기능은 다음과 같다.
다음의 SQL 명령어를 입력하면 이들 SQL 적용 프로세스가 시작된다.
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;
다음의 사항에 대해 적용이 가능해 졌다.
Data Guard는 구성의 런타임 성능을 자세하게 살펴보는 다양한 view를 제공한다.
SYNC redo 전송 수신지를 위한 응답 시간 히스토그램을 포함하는 고정 View이다.
Data Guard Broker는 Data Guard 구성의 생성, 유지, 모니터링을 자동화하고 중앙화하는 분산 관리 프레임워크이다.
Data Guard Broker의 기능은 간단히 다음과 같다.
SwitchOver는 운영 시스템이나 하드웨어 업그레이드나 오라클 데이터베이스 소프트웨어와 패치 세트의 롤링 업그레이드와 같은 예상된 작동 중지 시에 Primary Database 다운타임을 줄이는데 사용한다.
SwitchOver 운영을 위해서는 모든 사용자 세션이 Primary Database에서 분리되어야 한다. 그 다음, Primary Database를 Standby 역할로 전환한 후 Standby DB를 기본 역할로 전환한다.SwitchOver는 Oracle Enterprise Manager GUI 인터페이스나 Data Guard Broker의 명령어 라인 인터페이스를 사용하는 관리자가 또는 SQL을 통해서 직접 시작할 수 있다.
예를 들어, 다음의 단일 Data Guard Broker CLI (DGMGRL) 명령어가 "Chicago" Standby DB로 SwitchOver를 시작하고 완료한다.
DGMGRL> SWITCHOVER TO Chicago;
일단 시작되면, Data Guard가 실제 역할 전환 프로세스를 자동화한다. 프로세스 중에 데이터 손실이 없다.
FailOver는 예상하지 못한 장애가 Primary Database에 발생할 때 온라인으로 Standby DB 중 하나를 가져오는 동작이다. 따라서 Primary Database에 영향을 주는 이벤트를 진단하고 해결하는 동안에 DownTime이 발생하는 대신에 Standby를 기본 역할로 신속하게 올려서 재해 시간 목표를 달성할 수 있다. FailOver 동작을 위해서 Standby DB를 다시 시작할 필요가 없다. 데이터베이스 파일이 원래 Primary Database에서 영향을 받지 않고 유지되는 한 데이터베이스를 다시 시작하면 원래 Primary Database가 복귀되어 플래시백 데이터베이스를 사용해 새로운 기본을 위한 Standby DB로 재동기된다. 이때 백업에서 복구할 필요가 없다.
수동 FailOver는 Oracle Enterprise Manager GUI 인터페이스나 Data Guard Broker의 명령어 라인 인터페이스를 사용하는 관리자나 SQL*Plus을 통해 직접 시작된다. 예를 들어 다음의 단일 Data Guard Broker CLI (DGMGRL) 명령어가 "Chicago" Standby DB에 FailOver를 시작하고 완료한다.
DGMGRL> FAILOVER TO Chicago;
Data Guard가 Maximum Protection이나 Maximum Availability에서 작동되고 있고 대상 Standby DB가 FailOver 시에 동기화되는 경우에 데이터 손실이 전혀 없다. Maximum Performance 모드에서는 FailOver 당시에 Standby DB로 보내지지 않은 Primary Database의 redo 데이터가 여전히 있는 경우에 데이터 손실이 일어날 수도 있다. 수동 FailOver에 더해 고객은 Data Guard가 철저하게 통제되는 방식으로 자동 FailOver를 수행하도록 구성하는 옵션을 사용할 수도 있다. 이 내용은 뒷부분에서 설명할 것이다.
Fast-Start FailOver를 사용해 Data Guard가 FailOver를 불러 일으키기 위해 수동 단계를 거치리 안하고 미리 선택한 Standby DB에 자동으로 FailOver할 수 있도록 한다. 뿐만 아니라 장애 Primary Database가 복귀할 때 자동으로 새로운 Primary Database의 Standby로 구성되어 복귀된다. Fast-Start FailOver는 Data Guard Broker 구성에서만 사용할 수 있으며 DGMGRL나 Enterprise Manager를 통해서만 구성이 가능하다.
Fast-Start FailOver 구성은 DGMGRL 클라이언트 사이드 구성요소에 통합되는 가벼운 프로세스인 별도의 옵저버 프로세스로 모니터링 한다. 계속해서 Fast-Start FailOver 환경을 모니터링 해서 Primary Database가 사용 가능하도록 확인한다. 옵저버와 Standby DB 모두 Primary Database와 연결을 해제되는 경우에 옵저버가 Fast-Start FailOver를 시작하기 전의 구성 시간 동안 Primary Database에 연결을 시도한다.
Fast-Start FailOver는 세 개의 Fast-Start FailOver, 즉 기본, 스탠바이, 옵저버 중, 최소 두 개에서 주요 상태 전환에 동의하도록 고안되었으며, 따라서 프로덕션 작업을 담당하는 두 개의 나뉘어진 Primary Database가 있을 수 있는 split-brain 시나리오와 같은 상황을 방지할 수 있다. Fast-Start FailOver의 간단하지만 세련된 아키텍처로 데이터 보호 역시 중요한 고가용성 상황에서 사용할 수 있다.
Enterprise Manager의 장점은 Data Guard Fast-Start FailOver 구성에서 옵저버를 위한 고가용성을 활성화한다는 점이다. Enterprise Manager는 옵저버의 상태를 모니터링 하고, 옵저버 장애를 감지하고, 옵저버를 원래 호스트에서 다시 시작하려 시도하고, 이러한 시도가 실패하는 경우에는 옵저버를 사전에 지정된 두 번째 호스트에서 다시 시작한다. 옵저버의 고가용성을 보장하는 Enterprise Manager 기능은 Data Guard Fast-Start FailOver를 활용하는 HA 전략의 중요한 요소입니다.
Fast-Start FailOver의 행동을 통제하기 위해 제공되는 특징 중 일부이다.
DGMGRL ENABLE FAST_START FAILOVER CONDITION 명령을 사용해 Fail-Over 한계 시간이 경과하기를 기다릴 필요없이 Fast-Start Fail-Over발생해야 하는 조건을 명시하기도 한다. 다음과 같은 경우를 명시할 수 있다.
DBMS_DG PL/SQL 패키지를 사용하여 Application이 특정 조건과 마주치는 경우에 Fast-Start FailOver를 요청하도록 할 수 있다.
장애 후에 새로운 기본의 백업으로부터 Standby DB를 재구성할 필요가 없는 경우 복구 시킬 수가 있는다. 이때 장애 이벤트가 발생하기 전에 플래시백 DB를 활성화시켜야 한다.) 이때, Fast-Start FailOver를 사용해 자동으로 이루어 진다.
수동으로도 처리는 가능하다.
DGMGRL> REINSTATE DATABASE 'database';
다음과 같이 구분이 가능하다.
Complate-site FailOver
Data Guard Standby DB와 완전히 중복되는 중간층 애플리케이션 세트를 호스팅하는 2차 사이트를 활용한다. 2차 사이트로 Fail-OVer 할 때 중간층 서버가 시작되고 네트워크 로드 밸런서가 새로운 기본 사이트로 다시 경로 설정된다. Data Guard Fail-Over가 2차 지점에 있는 Standby DB를 Primary 역할로 전환한다. Oracle MAA 문서인 오라클 데이터베이스 가용성 베스트 프랙티스 (Oracle Database High Availability Best Practices) 5에서 컴플릿 사이트 페일오버 실행 안내를 제공한다.
Oracle RAC 내 노드 장애가 발생한 경우
장애 노드에 연결된 클라이언트에게 장애가 발생했음을 신속하게 알리고 클러스터의 살아남은 노드에 다시 연결하여 프로세싱을 계속해야 한다. 기술 백서인 Oracle Real Application Clusters를 사용한 작업부하 관리 (Workload Management with Oracle Real Application Clusters) 6에서 Oracle RAX 내의 노드 장애 처리를 위한 안내를 제공한다.
Partial-site FailOver
Primary Database를 사용할 수 없게 되었지만 Data Guard Fail-Over 이후에 Primary DB가 손상을 받지 않고 남아 있으며 영향을 받은 클라이언트를 2차 위치의 새로운 Primary Database로 다시 경로 설정해야 하는 경우에 발생한다. 파셜 사이트 장애에 대한 Client Fail-Over 실행 개요는 아래와 같다. 자세한 내용은 고가용성 오라클 데이터베이스의 클라이언트 페일오버 베스트 프랙티스 (Client Failover Best Practices for Highly Available Oracle Databases) 7를 참조한다.참고
높은 수준에서 Data Guard 구성의 Client Fail-Over 자동화에는 클라이언트에게 장애가 발생한 사실을 통보하고 TCP 타임아웃에서 해제한 후 클라이언트를 새로운 Primary Database에 다시 경로 설정해 Data Guard 페일오버의 일환으로 데이터베이스 서비스를 새로운 Primary Database로 재위치시키는 것이 포함된다.
Oracle Database 10g은 데이터베이스 서비스라고 불리는 Oracle RAC의 자동 작업부하 관리 기능과 단일 인스턴스 (non-RAC) 데이터베이스를 도입해 데이터베이스 작업부하를 그룹으로 하고 컴퓨팅 자원을 이들 부하에 지정한다. 특정 아래 예에서 사용되는 "판매" 애플리케이션과 같이 애플리케이션에 대한 데이터베이스 서비스를 정의할 수 있으며, Primary Database에서 서비스 장애가 일어나는 경우에 이 서비스가 Data Guard FailOver의 일환으로 자동으로 새로운 Primary Database로 이동한다.
Oracle RAC 클러스터 사용자가 listener 등록을 사용하면 클러스터에 있는 모든 listener가 어떤 인스턴스가 현재 데이터베이스 서비스를 제공 중인지 연결 요청이 수신되면 알 수 있기 때문에 서비스를 제공하는 인스턴스에서 독립된 서비스에 접속할 수 있다. 서비스를 제공하는 인스턴스에 장애가 발생하면 Oracle RAC가 서비스를 클러스터 내에서 살아남은 인스턴스로 이동시킨다.
동일한 서비스 이동 개념이 Data Guard 구성에도 적용된다. 어떻게 발생하는지 알아보기 위해서는 단일 노드 기본과 Standbby DB를 이용해 간단한 Data Guard 구성에 착수한다. "판매" 라는 데이터베이스 서비스가 모든 적용 가용성 설정을 사용해 생성되고 구성된다. 클라이언트 애플리케이션이 구성에서 Primary와 Standby의 모든 호스트를 포함하는 Oracle Net 별칭을 사용해 "판매" 서비스에 연결된다. Oracle Net 별칭으로 사용한 서비스 명칭이 Primary Database를 위한 인스턴스 상에서만 작동하기 때문에 원하지 않는 스탠바이 데이터베이스에 대한 연결 시도를 방지할 수 있다. Primary Database로 서비스 이동은 Data Guard 역할 변경이 스탠바이 데이터베이스를 기본 역할로 전환할 때 시작되는 트리거가 사용되고 새로운 Primary Database에서 서비스가 시작되면서 자동화된다. 예는 다음과 같습니다.
CREATE OR REPLACE TRIGGER manage_service AFTER STARTUP ON database
DECLARE
role VARCHAR(30);
BEGIN
SELECT DATABASE_ROLE INTO role FROM V$DATABASE;
IF role = 'PRIMARY' THEN
DBMS_SERVICE.START_SERVICE('sales');
ELSE
DBMS_SERVICE.STOP_SERVICE('sales');
END IF;
END;
상기 예에 이어서 클라이언트 통보와 재연결을 사용해 장애 시에 원래 Primary Database에 연결된 클라이언트들이 긴 TCP 타임아웃이 경과되기를 기다리는 hung-state 스탠바이에 들어가지 않도록 방지해 준다. 오라클은 이들 클라이언트에게 장애가 발생했다는 사실을 알리고, TCP 타임아웃에서 해제하고, 새로운 연결과 기존 연결이 살아남은 RAC 노드나 Data Guard 페일오버 후에 새로운 기본 스탠바이로 설정되도록 한다.
Fast Application Notification (FAN)을 사용하는 OCI 클라이언트를 위한 기능이다. 새로운 Primary Database가 어떤 클라이언트가 장애 인스턴스에 연결되어 있었는지 알고, FailOver Process의 일환으로 위의예에서 사용한 "판매" 서비스에 재연결하도록 통보한다. Data Guard 구성의 JDBC 클라이언트가 Fast Connection Failover와 Standby DB가 기본 역할로 전환할 때 DB_ROLE_CHANGE 시스템 이벤트에서 시작되는 Standby DB 상에서 생성되는 Trigger를 통해 통보를 받는다. Trigger는 오라클이 제공하는 퍼블리셔 프로그램을 호출해 클라이언트를 TCP 타임아웃에서 해제하고 JDBC 클라이언트에게 데이터베이스 서비스가 새로운 기본에서 사용 가능하다고 알린다.
최종 작업은 일단 클라이언트에게 장애를 통보한 후에 장애 호스트에 재연결을 시도할 때 이들 클라이언트들이 TCP 타임아웃에 적용되지 않도록 하는 것이다. 이는 SQLNET 아웃바운드 연결 타임아웃을 사용해 처음 호스트를 사용할 수 없는 경우 클라이언트가 신속하게 어드레스 목록의 다음 호스트에 연결을 시도할 수 있도록 한다
JDBC 클라이언트를 위한 데이터베이스 서비스 이동과 HA 이벤트 발행에 사용하는 트리거 예와 함께 OCI, OLE, DB, JDBC의 자세한 추가 구성 내용은 MAA 문서 가용성 오라클 데이터베이스의 클라이언트 페일오버 베스트 프랙티스 (Client Failover Best Practices for Highly Available Oracle Databases)에서 설명하고 있다.
데이터베이스 전환이 하나에서 다른 하나로 전환될 때마다 Data Guard DB_ROLE_CHANGE 시스템 이벤트가 발사된다. 이는 ON STARTUP 시스템 이벤트와 매우 유사하며, 다만 역할 변경 후에 발사된다는 점이 다르다. 관리자는 이러한 이벤트가 발생할 때 역할 변경 이후 업무 관리의 한 방법으로 이를 실행하는 트리거를 개발할 수 있다. 새로운 역할에 상관없이 역할 전환 이후에 처음으로 데이터베이스가 공개되면 이벤트가 발사된다
DB_ROLE_CHANGE 시스템 이벤트는 역할 변경 이후 과제를 관리하고 자동화하는데 사용할 수 있으며, 자동 클라이언트 페일오버를 용이하게 하는 한 가지 방법이다. 이러한 과제들로는 새로운 프로덕션 데이터베이스 상에서 서비스를 시작하는 것, 클라이언트가 새로운 프로덕션 데이터베이스에 다시 연결할 수 있도록 명칭 해결 (name resolution) 서비스나 연결 기술어 (descriptor)를 변경하는 것, 3자 애플리케이션을 시작하는 것, 일시 테이블 스페이스를 추가하는 것 등이 있다. DB_ROLE_CHANGE는 관리자가 데이터베이스 트리거를 통해 달성하는 활동을 자동화할 수 있도록 하는 유연한 메카니즘이다.
주요 출시나 패치세트 업그레이드를 위한 (10.1.0.3) Oracle Database Software Upgrade는 Data Guard SQL Apply를 사용해 롤링 방식으로 실시할 수 있으며, 다음과 같다.
롤링 업그레이드 프로세스 단계는 다음과 같이 진행된다.
테스트 목적으로 혼합 모드에서 작동하는 경우, 업그레이드가 실패하면서 데이터 손실은 없지만 소프트웨어가 다운그레이드 될 수 있다. 이들 단계에서 추가 데이터 보호를 위해서는 두 번째 스탠바이 데이터베이스를 사용할 수도 있다.
Oracle Database 11g부터 시작해, Physical Standby DB가 Logical Standby DB가 제공하는 Rolling Upgrade DB을 활용할 수 있다. 새로운 SQL> ALTER DATABASE RECOVER TO LOGICAL STANDBY 구문에 대한 KEEP IDENTITY 절 옵션을 사용해 Physical Standby DB를 Rolling Upgrade 위해 일시적으로 Logical Standby DB로 전환한 후 업그레이드 완료 후 다시 Primary Database와 Physical Standby DB의 원래 구성으로 돌릴 수 있다.
Data Guard는 다양한 유연한 구성 옵션을 제공한다. Cascaded Destinations을 사용해 Physical Standby DB를 Standby DB에서 받은 redo를 다른 Standby DB로 전송할 수 있다. Standby DB가 redo 데이터를 첫 번째 Standby DB에 전송하기 때문에 이 기능을 사용해 기본 시스템 상에서 로드를 줄이고, 여러 개의 스탠바이 데이터베이스가 필요한 경우에 기본 사이트에서 네트워크 트래픽과 네트워크 자원 사용을 줄일 수 있다. Cascaded Destinations을 포함하는 Data Guard 구성에서는 Oracle RAC와 Data Guard Broker가 지원되지 않다.
Data Guard와 Oracle RAC는 가장 높은 수준의 확장성, 가용성, 데이터 보호를 제공하는 상호보완적인 기술이다. Cascaded Destinations 사용에 적용되는 제약을 제외하고 (위에서 설명) Oracle RAC와 Data Guard 사이의 통합은 원활하게 이루어진다. Oracle RAC와 단일 노드 데이터베이스를 결합해 Data Guard 구성 참여하고 역할을 맡을 수 있다. Oracle RAC는 업계 유일의 작업부하 관리와 확장성 기능을 제공하는 동시에 서버 장애에 대비해 보호하는 이상적인 HA 솔루션을 제공한다. Data Guard는 완전한 스토리지 어레이 장애, 운영자 실수, Oracle RAC 노드에 걸쳐 롤링 방식으로 실시될 수 없는 예상된 유지, 사이트 장애를 가져오는 여러 개의 연관된 장애로 인한 다운타임을 최소화하는 완전한 중복성 (redundancy)을 갖추고 데이터 가용성과 보호의 수순을 다시 한 차원 높인다.
Oracle Maximum Availability Architecture (MAA) 9는 오라클이 테스트하고 고객 사용을 통해 검증된 오라클 가용성 기술 구축을 위한 베스트 프랙티스를 보여주는 청사진이다. MAA의 목적은 최적의 가용성 아키텍처를 설계하는데 있어서 복잡성을 해결하는데 있다.
MAA 베스트 프랙티스에는 Oracle RAC를 사용한 구성, redo 전송 최적화, 스위치오버/페일오버 작동, 클라이언트 페일오버, Redo 적용성능, SQL 적용 구성, 튜닝 등과 같은 다양한 Data Guard 구성 측면에 대한 권장사항을 포함하고 있다.