Skip to main content
NetApp Solutions
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

ASM을 사용하여 ANF에서 Oracle Clone Lifecycle 자동화

기여자

Allen Cao, Niyaz Mohamed, NetApp

이 솔루션은 ASM 구성이 포함된 Azure NetApp Files 스토리지의 Azure 클라우드에서 호스팅되는 Oracle Data Guard의 물리적 대기 데이터베이스에서 Oracle 클론 데이터베이스를 설정, 클론 복제, 업데이트하기 위한 Ansible 기반 자동화 툴킷을 제공합니다.

목적

Oracle Data Guard 구성에서 물리적 대기 Oracle 데이터베이스의 클론을 다른 사용 사례에 활용하는 것은 여러 가지 용도로 사용됩니다. 개발 또는 UAT 목적으로 프로덕션 데이터베이스의 쓰기 가능한 복사본을 제공합니다. 따라서 보고의 짧은 지연(10-15분)이 허용될 경우 고가의 Active Data Guard 라이센스 비용을 절감할 수 있습니다. 특히 씬 클론을 선택할 경우 스토리지 비용이 절감됩니다. Ansible 기반 자동화 툴킷은 사용자가 사용자 일정에 맞게 클론 복제된 Oracle 데이터베이스를 설정, 클론 복제 및 교체할 수 있도록 지원하여 라이프사이클 관리를 간소화할 수 있도록 합니다. 이 툴킷은 Azure NetApp Files 스토리지와 Data Guard 구성으로 구성된 Oracle 데이터베이스를 사용하여 Azure 퍼블릭 클라우드에 구축된 Oracle 데이터베이스에 적용됩니다.

이 솔루션은 다음과 같은 사용 사례를 해결합니다.

  • Ansible 자동화를 위한 Oracle 대기 데이터베이스 클론 구성 파일 설정

  • 사용자 정의 일정에 따라 Ansible 플레이북을 사용하여 Data Guard 대기에서 클론 Oracle 데이터베이스를 생성하거나 업데이트합니다.

대상

이 솔루션은 다음과 같은 사용자를 대상으로 합니다.

  • Azure 클라우드에서 Oracle 데이터베이스를 관리하는 DBA입니다.

  • Azure NetApp Files 스토리지를 관리하는 스토리지 관리자

  • 다른 사용 사례를 위해 Data Guard 대기에서 Oracle 데이터베이스를 복제하려는 애플리케이션 소유자

라이센스

이 GitHub 리포지토리의 콘텐츠를 액세스, 다운로드, 설치 또는 사용하면 에 설명된 사용권 조항에 동의하는 것입니다 "라이센스 파일".

참고 이 GitHub 저장소의 컨텐츠와 파생 저작물을 제작 및/또는 공유하는 데는 일정한 제한이 있습니다. 콘텐츠를 사용하기 전에 라이센스 약관을 읽었는지 확인하십시오. 모든 약관에 동의하지 않는 경우 이 리포지토리에 있는 콘텐츠에 액세스하거나 다운로드하거나 사용하지 마십시오.

솔루션 구축

배포를 위한 사전 요구 사항

Details

배포에는 다음과 같은 사전 요구 사항이 필요합니다.

Ansible controller:
  Ansible v.2.10 and higher
  ONTAP collection 21.19.1
  Python 3
  Python libraries:
    netapp-lib
    xmltodict
    jmespath
Oracle servers:
  Physical standby Oracle servers in Data Guard configuration
  Clone target Oracle servers with ASM configuration
참고 간소화를 위해 클론 타겟 Oracle 서버는 Oracle 소프트웨어 스택과 같은 대기 Oracle 서버뿐 아니라 Oracle Home 등의 디렉토리 레이아웃과도 동일하게 구성해야 합니다

툴킷을 다운로드합니다

Details
git clone https://bitbucket.ngage.netapp.com/scm/ns-bb/na_oracle_clone_anf.git
Cli
참고 이 툴킷은 현재 BitBucket 액세스 권한이 있는 NetApp 내부 사용자만 액세스할 수 있습니다. 외부 사용자에 관심이 있는 경우, 어카운트 팀에서 액세스 권한을 요청하거나 NetApp 솔루션 엔지니어링 팀에 문의하십시오.

Ansible 소스 및 타겟 호스트의 파일 구성

Details

이 툴킷에는 Ansible 플레이북이 실행되는 Oracle 호스트의 소스와 대상을 정의하는 hosts 파일이 포함되어 있습니다. 일반적으로 Data Guard 설정의 대기 DB 호스트와 대상 Oracle 클론 호스트가 포함됩니다. 다음은 예제 파일입니다. 호스트 항목에는 타겟 호스트 IP 주소와 클론 또는 새로 고침 명령을 실행하기 위해 호스트에 대한 사용자 액세스를 위한 ssh 키가 포함됩니다. Azure NetApp Files 스토리지는 API를 통해 구성됩니다. 따라서 ANF 연결은 HTTP 프로토콜을 통해 로컬 호스트를 통해 연결됩니다.

[ora_stdby]
oras ansible_host=172.179.119.75 ansible_ssh_private_key_file=oras.pem
[ora_clone]
orac ansible_host=52.148.142.212 ansible_ssh_private_key_file=orac.pem
[azure]
localhost ansible_connection=local

글로벌 변수 설정

Details

다음은 전역 수준에서 적용 가능한 변수를 포함하는 일반적인 전역 변수 파일 vars.yml의 예입니다.

