TR-4981: Amazon FSx ONTAP을 사용한 Oracle Active Data Guard 비용 절감
Allen Cao, Niyaz Mohamed, NetApp
이 솔루션은 AWS FSx ONTAP을 대기 사이트 Oracle 데이터베이스 스토리지로 사용하여 Oracle Data Guard를 구성하여 AWS에서 Oracle Data Guard HA/DR 솔루션의 라이센싱 및 운영 비용을 절감하는 방법에 대한 개요와 세부 정보를 제공합니다.
목적
Oracle Data Guard는 기본 데이터베이스 및 대기 데이터베이스 복제 구성의 엔터프라이즈 데이터에 대한 고가용성, 데이터 보호 및 재해 복구를 보장합니다. Oracle Active Data Guard는 기본 데이터베이스에서 대기 데이터베이스로 데이터 복제가 활성 상태인 동안 사용자가 대기 데이터베이스에 액세스할 수 있도록 합니다. Data Guard는 Oracle Database Enterprise Edition의 기능입니다. 별도의 라이센스가 필요하지 않습니다. 반면 Active Data Guard는 Oracle Database Enterprise Edition 옵션이므로 별도의 라이센스가 필요합니다. 여러 대기 데이터베이스가 Active Data Guard 설정의 기본 데이터베이스로부터 데이터 복제를 수신할 수 있습니다. 그러나 각각의 추가 대기 데이터베이스에는 활성 Data Guard 라이센스와 기본 데이터베이스의 크기로 추가 스토리지가 필요합니다. 운영 비용이 빠르게 증가합니다.
Oracle 데이터베이스 작업의 비용 절감에 관심이 있고 AWS에서 Active Data Guard를 설정할 계획이라면 대안을 고려해야 합니다. Active Data Guard 대신 Data Guard를 사용하여 기본 데이터베이스에서 Amazon FSx ONTAP 스토리지의 단일 물리적 대기 데이터베이스로 복제합니다. 그런 다음 이 대기 데이터베이스의 여러 복사본을 복제해 읽기/쓰기 액세스를 위해 열어 보고, 개발, 테스트 등과 같은 다른 여러 활용 사례를 지원할 수 있습니다 그 결과 Active Data Guard의 기능을 효과적으로 제공하는 동시에 추가 대기 데이터베이스당 Active Data Guard 라이센스 및 추가 스토리지 비용을 절감할 수 있습니다. 이 문서에서는 AWS의 기존 기본 데이터베이스로 Oracle Data Guard를 설정하고 Amazon FSx ONTAP 스토리지에 물리적 대기 데이터베이스를 배치하는 방법을 설명합니다. 대기 데이터베이스는 스냅샷을 통해 백업되고 필요에 따라 활용 사례를 위해 읽기/쓰기 액세스를 위해 클론됩니다.
이 솔루션은 다음과 같은 사용 사례를 해결합니다.
-
Oracle Data Guard는 AWS의 모든 스토리지에 있는 기본 데이터베이스와 Amazon FSx ONTAP 스토리지의 대기 데이터베이스 사이에 있습니다.
-
보고, 개발, 테스트 등과 같은 활용 사례를 제공하기 위해 데이터 복제를 위해 닫혀 있는 동안 대기 데이터베이스의 클론을 생성합니다
대상
이 솔루션은 다음과 같은 사용자를 대상으로 합니다.
-
고가용성, 데이터 보호 및 재해 복구를 위해 AWS에서 Oracle Active Data Guard를 설정한 DBA
-
AWS 클라우드에서 Oracle Active Data Guard 구성에 관심이 있는 데이터베이스 솔루션 설계자
-
Oracle Data Guard를 지원하는 AWS FSx ONTAP 스토리지를 관리하는 스토리지 관리자
-
AWS FSx/EC2 환경에서 Oracle Data Guard를 실행하려는 애플리케이션 소유자.
솔루션 테스트 및 검증 환경
이 솔루션의 테스트 및 검증은 최종 구축 환경과 일치하지 않을 수 있는 AWS FSx ONTAP 및 EC2 연구소 환경에서 수행되었습니다. 자세한 내용은 섹션을 참조하십시오 구축 시 고려해야 할 주요 요소.
있습니다
하드웨어 및 소프트웨어 구성 요소
* 하드웨어 * |
||
FSX ONTAP 저장소 |
AWS에서 제공하는 현재 버전입니다 |
동일한 VPC 및 가용성 존에 FSx HA 클러스터 1개 |
컴퓨팅용 EC2 인스턴스 |
T2.xLarge/4vCPU/16G |
EC2 T2 xlarge EC2 인스턴스 3개, 하나는 운영 DB 서버로, 다른 하나는 대기 DB 서버로, 다른 하나는 클론 DB 서버로 사용됩니다 |
* 소프트웨어 * |
||
RedHat Linux |
RHEL-8.6.0_HVM-20220503-x86_64-2-Hourly2-GP2 |
테스트를 위해 RedHat 서브스크립션을 배포했습니다 |
Oracle Grid Infrastructure |
버전 19.18 |
RU 패치 p34762026_190000_Linux-x86-64.zip 를 적용했습니다 |
Oracle 데이터베이스 |
버전 19.18 |
RU 패치 p34765931_190000_Linux-x86-64.zip 를 적용했습니다 |
Oracle OPatch |
버전 12.2.0.1.36 |
최신 패치 p6880880_190000_Linux-x86-64.zip |
가상 NY to LA DR 설정을 사용한 Oracle Data Guard 구성
* 데이터베이스 * |
* DB_UNIQUE_NAME * |
* Oracle Net 서비스 이름 * |
기본 |
DB1_NY입니다 |
db1_NY.demo.netapp.com |
물리적 대기 |
DB1_LA를 클릭합니다 |
db1_LA.demo.netapp.com |
구축 시 고려해야 할 주요 요소
-
* Oracle 대기 데이터베이스 FlexClone 작동 방식 * AWS FSx ONTAP FlexClone은 쓰기 가능한 동일한 대기 데이터베이스 볼륨의 공유 복사본을 제공합니다. 볼륨의 복사본은 클론에서 새 쓰기가 시작될 때까지 원래 데이터 블록에 다시 연결되는 포인터입니다. 그런 다음 ONTAP은 새 쓰기에 대해 새 스토리지 블록을 할당합니다. 모든 읽기 IO는 활성 복제 상태의 원본 데이터 블록에 의해 처리됩니다. 따라서 클론은 스토리지 효율성이 매우 뛰어나 새로운 쓰기 입출력에 대해 최소한의 증분 새 스토리지 할당으로 다른 많은 활용 사례에서 사용할 수 있습니다. 따라서 Active Data Guard 스토리지 설치 공간을 크게 줄여 스토리지 비용을 크게 절감할 수 있습니다. 데이터베이스가 운영 스토리지에서 대기 FSx 스토리지로 전환될 때 Oracle 성능을 최고 수준으로 유지하기 위해 FlexClone 활동을 최소화하는 것이 좋습니다 NetApp.
-
* Oracle 소프트웨어 요구 사항. * 일반적으로 물리적 대기 데이터베이스는 패치 세트 예외(PSE), 중요 패치 업데이트(CPU), 및 패치 세트 업데이트(PSU)(의 My Oracle Support Note 1265700.1 에 설명된 대로 Oracle Data Guard Standby-First Patch Apply 프로세스가 진행 중인 경우 제외 "support.oracle.com"
-
대기 데이터베이스 디렉터리 구조 고려 사항. 가능한 경우 기본 및 대기 시스템의 데이터 파일, 로그 파일 및 제어 파일은 이름과 경로 이름이 같아야 하며 OFA(Optimal Flexible Architecture) 명명 규칙을 사용해야 합니다. 대기 데이터베이스의 보관 디렉터리도 크기 및 구조를 포함하여 사이트 간에 동일해야 합니다. 이 전략을 통해 백업, 스위치오버 및 페일오버 같은 다른 작업에서 동일한 단계를 실행할 수 있으므로 유지 관리의 복잡성이 줄어듭니다.
-
* 강제 로깅 모드. * 대기 데이터베이스로 전파할 수 없는 기본 데이터베이스에서 로깅되지 않은 직접 쓰기로부터 보호하려면 대기 생성을 위한 데이터 파일 백업을 수행하기 전에 기본 데이터베이스에서 강제 로깅을 켜십시오.
-
* 데이터베이스 스토리지 관리. * 운영을 단순화하기 위해 Oracle Data Guard 구성에서 Oracle 자동 스토리지 관리(Oracle ASM) 및 Oracle 관리 파일(OMF)을 설정할 때 기본 및 대기 데이터베이스에 대칭적으로 설정할 것을 권장합니다.
-
* EC2 컴퓨팅 인스턴스 * 이러한 테스트 및 검증에서는 AWS EC2 T2.xLarge 인스턴스를 Oracle 데이터베이스 컴퓨팅 인스턴스로 사용했습니다. NetApp은 운영 구축 시 데이터베이스 워크로드에 최적화되어 있는 M5 유형 EC2 인스턴스를 Oracle의 컴퓨팅 인스턴스로 사용할 것을 권장합니다. 실제 워크로드 요구 사항에 따라 vCPU 수와 RAM 양에 따라 EC2 인스턴스를 적절하게 사이징해야 합니다.
-
* FSx 스토리지 HA 클러스터 단일 또는 다중 영역 배포. * 이러한 테스트 및 검증에서는 단일 AWS 가용성 영역에 FSx HA 클러스터를 구축했습니다. 프로덕션 배포를 위해 FSx HA 쌍을 두 가지 가용성 영역에 배포하는 것이 좋습니다. FSx 클러스터는 스토리지 레벨 이중화를 제공하기 위해 액티브-패시브 파일 시스템 쌍으로 동기화되는 HA 쌍으로 프로비저닝됩니다. 다중 영역 구축을 통해 단일 AWS 영역에서 장애가 발생할 경우 고가용성을 더욱 강화할 수 있습니다.
-
* FSx 스토리지 클러스터 사이징. * Amazon FSx ONTAP 스토리지 파일 시스템은 최대 160,000 물리적 SSD IOPS, 최대 4GBps 처리량, 최대 192TiB 용량을 제공합니다. 그러나 구현 시 실제 요구 사항에 따라 프로비저닝된 IOPS, 처리량 및 스토리지 제한(최소 1,024GiB)을 기준으로 클러스터 크기를 조정할 수 있습니다. 애플리케이션 가용성에 영향을 주지 않고 용량을 즉각적으로 동적으로 조정할 수 있습니다.
솔루션 구축
Data Guard를 설정하기 위한 시작점으로 VPC 내의 AWS EC2 환경에 기본 Oracle 데이터베이스가 이미 구축되어 있다고 가정합니다. 기본 데이터베이스는 스토리지 관리를 위해 Oracle ASM을 사용하여 구축됩니다. Oracle 데이터 파일, 로그 파일 및 제어 파일 등을 위해 2개의 ASM 디스크 그룹 - + 데이터 및 + 로그가 생성됩니다 AWS에서 ASM을 사용한 Oracle 배포에 대한 자세한 내용은 다음 기술 보고서를 참조하십시오.
기본 Oracle 데이터베이스는 FSx ONTAP 또는 AWS EC2 에코시스템 내의 선택한 다른 스토리지에서 실행될 수 있습니다. 다음 섹션에서는 ASM 스토리지가 있는 기본 EC2 DB 인스턴스와 ASM 스토리지가 있는 대기 EC2 DB 인스턴스 간에 Oracle Data Guard를 설정하는 단계별 구축 절차를 제공합니다.
배포를 위한 사전 요구 사항
Details
배포에는 다음과 같은 사전 요구 사항이 필요합니다.
-
AWS 계정이 설정되었으며 AWS 계정 내에 필요한 VPC 및 네트워크 세그먼트가 생성되었습니다.
-
AWS EC2 콘솔에서 최소 3개의 EC2 Linux 인스턴스를 구축해야 합니다. 하나는 운영 Oracle DB 인스턴스로, 하나는 대기 Oracle DB 인스턴스로, 또 다른 하나는 보고, 개발, 테스트를 위한 클론 타겟 DB 인스턴스로 구축됩니다 환경 설정에 대한 자세한 내용은 이전 섹션의 아키텍처 다이어그램을 참조하십시오. 또한 AWS에 대해서도 검토합니다 "Linux 인스턴스에 대한 사용자 가이드" 를 참조하십시오.
-
AWS EC2 콘솔에서 Amazon FSx ONTAP 스토리지 HA 클러스터를 구축하여 Oracle 대기 데이터베이스를 저장하는 Oracle 볼륨을 호스팅합니다. FSx 스토리지 구축에 익숙하지 않은 경우 설명서에서 단계별 지침을 참조하십시오"FSx ONTAP 파일 시스템 생성".
-
2단계와 3단계는 라는 EC2 인스턴스를 만드는 다음 Terraform 자동화 툴킷을 사용하여 수행할 수 있습니다
ora_01
이라는 FSx 파일 시스템이 있습니다fsx_01
. 실행 전에 지침을 주의 깊게 검토하고 환경에 맞게 변수를 변경하십시오. 사용자 고유의 배포 요구 사항에 맞게 템플릿을 쉽게 수정할 수 있습니다.git clone https://github.com/NetApp-Automation/na_aws_fsx_ec2_deploy.git
Oracle 설치 파일을 스테이징할 충분한 공간을 확보하기 위해 EC2 인스턴스 루트 볼륨에 50G 이상을 할당했는지 확인합니다. |
Data Guard용 기본 데이터베이스를 준비합니다
Details
이 데모에서는 기본 EC2 DB 인스턴스에 db1이라는 기본 Oracle 데이터베이스를 설정했습니다. 독립 실행형 Restart 구성의 ASM 디스크 그룹 2개와 ASM 디스크 그룹 + 데이터 및 ASM 디스크 그룹 + 로그의 플래시 복구 영역에 있는 데이터 파일이 포함된 ASM 디스크 그룹을 사용했습니다. 다음은 Data Guard용 기본 데이터베이스를 설정하는 자세한 절차를 보여 줍니다. 모든 단계는 데이터베이스 소유자인 Oracle 사용자로 실행해야 합니다.
-
운영 EC2 DB 인스턴스 IP-172-30-15-45의 기본 데이터베이스 db1 구성 ASM 디스크 그룹은 EC2 에코시스템 내 모든 유형의 스토리지에 있을 수 있습니다.
[oracle@ip-172-30-15-45 ~]$ cat /etc/oratab # This file is used by ORACLE utilities. It is created by root.sh # and updated by either Database Configuration Assistant while creating # a database or ASM Configuration Assistant while creating ASM instance. # A colon, ':', is used as the field terminator. A new line terminates # the entry. Lines beginning with a pound sign, '#', are comments. # # Entries are of the form: # $ORACLE_SID:$ORACLE_HOME:<N|Y>: # # The first and second fields are the system identifier and home # directory of the database respectively. The third field indicates # to the dbstart utility that the database should , "Y", or should not, # "N", be brought up at system boot time. # # Multiple entries with the same $ORACLE_SID are not allowed. # # +ASM:/u01/app/oracle/product/19.0.0/grid:N db1:/u01/app/oracle/product/19.0.0/db1:N [oracle@ip-172-30-15-45 ~]$ /u01/app/oracle/product/19.0.0/grid/bin/crsctl stat res -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.DATA.dg ONLINE ONLINE ip-172-30-15-45 STABLE ora.LISTENER.lsnr ONLINE ONLINE ip-172-30-15-45 STABLE ora.LOGS.dg ONLINE ONLINE ip-172-30-15-45 STABLE ora.asm ONLINE ONLINE ip-172-30-15-45 Started,STABLE ora.ons OFFLINE OFFLINE ip-172-30-15-45 STABLE -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.cssd 1 ONLINE ONLINE ip-172-30-15-45 STABLE ora.db1.db 1 ONLINE ONLINE ip-172-30-15-45 Open,HOME=/u01/app/o racle/product/19.0.0 /db1,STABLE ora.diskmon 1 OFFLINE OFFLINE STABLE ora.driver.afd 1 ONLINE ONLINE ip-172-30-15-45 STABLE ora.evmd 1 ONLINE ONLINE ip-172-30-15-45 STABLE --------------------------------------------------------------------------------
-
sqlplus에서 기본 로그온을 활성화합니다.
alter database force logging;
-
sqlplus에서 primary에서 플래시백을 활성화합니다. 플래시백은 장애 조치 후 기본 데이터베이스를 대기 데이터베이스로 쉽게 복원할 수 있도록 합니다.
alter database flashback on;
-
Oracle 암호 파일을 사용하여 redo 전송 인증 구성 - 설정하지 않은 경우 orapwd 유틸리티를 사용하여 기본 데이터베이스에 pwd 파일을 생성하고 대기 데이터베이스 $oracle_home/dbs 디렉토리로 복사합니다.
-
현재 온라인 로그 파일과 크기가 같은 기본 DB에 대기 redo 로그를 생성합니다. 로그 그룹은 하나 이상의 온라인 로그 파일 그룹입니다. 그러면 기본 데이터베이스가 신속하게 대기 역할로 전환되고 필요한 경우 다시 실행 데이터 수신을 시작할 수 있습니다.
alter database add standby logfile thread 1 size 200M;
Validate after standby logs addition: SQL> select group#, type, member from v$logfile; GROUP# TYPE MEMBER ---------- ------- ------------------------------------------------------------ 3 ONLINE +DATA/DB1/ONLINELOG/group_3.264.1145821513 2 ONLINE +DATA/DB1/ONLINELOG/group_2.263.1145821513 1 ONLINE +DATA/DB1/ONLINELOG/group_1.262.1145821513 4 STANDBY +DATA/DB1/ONLINELOG/group_4.286.1146082751 4 STANDBY +LOGS/DB1/ONLINELOG/group_4.258.1146082753 5 STANDBY +DATA/DB1/ONLINELOG/group_5.287.1146082819 5 STANDBY +LOGS/DB1/ONLINELOG/group_5.260.1146082821 6 STANDBY +DATA/DB1/ONLINELOG/group_6.288.1146082825 6 STANDBY +LOGS/DB1/ONLINELOG/group_6.261.1146082827 7 STANDBY +DATA/DB1/ONLINELOG/group_7.289.1146082835 7 STANDBY +LOGS/DB1/ONLINELOG/group_7.262.1146082835 11 rows selected.
-
sqlplus 에서 편집할 spfile 에서 pfile 을 만듭니다.
create pfile='/home/oracle/initdb1.ora' from spfile;
-
pfile을 수정하고 다음 매개 변수를 추가합니다.
DB_NAME=db1 DB_UNIQUE_NAME=db1_NY LOG_ARCHIVE_CONFIG='DG_CONFIG=(db1_NY,db1_LA)' LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=db1_NY' LOG_ARCHIVE_DEST_2='SERVICE=db1_LA ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=db1_LA' REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE FAL_SERVER=db1_LA STANDBY_FILE_MANAGEMENT=AUTO
-
sqlplus에서 /home/oracle 디렉토리의 수정된 pfile에서 asm+ data 디렉토리에 spfile을 생성합니다.
create spfile='+DATA' from pfile='/home/oracle/initdb1.ora';
-
data disk group(필요한 경우 asmcmd 유틸리티 사용)에서 새로 생성된 spfile을 찾습니다. srvctl을 사용하여 아래 그림과 같이 새 spfile에서 데이터베이스를 시작하도록 그리드를 수정합니다.
[oracle@ip-172-30-15-45 db1]$ srvctl config database -d db1 Database unique name: db1 Database name: db1 Oracle home: /u01/app/oracle/product/19.0.0/db1 Oracle user: oracle Spfile: +DATA/DB1/PARAMETERFILE/spfile.270.1145822903 Password file: Domain: demo.netapp.com Start options: open Stop options: immediate Database role: PRIMARY Management policy: AUTOMATIC Disk Groups: DATA Services: OSDBA group: OSOPER group: Database instance: db1 [oracle@ip-172-30-15-45 db1]$ srvctl modify database -d db1 -spfile +DATA/DB1/PARAMETERFILE/spfiledb1.ora [oracle@ip-172-30-15-45 db1]$ srvctl config database -d db1 Database unique name: db1 Database name: db1 Oracle home: /u01/app/oracle/product/19.0.0/db1 Oracle user: oracle Spfile: +DATA/DB1/PARAMETERFILE/spfiledb1.ora Password file: Domain: demo.netapp.com Start options: open Stop options: immediate Database role: PRIMARY Management policy: AUTOMATIC Disk Groups: DATA Services: OSDBA group: OSOPER group: Database instance: db1
-
이름 확인을 위해 db_unique_name을 추가하려면 tnsnames.ora를 수정하십시오.
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/19.0.0/db1/network/admin/tnsnames.ora # Generated by Oracle configuration tools. db1_NY = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ip-172-30-15-45.ec2.internal)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = db1) ) ) db1_LA = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ip-172-30-15-67.ec2.internal)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = db1) ) ) LISTENER_DB1 = (ADDRESS = (PROTOCOL = TCP)(HOST = ip-172-30-15-45.ec2.internal)(PORT = 1521))
-
기본 데이터베이스에 대한 데이터 가드 서비스 이름 db1_NY_DGMGRL.demo.netapp 을 listener.ora 파일에 추가합니다.
#Backup file is /u01/app/oracle/crsdata/ip-172-30-15-45/output/listener.ora.bak.ip-172-30-15-45.oracle line added by Agent # listener.ora Network Configuration File: /u01/app/oracle/product/19.0.0/grid/network/admin/listener.ora # Generated by Oracle configuration tools. LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ip-172-30-15-45.ec2.internal)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = db1_NY_DGMGRL.demo.netapp.com) (ORACLE_HOME = /u01/app/oracle/product/19.0.0/db1) (SID_NAME = db1) ) ) ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent VALID_NODE_CHECKING_REGISTRATION_LISTENER=ON # line added by Agent
-
srvctl을 사용하여 데이터베이스를 종료하고 다시 시작하고 데이터 가드 매개변수가 현재 활성 상태인지 확인합니다.
srvctl stop database -d db1
srvctl start database -d db1
이것으로 Data Guard에 대한 기본 데이터베이스 설정이 완료되었습니다.
대기 데이터베이스를 준비하고 Data Guard를 활성화합니다
Details
Oracle Data Guard를 사용하려면 운영 EC2 DB 인스턴스와 일치하도록 대기 EC2 DB 인스턴스의 패치 세트를 포함한 Oracle 소프트웨어 스택과 OS 커널 구성이 필요합니다. 손쉬운 관리와 간소화를 위해 대기 EC2 DB 인스턴스 데이터베이스 스토리지 구성은 ASM 디스크 그룹의 이름, 수 및 크기 등 기본 EC2 DB 인스턴스와 이상적으로 일치해야 합니다. 다음은 Data Guard용 Standby EC2 DB 인스턴스를 설정하는 세부 절차입니다. 모든 명령은 Oracle 소유자 사용자 ID로 실행해야 합니다.
-
먼저 운영 EC2 인스턴스에서 운영 데이터베이스의 구성을 검토합니다. 이 데모에서는 독립 실행형 재시작 구성에서 두 개의 ASM 디스크 그룹 + 데이터 및 + 로그를 사용하여 운영 EC2 DB 인스턴스에 db1이라는 기본 Oracle 데이터베이스를 설정했습니다. 기본 ASM 디스크 그룹은 EC2 에코시스템 내의 모든 유형의 스토리지에 있을 수 있습니다.
-
문서의 절차를 따릅니다 "TR-4965: iSCSI/ASM을 사용하는 AWS FSx/EC2에서 Oracle 데이터베이스 구축 및 보호" 기본 데이터베이스와 일치하도록 대기 EC2 DB 인스턴스에 그리드 및 Oracle을 설치하고 구성합니다. 데이터베이스 스토리지는 스토리지 용량이 운영 EC2 DB 인스턴스와 동일한 FSx ONTAP의 대기 EC2 DB 인스턴스에 프로비저닝하고 할당해야 합니다.
의 10단계에서 멈춥니다 Oracle database installation
섹션을 참조하십시오. 대기 데이터베이스는 dbca 데이터베이스 복제 기능을 사용하여 기본 데이터베이스에서 인스턴스화됩니다. -
Oracle 소프트웨어가 설치 및 구성되면 스탠바이 $ORACLE_HOME DBS 디렉토리에서 기본 데이터베이스에서 Oracle 암호를 복사합니다.
scp oracle@172.30.15.45:/u01/app/oracle/product/19.0.0/db1/dbs/orapwdb1 .
-
다음 항목을 사용하여 tnsnames.ora 파일을 만듭니다.
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/19.0.0/db1/network/admin/tnsnames.ora # Generated by Oracle configuration tools. db1_NY = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ip-172-30-15-45.ec2.internal)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = db1) ) ) db1_LA = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ip-172-30-15-67.ec2.internal)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = db1) ) )
-
listener.ora 파일에 DB 데이터 가드 서비스 이름을 추가합니다.
#Backup file is /u01/app/oracle/crsdata/ip-172-30-15-67/output/listener.ora.bak.ip-172-30-15-67.oracle line added by Agent # listener.ora Network Configuration File: /u01/app/oracle/product/19.0.0/grid/network/admin/listener.ora # Generated by Oracle configuration tools. LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ip-172-30-15-67.ec2.internal)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = db1_LA_DGMGRL.demo.netapp.com) (ORACLE_HOME = /u01/app/oracle/product/19.0.0/db1) (SID_NAME = db1) ) ) ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent VALID_NODE_CHECKING_REGISTRATION_LISTENER=ON # line added by Agent
-
Oracle 홈 및 경로를 설정합니다.
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/db1
export PATH=$PATH:$ORACLE_HOME/bin
-
dbca를 사용하여 운영 데이터베이스 db1에서 대기 데이터베이스를 인스턴스화합니다.
[oracle@ip-172-30-15-67 bin]$ dbca -silent -createDuplicateDB -gdbName db1 -primaryDBConnectionString ip-172-30-15-45.ec2.internal:1521/db1_NY.demo.netapp.com -sid db1 -initParams fal_server=db1_NY -createAsStandby -dbUniqueName db1_LA Enter SYS user password: Prepare for db operation 22% complete Listener config step 44% complete Auxiliary instance creation 67% complete RMAN duplicate 89% complete Post duplicate database operations 100% complete Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/db1_LA/db1_LA.log" for further details.
-
중복된 대기 데이터베이스를 검증합니다. 새로 복제된 대기 데이터베이스는 처음에 읽기 전용 모드로 열립니다.
[oracle@ip-172-30-15-67 bin]$ export ORACLE_SID=db1 [oracle@ip-172-30-15-67 bin]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Wed Aug 30 18:25:46 2023 Version 19.18.0.0.0 Copyright (c) 1982, 2022, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.18.0.0.0 SQL> select name, open_mode from v$database; NAME OPEN_MODE --------- -------------------- DB1 READ ONLY SQL> show parameter name NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ cdb_cluster_name string cell_offloadgroup_name string db_file_name_convert string db_name string db1 db_unique_name string db1_LA global_names boolean FALSE instance_name string db1 lock_name_space string log_file_name_convert string pdb_file_name_convert string processor_group_name string NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ service_names string db1_LA.demo.netapp.com SQL> SQL> show parameter log_archive_config NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_config string DG_CONFIG=(db1_NY,db1_LA) SQL> show parameter fal_server NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ fal_server string db1_NY SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- +DATA/DB1_LA/DATAFILE/system.261.1146248215 +DATA/DB1_LA/DATAFILE/sysaux.262.1146248231 +DATA/DB1_LA/DATAFILE/undotbs1.263.1146248247 +DATA/DB1_LA/03C5C01A66EE9797E0632D0F1EAC5F59/DATAFILE/system.264.1146248253 +DATA/DB1_LA/03C5C01A66EE9797E0632D0F1EAC5F59/DATAFILE/sysaux.265.1146248261 +DATA/DB1_LA/DATAFILE/users.266.1146248267 +DATA/DB1_LA/03C5C01A66EE9797E0632D0F1EAC5F59/DATAFILE/undotbs1.267.1146248269 +DATA/DB1_LA/03C5EFD07C41A1FAE0632D0F1EAC9BD8/DATAFILE/system.268.1146248271 +DATA/DB1_LA/03C5EFD07C41A1FAE0632D0F1EAC9BD8/DATAFILE/sysaux.269.1146248279 +DATA/DB1_LA/03C5EFD07C41A1FAE0632D0F1EAC9BD8/DATAFILE/undotbs1.270.1146248285 +DATA/DB1_LA/03C5EFD07C41A1FAE0632D0F1EAC9BD8/DATAFILE/users.271.1146248293 NAME -------------------------------------------------------------------------------- +DATA/DB1_LA/03C5F0DDF35CA2B6E0632D0F1EAC8B6B/DATAFILE/system.272.1146248295 +DATA/DB1_LA/03C5F0DDF35CA2B6E0632D0F1EAC8B6B/DATAFILE/sysaux.273.1146248301 +DATA/DB1_LA/03C5F0DDF35CA2B6E0632D0F1EAC8B6B/DATAFILE/undotbs1.274.1146248309 +DATA/DB1_LA/03C5F0DDF35CA2B6E0632D0F1EAC8B6B/DATAFILE/users.275.1146248315 +DATA/DB1_LA/03C5F1C9B142A2F1E0632D0F1EACF21A/DATAFILE/system.276.1146248317 +DATA/DB1_LA/03C5F1C9B142A2F1E0632D0F1EACF21A/DATAFILE/sysaux.277.1146248323 +DATA/DB1_LA/03C5F1C9B142A2F1E0632D0F1EACF21A/DATAFILE/undotbs1.278.1146248331 +DATA/DB1_LA/03C5F1C9B142A2F1E0632D0F1EACF21A/DATAFILE/users.279.1146248337 19 rows selected. SQL> select name from v$controlfile; NAME -------------------------------------------------------------------------------- +DATA/DB1_LA/CONTROLFILE/current.260.1146248209 +LOGS/DB1_LA/CONTROLFILE/current.257.1146248209 SQL> select name from v$tempfile; NAME -------------------------------------------------------------------------------- +DATA/DB1_LA/TEMPFILE/temp.287.1146248371 +DATA/DB1_LA/03C5C01A66EE9797E0632D0F1EAC5F59/TEMPFILE/temp.288.1146248375 +DATA/DB1_LA/03C5EFD07C41A1FAE0632D0F1EAC9BD8/TEMPFILE/temp.290.1146248463 +DATA/DB1_LA/03C5F0DDF35CA2B6E0632D0F1EAC8B6B/TEMPFILE/temp.291.1146248463 +DATA/DB1_LA/03C5F1C9B142A2F1E0632D0F1EACF21A/TEMPFILE/temp.292.1146248463 SQL> select group#, type, member from v$logfile order by 2, 1; GROUP# TYPE MEMBER ---------- ------- ------------------------------------------------------------ 1 ONLINE +LOGS/DB1_LA/ONLINELOG/group_1.259.1146248349 1 ONLINE +DATA/DB1_LA/ONLINELOG/group_1.280.1146248347 2 ONLINE +DATA/DB1_LA/ONLINELOG/group_2.281.1146248351 2 ONLINE +LOGS/DB1_LA/ONLINELOG/group_2.258.1146248353 3 ONLINE +DATA/DB1_LA/ONLINELOG/group_3.282.1146248355 3 ONLINE +LOGS/DB1_LA/ONLINELOG/group_3.260.1146248355 4 STANDBY +DATA/DB1_LA/ONLINELOG/group_4.283.1146248357 4 STANDBY +LOGS/DB1_LA/ONLINELOG/group_4.261.1146248359 5 STANDBY +DATA/DB1_LA/ONLINELOG/group_5.284.1146248361 5 STANDBY +LOGS/DB1_LA/ONLINELOG/group_5.262.1146248363 6 STANDBY +LOGS/DB1_LA/ONLINELOG/group_6.263.1146248365 6 STANDBY +DATA/DB1_LA/ONLINELOG/group_6.285.1146248365 7 STANDBY +LOGS/DB1_LA/ONLINELOG/group_7.264.1146248369 7 STANDBY +DATA/DB1_LA/ONLINELOG/group_7.286.1146248367 14 rows selected. SQL> select name, open_mode from v$database; NAME OPEN_MODE --------- -------------------- DB1 READ ONLY
-
에서 대기 데이터베이스를 다시 시작합니다
mount
대기 데이터베이스 관리 복구를 활성화하려면 다음 명령을 준비하고 실행합니다.alter database recover managed standby database disconnect from session;
SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount; ORACLE instance started. Total System Global Area 8053062944 bytes Fixed Size 9182496 bytes Variable Size 1291845632 bytes Database Buffers 6744440832 bytes Redo Buffers 7593984 bytes Database mounted. SQL> alter database recover managed standby database disconnect from session; Database altered.
-
대기 데이터베이스 복구 상태를 확인합니다. 를 확인합니다
recovery logmerger
인치APPLYING_LOG
조치.SQL> SELECT ROLE, THREAD#, SEQUENCE#, ACTION FROM V$DATAGUARD_PROCESS; ROLE THREAD# SEQUENCE# ACTION ------------------------ ---------- ---------- ------------ recovery apply slave 0 0 IDLE recovery apply slave 0 0 IDLE recovery apply slave 0 0 IDLE recovery apply slave 0 0 IDLE recovery logmerger 1 30 APPLYING_LOG RFS ping 1 30 IDLE RFS async 1 30 IDLE archive redo 0 0 IDLE archive redo 0 0 IDLE archive redo 0 0 IDLE gap manager 0 0 IDLE ROLE THREAD# SEQUENCE# ACTION ------------------------ ---------- ---------- ------------ managed recovery 0 0 IDLE redo transport monitor 0 0 IDLE log writer 0 0 IDLE archive local 0 0 IDLE redo transport timer 0 0 IDLE 16 rows selected. SQL>
이렇게 하면 관리되는 대기 복구가 활성화된 상태에서 db1에 대한 Data Guard 보호 설정이 기본에서 스탠바이로 완료됩니다.
Data Guard Broker를 설정합니다
Details
Oracle Data Guard Broker는 Oracle Data Guard 구성의 생성, 유지 관리 및 모니터링을 자동화하고 중앙 집중화하는 분산 관리 프레임워크입니다. 다음 섹션에서는 Data Guard Broker를 설정하여 Data Guard 환경을 관리하는 방법을 보여 줍니다.
-
sqlplus 를 통해 다음 명령을 사용하여 기본 데이터베이스와 대기 데이터베이스 모두에서 데이터 가드 브로커를 시작합니다.
alter system set dg_broker_start=true scope=both;
-
기본 데이터베이스에서 Data Guard Borker에 SYSDBA로 연결합니다.
[oracle@ip-172-30-15-45 db1]$ dgmgrl sys@db1_NY DGMGRL for Linux: Release 19.0.0.0.0 - Production on Wed Aug 30 19:34:14 2023 Version 19.18.0.0.0 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. Welcome to DGMGRL, type "help" for information. Password: Connected to "db1_NY" Connected as SYSDBA.
-
Data Guard Broker 구성을 만들고 활성화합니다.
DGMGRL> create configuration dg_config as primary database is db1_NY connect identifier is db1_NY; Configuration "dg_config" created with primary database "db1_ny" DGMGRL> add database db1_LA as connect identifier is db1_LA; Database "db1_la" added DGMGRL> enable configuration; Enabled. DGMGRL> show configuration; Configuration - dg_config Protection Mode: MaxPerformance Members: db1_ny - Primary database db1_la - Physical standby database Fast-Start Failover: Disabled Configuration Status: SUCCESS (status updated 28 seconds ago)
-
Data Guard Broker 관리 프레임워크 내에서 데이터베이스 상태를 검증합니다.
DGMGRL> show database db1_ny; Database - db1_ny Role: PRIMARY Intended State: TRANSPORT-ON Instance(s): db1 Database Status: SUCCESS DGMGRL> show database db1_la; Database - db1_la Role: PHYSICAL STANDBY Intended State: APPLY-ON Transport Lag: 0 seconds (computed 1 second ago) Apply Lag: 0 seconds (computed 1 second ago) Average Apply Rate: 2.00 KByte/s Real Time Query: OFF Instance(s): db1 Database Status: SUCCESS DGMGRL>
오류가 발생할 경우 Data Guard Broker를 사용하여 기본 데이터베이스를 즉시 스탠바이로 페일오버할 수 있습니다.
다른 활용 사례에 대한 복제 스탠바이 데이터베이스
Details
Data Guard의 AWS FSx ONTAP에서 대기 데이터베이스를 스테이징할 때의 주요 이점은 최소한의 추가 스토리지 투자로 다른 많은 사용 사례를 지원할 수 있도록 FlexCloned를 사용할 수 있다는 것입니다. 다음 섹션에서는 개발, 테스트, 보고서 등과 같은 다른 목적으로 FSx ONTAP에서 마운트된 복구 대기 데이터베이스 볼륨을 스냅샷하고 복제하는 방법을 보여 줍니다. NetApp SnapCenter 도구를 사용합니다.
다음은 SnapCenter를 사용하여 Data Guard의 관리되는 물리적 대기 데이터베이스에서 읽기/쓰기 데이터베이스를 복제하는 고급 절차입니다. SnapCenter 설정 및 구성 방법에 대한 자세한 내용은 을 참조하십시오 "SnapCenter을 사용한 하이브리드 클라우드 데이터베이스 솔루션" Oracle 섹션 재지정.
-
먼저 테스트 테이블을 만들고 기본 데이터베이스의 테스트 테이블에 행을 삽입합니다. 그런 다음 트랜잭션이 대기 상태로 전환되는지 확인하고 마지막으로 클론을 생성합니다.
[oracle@ip-172-30-15-45 db1]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Thu Aug 31 16:35:53 2023 Version 19.18.0.0.0 Copyright (c) 1982, 2022, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.18.0.0.0 SQL> alter session set container=db1_pdb1; Session altered. SQL> create table test( 2 id integer, 3 dt timestamp, 4 event varchar(100)); Table created. SQL> insert into test values(1, sysdate, 'a test transaction on primary database db1 and ec2 db host: ip-172-30-15-45.ec2.internal'); 1 row created. SQL> commit; Commit complete. SQL> select * from test; ID ---------- DT --------------------------------------------------------------------------- EVENT -------------------------------------------------------------------------------- 1 31-AUG-23 04.49.29.000000 PM a test transaction on primary database db1 and ec2 db host: ip-172-30-15-45.ec2. internal SQL> select instance_name, host_name from v$instance; INSTANCE_NAME ---------------- HOST_NAME ---------------------------------------------------------------- db1 ip-172-30-15-45.ec2.internal
-
FSx 스토리지 클러스터를 에 추가합니다
Storage Systems
SnapCenter에서 FSx 클러스터 관리 IP 및 fsxadmin 자격 증명을 사용합니다. -
AWS EC2 - 사용자를 에 추가합니다
Credential
인치Settings
. -
대기 EC2 DB 인스턴스를 추가하고 EC2 DB 인스턴스를 에 복제합니다
Hosts
.클론 EC2 DB 인스턴스에는 유사한 Oracle 소프트웨어 스택이 설치 및 구성되어 있어야 합니다. 이 테스트 사례에서는 그리드 인프라스트럭처와 Oracle 19C가 설치 및 구성되었지만 데이터베이스가 생성되지 않았습니다. -
오프라인/전체 데이터베이스 백업에 맞게 조정된 백업 정책을 생성합니다.
-
에서 대기 데이터베이스를 보호하기 위한 백업 정책을 적용합니다
Resources
탭을 클릭합니다. -
데이터베이스 이름을 클릭하여 데이터베이스 백업 페이지를 엽니다. 데이터베이스 클론에 사용할 백업을 선택하고 을 클릭합니다
Clone
버튼을 클릭하여 클론 워크플로우를 시작합니다. -
를 선택합니다
Complete Database Clone
클론 인스턴스 SID의 이름을 지정합니다. -
클론 생성 데이터베이스를 대기 DB에서 호스팅하는 클론 호스트를 선택합니다. 데이터 파일, 제어 파일 및 재실행 로그에 대한 기본값을 적용합니다. 대기 데이터베이스의 디스크 그룹에 해당하는 클론 호스트에 ASM 디스크 그룹 두 개가 생성됩니다.
-
OS 기반 인증에 데이터베이스 자격 증명이 필요하지 않습니다. Oracle 홈 설정과 클론 EC2 데이터베이스 인스턴스에 구성된 설정을 일치시킵니다.
-
필요한 경우 클론 데이터베이스 매개 변수를 변경하고 필요한 경우 은폐 전에 실행할 스크립트를 지정합니다.
-
SQL을 입력하여 클론 후에 실행합니다. 데모에서는 개발/테스트/보고서 데이터베이스에 대한 데이터베이스 아카이브 모드를 해제하는 명령을 실행했습니다.
-
원하는 경우 이메일 알림을 구성합니다.
-
요약을 검토하고 을 클릭합니다
Finish
를 눌러 클론을 시작합니다. -
에서 클론 작업을 모니터링합니다
Monitor
탭을 클릭합니다. 데이터베이스 볼륨 크기로 약 300GB의 데이터베이스를 복제하는 데 8분 정도 걸렸습니다. -
에 즉시 등록되는 SnapCenter에서 클론 데이터베이스를 검증합니다
Resources
탭을 클릭합니다. -
클론 EC2 인스턴스에서 클론 데이터베이스를 쿼리합니다. 운영 데이터베이스에서 발생한 테스트 트랜잭션이 복제 데이터베이스를 통과했음을 확인했습니다.
[oracle@ip-172-30-15-126 ~]$ export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dev [oracle@ip-172-30-15-126 ~]$ export ORACLE_SID=db1dev [oracle@ip-172-30-15-126 ~]$ export PATH=$PATH:$ORACLE_HOME/bin [oracle@ip-172-30-15-126 ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Wed Sep 6 16:41:41 2023 Version 19.18.0.0.0 Copyright (c) 1982, 2022, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.18.0.0.0 SQL> select name, open_mode, log_mode from v$database; NAME OPEN_MODE LOG_MODE --------- -------------------- ------------ DB1DEV READ WRITE NOARCHIVELOG SQL> select instance_name, host_name from v$instance; INSTANCE_NAME ---------------- HOST_NAME ---------------------------------------------------------------- db1dev ip-172-30-15-126.ec2.internal SQL> alter session set container=db1_pdb1; Session altered. SQL> select * from test; ID ---------- DT --------------------------------------------------------------------------- EVENT -------------------------------------------------------------------------------- 1 31-AUG-23 04.49.29.000000 PM a test transaction on primary database db1 and ec2 db host: ip-172-30-15-45.ec2. internal SQL>
이렇게 하면 개발, 테스트, 보고 또는 기타 사용 사례를 위해 FSx 스토리지의 Data Guard에 있는 대기 데이터베이스에서 새 Oracle 데이터베이스의 클론 및 검증이 완료됩니다. 여러 Oracle 데이터베이스를 Data Guard의 동일한 대기 데이터베이스에서 복제할 수 있습니다.
추가 정보를 찾을 수 있는 위치
이 문서에 설명된 정보에 대한 자세한 내용은 다음 문서 및/또는 웹 사이트를 참조하십시오.
-
Data Guard 개념 및 관리
-
WP-7357: EC2에서 Oracle 데이터베이스 구축 및 FSx 모범 사례
-
Amazon FSx ONTAP을 소개합니다
-
Amazon EC2