TR-4981: Amazon FSx ONTAP 통한 Oracle Active Data Guard 비용 절감
Allen Cao, Niyaz Mohamed, NetApp
이 솔루션은 AWS FSx ONTAP 사용하여 Oracle Data Guard를 대기 사이트 Oracle 데이터베이스 스토리지로 구성하여 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 설정에서는 여러 개의 대기 데이터베이스가 기본 데이터베이스로부터 데이터 복제를 수신할 수 있습니다. 그러나 추가된 스탠바이 데이터베이스마다 Active 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 스토리지에 물리적인 스탠바이 데이터베이스를 배치하는 방법을 보여줍니다. 대기 데이터베이스는 스냅샷을 통해 백업되고 원하는 사용 사례에 대한 읽기/쓰기 액세스를 위해 복제됩니다.
이 솔루션은 다음과 같은 사용 사례를 해결합니다.
-
AWS의 모든 스토리지에 있는 기본 데이터베이스와 Amazon FSx ONTAP 스토리지에 있는 대기 데이터베이스 간의 Oracle Data Guard.
-
보고, 개발, 테스트 등의 사용 사례에 맞게 데이터 복제를 위해 닫혀 있는 동안 대기 데이터베이스를 복제합니다.
대상
이 솔루션은 다음과 같은 사람들을 위해 만들어졌습니다.
-
고가용성, 데이터 보호 및 재해 복구를 위해 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 클러스터 |
컴퓨팅을 위한 EC2 인스턴스 |
t2.xlarge/4vCPU/16G |
3개의 EC2 T2 xlarge EC2 인스턴스(하나는 기본 DB 서버, 하나는 대기 DB 서버, 세 번째는 복제 DB 서버) |
소프트웨어 |
||
레드햇 리눅스 |
RHEL-8.6.0_HVM-20220503-x86_64-2-시간별2-GP2 |
테스트를 위해 RedHat 구독을 배포했습니다. |
오라클 그리드 인프라 |
버전 19.18 |
RU 패치 p34762026_190000_Linux-x86-64.zip이 적용되었습니다. |
오라클 데이터베이스 |
버전 19.18 |
RU 패치 p34765931_190000_Linux-x86-64.zip을 적용했습니다. |
오라클 OPatch |
버전 12.2.0.1.36 |
최신 패치 p6880880_190000_Linux-x86-64.zip |
가상 NY-LA DR 설정을 사용한 Oracle Data Guard 구성
데이터 베이스 |
DB_고유_이름 |
Oracle Net 서비스 이름 |
주요한 |
db1_NY |
db1_NY.demo.netapp.com |
물리적 대기 |
db1_LA |
db1_LA.demo.netapp.com |
배포 고려사항의 핵심 요소
-
Oracle Standby Database FlexClone 작동 방식 AWS FSx ONTAP FlexClone 쓰기 가능한 동일한 대기 데이터베이스 볼륨의 공유 복사본을 제공합니다. 볼륨의 복사본은 실제로 복제본에 대한 새로운 쓰기가 시작될 때까지 원본 데이터 블록에 다시 연결되는 포인터입니다. 그러면 ONTAP 새로운 쓰기 작업을 위해 새로운 저장 블록을 할당합니다. 모든 읽기 IO는 활성 복제 하에서 원본 데이터 블록에 의해 처리됩니다. 따라서 복제본은 새로운 쓰기 IO에 대한 최소한의 증분적 새 스토리지 할당으로 다른 많은 사용 사례에 사용할 수 있을 만큼 스토리지 효율성이 매우 높습니다. 이를 통해 Active Data Guard 스토리지 공간을 대폭 줄여 스토리지 비용을 엄청나게 절감할 수 있습니다. NetApp Oracle 성능을 높은 수준으로 유지하기 위해 기본 스토리지에서 대기 FSx 스토리지로 데이터베이스를 전환하는 경우 FlexClone 활동을 최소화할 것을 권장합니다.
-
Oracle 소프트웨어 요구 사항. 일반적으로 물리적 대기 데이터베이스는 패치 세트 예외(PSE), 중요 패치 업데이트(CPU), 패치 세트 업데이트(PSU)를 포함하여 기본 데이터베이스와 동일한 데이터베이스 홈 버전을 가져야 합니다. 단, Oracle Data Guard 대기-첫 번째 패치 적용 프로세스가 진행 중일 때는 예외입니다(My Oracle Support 참고 1265700.1 참조)."support.oracle.com"
-
대기 데이터베이스 디렉토리 구조 고려 사항. 가능하다면 기본 시스템과 대기 시스템의 데이터 파일, 로그 파일 및 제어 파일은 동일한 이름과 경로 이름을 가져야 하며 OFA(Optimal Flexible Architecture) 명명 규칙을 사용해야 합니다. 대기 데이터베이스의 보관 디렉토리도 크기와 구조를 포함하여 사이트 간에 동일해야 합니다. 이 전략을 사용하면 백업, 전환, 장애 조치와 같은 다른 작업에서 동일한 단계 집합을 실행하여 유지 관리 복잡성을 줄일 수 있습니다.
-
강제 로깅 모드. 스탠바이 데이터베이스로 전파될 수 없는 기본 데이터베이스의 기록되지 않은 직접 쓰기를 방지하려면 스탠바이 생성을 위한 데이터 파일 백업을 수행하기 전에 기본 데이터베이스에서 강제 로깅을 켜세요.
-
데이터베이스 저장 관리. 운영상의 단순성을 위해 Oracle에서는 Oracle Data Guard 구성에서 Oracle Automatic Storage Management(Oracle ASM) 및 Oracle Managed Files(OMF)를 설정할 때 기본 데이터베이스와 대기 데이터베이스에 대칭적으로 설정할 것을 권장합니다.
-
EC2 컴퓨팅 인스턴스. 이러한 테스트와 검증에서는 Oracle 데이터베이스 컴퓨팅 인스턴스로 AWS EC2 t2.xlarge 인스턴스를 사용했습니다. NetApp 프로덕션 배포 시 Oracle의 컴퓨팅 인스턴스로 M5 유형 EC2 인스턴스를 사용할 것을 권장합니다. 이는 데이터베이스 작업 부하에 최적화되어 있기 때문입니다. 실제 작업 부하 요구 사항에 따라 vCPU 수와 RAM 양에 맞게 EC2 인스턴스 크기를 적절히 조정해야 합니다.
-
FSx 스토리지 HA 클러스터 단일 또는 다중 영역 배포. 이러한 테스트와 검증을 통해 단일 AWS 가용성 영역에 FSx HA 클러스터를 배포했습니다. 프로덕션 배포의 경우 NetApp 두 개의 서로 다른 가용성 영역에 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 데이터 파일, 로그 파일, 제어 파일 등을 위해 두 개의 ASM 디스크 그룹(+DATA 및 +LOGS)이 생성됩니다. ASM을 사용하여 AWS에 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단계는 다음 Terraform 자동화 툴킷을 사용하여 수행할 수 있습니다. 이 툴킷은 다음과 같은 EC2 인스턴스를 생성합니다.
ora_01
그리고 FSx 파일 시스템이라는 이름fsx_01
. 지침을 주의 깊게 검토하고 실행하기 전에 환경에 맞게 변수를 변경하세요. 이 템플릿은 사용자의 배포 요구 사항에 맞게 쉽게 수정할 수 있습니다.git clone https://github.com/NetApp-Automation/na_aws_fsx_ec2_deploy.git
|
Oracle 설치 파일을 준비할 충분한 공간을 확보하려면 EC2 인스턴스 루트 볼륨에 최소 50G를 할당했는지 확인하세요. |
Data Guard를 위한 기본 데이터베이스 준비
Details
이 데모에서는 독립형 재시작 구성에서 두 개의 ASM 디스크 그룹을 사용하여 기본 EC2 DB 인스턴스에 db1이라는 기본 Oracle 데이터베이스를 설정하고, ASM 디스크 그룹 +DATA에 데이터 파일을 저장하고 ASM 디스크 그룹 +LOGS에 플래시 복구 영역을 저장합니다. 다음은 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에서 기본에 대한 플래시백을 활성화합니다. 플래시백을 사용하면 장애 조치 후 기본 데이터베이스를 스탠바이 데이터베이스로 쉽게 복구할 수 있습니다.
alter database flashback on;
-
Oracle 암호 파일을 사용하여 redo 전송 인증을 구성합니다. 암호 파일이 설정되어 있지 않으면 orapwd 유틸리티를 사용하여 기본 데이터베이스에 암호 파일을 만들고 대기 데이터베이스 $ORACLE_HOME/dbs 디렉토리로 복사합니다.
-
현재 온라인 로그 파일과 동일한 크기로 기본 DB에 대기 리두 로그를 생성합니다. 로그 그룹은 온라인 로그 파일 그룹보다 하나 더 많습니다. 그러면 기본 데이터베이스는 신속하게 대기 역할로 전환되고 필요한 경우 리두 데이터를 수신할 수 있습니다.
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';
-
필요한 경우 asmcmd 유틸리티를 사용하여 +DATA 디스크 그룹에서 새로 만든 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
-
tnsnames.ora를 수정하여 이름 확인을 위해 db_unique_name을 추가합니다.
# 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))
-
listener.ora 파일에 기본 데이터베이스에 대한 데이터 보호 서비스 이름 db1_NY_DGMGRL.demo.netapp을 추가합니다.
#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 인스턴스에 패치 세트를 포함한 Oracle 소프트웨어 스택과 OS 커널 구성이 필요하며, 이를 기본 EC2 DB 인스턴스와 일치시켜야 합니다. 쉬운 관리와 단순성을 위해 대기 EC2 DB 인스턴스 데이터베이스 스토리지 구성은 이상적으로 기본 EC2 DB 인스턴스와 일치해야 합니다. 여기에는 ASM 디스크 그룹의 이름, 개수, 크기 등이 포함됩니다. Data Guard를 위한 대기 EC2 DB 인스턴스를 설정하는 자세한 절차는 다음과 같습니다. 모든 명령은 oracle 소유자 사용자 ID로 실행해야 합니다.
-
먼저, 기본 EC2 인스턴스의 기본 데이터베이스 구성을 검토합니다. 이 데모에서는 독립형 재시작 구성에서 두 개의 ASM 디스크 그룹 +DATA 및 +LOGS를 사용하여 기본 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
-
오라클 홈과 경로를 설정합니다.
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에서 대기 db1로의 Data Guard 보호 설정이 완료됩니다.
Data Guard Broker 설정
Details
Oracle Data Guard 브로커는 Oracle Data Guard 구성의 생성, 유지 관리 및 모니터링을 자동화하고 중앙화하는 분산 관리 프레임워크입니다. 다음 섹션에서는 Data Guard 환경을 관리하기 위해 Data Guard Broker를 설정하는 방법을 보여줍니다.
-
sqlplus를 통해 다음 명령을 사용하여 기본 및 대기 데이터베이스에서 데이터 가드 브로커를 시작합니다.
alter system set dg_broker_start=true scope=both;
-
기본 데이터베이스에서 SYSDBA로 Data Guard Borker에 연결합니다.
[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 에 스탠바이 데이터베이스를 스테이징하는 주요 이점은 최소한의 추가 스토리지 투자로 다양한 다른 사용 사례에 맞게 FlexClon을 적용할 수 있다는 것입니다. 다음 섹션에서는 NetApp SnapCenter 도구를 사용하여 DEV, TEST, REPORT 등의 다른 목적을 위해 FSx ONTAP 에 마운트되고 복구 중인 대기 데이터베이스 볼륨의 스냅샷을 생성하고 복제하는 방법을 보여줍니다.
다음은 SnapCenter 사용하여 Data Guard의 관리되는 물리적 대기 데이터베이스에서 READ/WRITE 데이터베이스를 복제하는 고급 절차입니다. 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-user를 추가하세요
Credential
~에Settings
. -
대기 EC2 DB 인스턴스를 추가하고 EC2 DB 인스턴스를 복제합니다.
Hosts
.복제 EC2 DB 인스턴스에는 유사한 Oracle 소프트웨어 스택이 설치 및 구성되어 있어야 합니다. 테스트 사례에서는 그리드 인프라와 Oracle 19C가 설치 및 구성되었지만 데이터베이스는 생성되지 않았습니다. -
오프라인/마운트 전체 데이터베이스 백업에 맞게 맞춤화된 백업 정책을 만듭니다.
-
대기 데이터베이스를 보호하기 위해 백업 정책을 적용합니다.
Resources
꼬리표. -
데이터베이스 이름을 클릭하면 데이터베이스 백업 페이지가 열립니다. 데이터베이스 복제에 사용할 백업을 선택하고 클릭하십시오.
Clone
복제 워크플로를 시작하는 버튼입니다. -
선택하다
Complete Database Clone
복제 인스턴스의 이름을 SID로 지정합니다. -
대기 DB에서 복제된 데이터베이스를 호스팅하는 복제 호스트를 선택합니다. 데이터 파일, 제어 파일 및 리두 로그에 대해 기본값을 적용합니다. 대기 데이터베이스의 디스크 그룹에 해당하는 두 개의 ASM 디스크 그룹이 복제 호스트에 생성됩니다.
-
OS 기반 인증에는 데이터베이스 자격 증명이 필요하지 않습니다. 복제 EC2 데이터베이스 인스턴스에 구성된 내용과 Oracle 홈 설정을 일치시킵니다.
-
필요한 경우 복제 데이터베이스 매개변수를 변경하고 복제하기 전에 실행할 스크립트가 있는 경우 이를 지정합니다.
-
복제 후 실행할 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에 있는 대기 데이터베이스에서 DEV, TEST, REPORT 또는 기타 사용 사례를 위한 새로운 Oracle 데이터베이스의 복제 및 검증이 완료됩니다. Data Guard에서 동일한 스탠바이 데이터베이스에서 여러 Oracle 데이터베이스를 복제할 수 있습니다.
추가 정보를 찾을 수 있는 곳
이 문서에 설명된 정보에 대해 자세히 알아보려면 다음 문서 및/또는 웹사이트를 검토하세요.
-
데이터 가드 개념 및 관리
-
WP-7357: EC2 및 FSx에 Oracle 데이터베이스 배포 모범 사례
-
Amazon FSx ONTAP
-
아마존 EC2