######################################################################
###### Oracle DB clone on ANF user configuration variables      ######
###### Consolidate all variables from ANF, linux and oracle     ######
######################################################################
###########################################
### ONTAP/ANF specific config variables ###
###########################################
# ANF credential
subscription: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
client: "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
tenant: "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
# Cloned DB volumes from standby DB
resource_group: ANFAVSRG
storage_account: ANFOraWest
anf_pool: database2
data_vols:
  - "{{ groups.ora_stdby[0] }}-u02"
  - "{{ groups.ora_stdby[0] }}-u04"
  - "{{ groups.ora_stdby[0] }}-u05"
  - "{{ groups.ora_stdby[0] }}-u06"
  - "{{ groups.ora_stdby[0] }}-u03"
nfs_lifs:
  - 10.0.3.36
  - 10.0.3.36
  - 10.0.3.36
  - 10.0.3.36
  - 10.0.3.36
###########################################
### Linux env specific config variables ###
###########################################
####################################################
### DB env specific install and config variables ###
####################################################
# Standby DB configuration
oracle_user: oracle
oracle_base: /u01/app/oracle
oracle_sid: NTAP
db_unique_name: NTAP_LA
oracle_home: '{{ oracle_base }}/product/19.0.0/{{ oracle_sid }}'
spfile: '+DATA/{{ db_unique_name }}/PARAMETERFILE/spfile.289.1190302433'
adump: '{{ oracle_base }}/admin/{{ db_unique_name }}/adump'
grid_home: /u01/app/oracle/product/19.0.0/grid
asm_disk_groups:
  - DATA
  - LOGS
# Clond DB configuration
clone_sid: NTAPDEV
sys_pwd: "xxxxxxxx"

호스트 변수 구성

Details

호스트 변수는 특정 호스트에만 적용되는 {{host_name}}.yml로 명명된 host_vars 디렉토리에 정의됩니다. 이 솔루션에서는 타겟 클론 DB 호스트 매개 변수 파일만 구성됩니다. Oracle 스탠바이 DB 매개 변수는 글로벌 VAR 파일로 구성됩니다. 다음은 일반적인 구성을 보여 주는 타겟 Oracle 클론 DB 호스트 변수 파일 Orac.yml의 예입니다.

# User configurable Oracle clone host specific parameters
# Database SID - clone DB SID
oracle_base: /u01/app/oracle
oracle_user: oracle
clone_sid: NTAPDEV
oracle_home: '{{ oracle_base }}/product/19.0.0/{{ oracle_sid }}'
clone_adump: '{{ oracle_base }}/admin/{{ clone_sid }}/adump'
grid_user: oracle
grid_home: '{{ oracle_base }}/product/19.0.0/grid'
asm_sid: +ASM

추가 클론 대상 Oracle 서버 구성

Details

클론 대상 Oracle 서버는 소스 Oracle 서버와 동일한 Oracle 소프트웨어 스택을 설치 및 패치해야 합니다. Oracle user.bash_profile에 $ORACLE_BASE 및 $ORACLE_HOME이 구성되어 있습니다. 또한 $ORACLE_HOME 변수는 소스 Oracle 서버 설정과 일치해야 합니다. 대상 ORACLE_HOME 설정이 대기 Oracle 서버 구성과 다른 경우 심볼 링크를 생성하여 차이점을 해결하십시오. 다음은 예제입니다.

# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
       . ~/.bashrc
fi
# User specific environment and startup programs
export ORACLE_BASE=/u01/app/oracle
export GRID_HOME=/u01/app/oracle/product/19.0.0/grid
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/NTAP
alias asm='export ORACLE_HOME=$GRID_HOME;export PATH=$PATH:$GRID_HOME/bin;export ORACLE_SID=+ASM'

플레이북 실행

Details

Oracle 데이터베이스 클론 수명주기를 실행하기 위한 플레이북은 총 2개입니다. DB 클론 또는 새로 고침은 필요에 따라 실행하거나 crontab 작업으로 예약할 수 있습니다.

  1. Ansible 컨트롤러 사전 요구사항 설치 - 한 번만.

    ansible-playbook -i hosts ansible_requirements.yml
    Cli
  2. 필요 시 또는 crontab에서 클론 데이터베이스를 생성하고 정기적으로 업데이트하여 클론 또는 플레이북을 호출하도록 셸 스크립트를 사용합니다.

    ansible-playbook -i oracle_clone_asm_anf.yml -u azureuser -e @vars/vars.yml
    Cli
    0 */2 * * * /home/admin/na_oracle_clone_anf/oracle_clone_asm_anf.sh
    Cli

추가 데이터베이스를 복제하려면 별도의 ORACLE_CLONE_n_asm_anf.yml 및 ORACLE_CLONE_n_asm_anf.sh를 생성합니다. host_vars 디렉토리에 Ansible 타겟 호스트, 글로벌 vars.yml 및 hostname.yml 파일을 적절히 구성합니다.

참고 특정 작업을 완료할 수 있도록 여러 단계에서 툴킷을 실행할 때 일시 중지됩니다. 예를 들어 DB 볼륨 클론이 완료될 수 있도록 2분 동안 일시 중지됩니다. 일반적으로 채무불이행은 충분해야 하지만 타이밍은 고유한 상황이나 구현에 맞춰 조정해야 할 수 있습니다.

추가 정보를 찾을 수 있는 위치

NetApp 솔루션 자동화에 대한 자세한 내용은 다음 웹 사이트를 참조하십시오 "NetApp 솔루션 자동화"