Google Cloud NetApp Volumes에서 Oracle Database 26ai용 Data Guard Broker 및 Fast-Start Failover 구성
Google Cloud NetApp Volumes에서 Oracle Database 26ai에 대한 자동 역할 전환을 활성화하려면 전용 옵저버를 사용하여 Oracle Data Guard Broker 및 Fast-Start Failover를 구성하십시오.
Tier-specific: 이 절차는 Prod HA (Data Guard + FSFO) 티어에만 적용됩니다.
이 절차에서는 두 데이터베이스 모두에서 브로커를 활성화하고, Data Guard 구성을 생성하고, MaxAvailability 보호 모드로 FSFO를 활성화하고, 옵저버 호스트에 Oracle Instant Client를 설치하고, 지갑 기반 자격 증명을 사용하여 systemd 서비스로 옵저버를 시작하고, 스위치오버 및 페일오버를 테스트합니다. 이후에는 ENABLE CONFIGURATION, 임시 LOG_ARCHIVE_DEST_* SQL이 아닌 *DGMGRL*을 통해 전송 및 역할을 관리하십시오.
1단계: Data Guard Broker 활성화
두 데이터베이스 호스트 모두에서 Data Guard Broker를 활성화하고 기본 데이터베이스와 대기 데이터베이스를 통합 관리하에 연결하는 브로커 구성을 생성합니다.
-
기본 및 대기 데이터베이스 호스트에 `dg_broker_start=TRUE`을(를) 설정하십시오.
sudo -u oracle bash -c ' . ~/.bash_profile sqlplus / as sysdba <<SQL ALTER SYSTEM SET dg_broker_start=TRUE SCOPE=BOTH; EXIT SQL' -
기본 서버에서 OS 인증을 사용하여 DGMGRL에 연결하고 브로커 구성을 생성합니다.
Observer 호스트에서만 자동 로그인 지갑이 존재한 후
dgmgrl /@orcl`을(를) 사용하십시오. `dgmgrl명령줄에 암호를 입력하지 마십시오.sudo -u oracle bash -c ' export ORACLE_HOME=/u01/app/oracle/product/26ai/db_1 export ORACLE_SID=orcl export PATH=$ORACLE_HOME/bin:$PATH dgmgrl / 'DGMGRL> CREATE CONFIGURATION 'orcl_dg' AS PRIMARY DATABASE IS 'orcl' CONNECT IDENTIFIER IS orcl; DGMGRL> ADD DATABASE 'orcls' AS CONNECT IDENTIFIER IS orcls; DGMGRL> ENABLE CONFIGURATION; DGMGRL> SHOW CONFIGURATION; -- Expect: Configuration Status: SUCCESS, both members SUCCESS. -
구성 유효성 검사 —
WARNING또는 NULL이 아닌ERROR값을 3단계: FSFO 속성을 구성하고 활성화합니다 이전에 수정하십시오:DGMGRL> VALIDATE DATABASE 'orcls'; DGMGRL> SHOW CONFIGURATION VERBOSE;
2단계: FSFO에 대한 플래시백 확인
두 호스트 모두에서 플래시백 데이터베이스가 활성화되어 있는지 확인하십시오. 플래시백은 FSFO 자동 복구에 필요하며, 이를 통해 장애 조치 후 이전 기본 호스트가 자동으로 대기 호스트로 구성에 다시 참여할 수 있습니다.
-
두 데이터베이스 호스트 모두에서
flashback_on`이(가) `YES켜져 있는지 확인합니다.sudo -u oracle bash -c ' . ~/.bash_profile sqlplus -s / as sysdba <<<"SELECT flashback_on FROM v\$database;" ' # Expected on both hosts: YES -
플래시백 보존이 이미 설정되어 있지 않은 경우 기본 장치에만 해당:
sudo -u oracle bash -c ' . ~/.bash_profile export ORACLE_SID=orcl sqlplus / as sysdba <<SQL ALTER SYSTEM SET db_flashback_retention_target=1440 SCOPE=BOTH; EXIT SQL'
3단계: FSFO 구성 및 활성화
SYNC 리두 전송을 설정하고, MaxAvailability 보호 모드를 구성하고, 각 데이터베이스에 FSFO 대상을 정의하고, Fast-Start Failover를 활성화합니다.
-
두 데이터베이스 모두에서 리두 전송 모드를 `SYNC`로 설정하고 보호 모드를 `MaxAvailability`로 높이십시오:
DGMGRL> EDIT DATABASE 'orcl' SET PROPERTY LogXptMode='SYNC'; DGMGRL> EDIT DATABASE 'orcls' SET PROPERTY LogXptMode='SYNC'; DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MaxAvailability; -
각 데이터베이스가 서로를 장애 조치 대상으로 지정하도록 FSFO 대상을 설정한 다음 임계값 및 자동 복구 동작을 구성합니다.
-- Each side names the other DGMGRL> EDIT DATABASE 'orcl' SET PROPERTY FastStartFailoverTarget = 'orcls'; DGMGRL> EDIT DATABASE 'orcls' SET PROPERTY FastStartFailoverTarget = 'orcl'; -- 30 s is the default; lower for faster RTO but more sensitive to network blips DGMGRL> EDIT CONFIGURATION SET PROPERTY FastStartFailoverThreshold = 30; DGMGRL> EDIT CONFIGURATION SET PROPERTY FastStartFailoverAutoReinstate = TRUE; -
빠른 시작 페일오버를 활성화하고 구성을 확인합니다:
DGMGRL> ENABLE FAST_START FAILOVER; DGMGRL> SHOW FAST_START FAILOVER; -- Expected: Threshold 30 seconds, Target orcls, Observer not yet registered.
4단계: Observer에 Instant Client 설치
전용 Observer VM에 Oracle Instant Client를 설치하고(oradg-obs, 전용 oracle OS 사용자를 생성하고, Observer가 TCP/1521을 통해 두 데이터베이스 멤버 모두에 연결할 수 있도록 Oracle Net 환경을 구성합니다.
-
옵저버 호스트에 Oracle Instant Client 패키지를 설치합니다. (
oradg-obs):# Use -el8 / -el9 if the Observer is on an older OL/RHEL release sudo dnf install -y oracle-instantclient-release-el10 sudo dnf install -y oracle-instantclient-basic \ oracle-instantclient-sqlplus \ oracle-instantclient-tools -
지갑과 systemd 유닛을 소유할 전용
oracleOS 사용자를 생성합니다.sudo useradd -u 54321 -m oracle sudo passwd -l oracle -
Oracle Net 환경을 구성하고 두 데이터베이스 호스트 모두에 대한 항목을 사용하여 `tnsnames.ora`을(를) 생성하십시오.
sudo mkdir -p /etc/oracle/network/admin sudo chown -R oracle:oracle /etc/oracle sudo -u oracle tee /home/oracle/.bash_profile >/dev/null <<'EOF' export ORACLE_HOME=/usr/lib/oracle/26/client64 export LD_LIBRARY_PATH=$ORACLE_HOME/lib export PATH=$ORACLE_HOME/bin:$PATH export TNS_ADMIN=/etc/oracle/network/admin EOF # tnsnames.ora — must reach both DB hosts on TCP/1521 sudo tee /etc/oracle/network/admin/tnsnames.ora >/dev/null <<'EOF' orcl = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracdb1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = orcl))) orcls = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracdb2)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = orcls))) EOF sudo chown oracle:oracle /etc/oracle/network/admin/tnsnames.ora
5단계: Observer를 systemd 서비스로 실행
데이터베이스 멤버 두 곳 모두에 대한 자격 증명을 사용하여 자동 로그인 지갑을 생성한 다음, 재부팅 후에도 유지되고 구성에 자동으로 재연결되도록 Observer를 systemd 서비스로 구성하고 시작합니다.
전용 Data Guard 관리자 계정(예: SYSDG)의 자격 증명은 SYS 대신 지갑에 저장하십시오. 자격 증명은 dgmgrl 명령줄에 표시되어서는 안 됩니다. 명령줄에서는 ps 및 `journalctl`에서 볼 수 있으므로, 항상 Observer에서 `/@<tns_alias>`을 사용하여 연결하십시오.
-
암호화된 지갑을 생성하고 두 데이터베이스 멤버에 대한 자격 증명을 입력하십시오.
sudo -iu oracle bash <<'BASH' mkdir -p $TNS_ADMIN/wallet mkstore -wrl $TNS_ADMIN/wallet -create # prompts for a wallet password — store in your secrets manager mkstore -wrl $TNS_ADMIN/wallet -createCredential orcl sys ChangeMe!1 mkstore -wrl $TNS_ADMIN/wallet -createCredential orcls sys ChangeMe!1 BASH sudo tee /etc/oracle/network/admin/sqlnet.ora >/dev/null <<'EOF' WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /etc/oracle/network/admin/wallet))) SQLNET.WALLET_OVERRIDE = TRUE EOF sudo chown oracle:oracle /etc/oracle/network/admin/sqlnet.ora sudo chmod -R 0700 /etc/oracle/network/admin/wallet sudo -iu oracle ls -l /etc/oracle/network/admin/wallet # Expected: cwallet.sso and ewallet.p12 sudo -iu oracle bash <<'BASH' sqlplus -L "/@orcl as sysdba" <<'SQL' SELECT database_role FROM v$database; EXIT SQL BASH sudo -iu oracle bash <<'BASH' sqlplus -L "/@orcls as sysdba" <<'SQL' SELECT database_role FROM v$database; EXIT SQL BASH sudo -iu oracle dgmgrl /@orcl 'SHOW CONFIGURATION;' sudo -iu oracle dgmgrl /@orcls 'SHOW CONFIGURATION;' -
Observer systemd 서비스가 암호 입력 없이 시작될 수 있도록 자동 로그인 지갑(
cwallet.sso)을 생성합니다.cwallet.sso`가 `mkstore실행 후 누락된 경우 Instant Client 도구 패키지 또는 데이터베이스 홈에서 `orapki`를 사용하여 생성한 다음 저장된 자격 증명을 다시 추가하십시오.sudo -iu oracle orapki wallet create \ -wallet /etc/oracle/network/admin/wallet \ -auto_login sudo -iu oracle ls -l /etc/oracle/network/admin/wallet # Expected: cwallet.sso and ewallet.p12 -
systemd 유닛을 생성하고, 서비스를 활성화하고, Observer가 연결되었는지 확인합니다.
sudo tee /etc/systemd/system/dgmgrl-observer.service >/dev/null <<'EOF' [Unit] Description=Oracle Data Guard Fast-Start Failover Observer After=network-online.target Wants=network-online.target [Service] Type=simple User=oracle Group=oracle Environment=ORACLE_HOME=/usr/lib/oracle/26/client64 Environment=LD_LIBRARY_PATH=/usr/lib/oracle/26/client64/lib Environment=TNS_ADMIN=/etc/oracle/network/admin Environment=PATH=/usr/lib/oracle/26/client64/bin:/usr/bin:/bin ExecStart=/usr/lib/oracle/26/client64/bin/dgmgrl -silent /@orcl "START OBSERVER FILE IS '/var/lib/oracle/dgmgrl-observer.dat'" Restart=always RestartSec=5 [Install] WantedBy=multi-user.target EOFsudo install -d -o oracle -g oracle -m 0755 /var/lib/oracle sudo install -o oracle -g oracle -m 0640 /dev/null /var/log/dgmgrl-observer.log sudo tee /etc/logrotate.d/dgmgrl-observer >/dev/null <<'EOF' /var/log/dgmgrl-observer.log { weekly rotate 8 compress delaycompress missingok notifempty create 0640 oracle oracle copytruncate } EOF sudo systemctl daemon-reload && sudo systemctl enable --now dgmgrl-observer.service sudo systemctl status dgmgrl-observer.serviceObserver는 기본에서 읽어야 합니다
CONNECTED(aDISCONNECTEDObserver는 FSFO를 자동으로 중단합니다):DGMGRL> SHOW FAST_START FAILOVER; DGMGRL> SHOW CONFIGURATION; -- Configuration Status: SUCCESS, FSFO: ENABLED
6단계: FSFO 테스트
Data Guard 구성을 `VALIDATE DATABASE`으로 검증한 다음 계획된 스위치오버를 수행하고, 테스트 기간 내에 계획되지 않은 VM 재설정 페일오버를 수행하여 FSFO가 엔드 투 엔드로 제대로 작동하는지 확인합니다.
-
계획된 전환을 테스트하고 원래 토폴로지를 복원합니다.
DGMGRL> VALIDATE DATABASE 'orcls'; DGMGRL> SWITCHOVER TO 'orcls'; DGMGRL> SHOW CONFIGURATION; DGMGRL> SWITCHOVER TO 'orcl'; -- restore topology -
제어된 테스트 환경에서 VM 재설정을 사용하여 예기치 않은 장애 조치를 테스트합니다.
VM 재설정(크래시 테스트 방식)을 사용하십시오. 일반적인 중지 작업으로는 FSFO가 발생하지 않을 수 있습니다. Tail
/var/log/dgmgrl-observer.logon `oradg-obs`을 사용하여 장애 조치 진행 상황을 모니터링하고, 완료되면 토폴로지를 복원하십시오.
다음 단계
이 배포 환경에 Oracle Data Guard Broker, Fast-Start Failover 및 Observer 구성이 완료되었습니다.