Skip to main content
NetApp Solutions
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

利用 ASM 在 GCNV 上執行自動化 Oracle Clone Lifecycle

貢獻者

NetApp公司的Alleno Cao、Niyazz Mohamed

本解決方案提供 Ansible 型自動化工具組,可透過 ASM 組態,從 Google Cloud Volume 儲存設備上的 Google Cloud NetApp Volume 儲存設備中代管的 Oracle Data Guard 實體待命資料庫,設定,複製及重新整理 Oracle 複製資料庫。

目的

在 Oracle Data Guard 組態中運用實體備用 Oracle 資料庫的快速複本,以用於其他使用案例,有多種用途。它提供接近即時報告資料庫,也提供可寫入的正式作業資料庫複本,以供開發或 UAT 使用。因此,如果報告延遲時間短( 10-15 分鐘)是可以接受的,它就能免除昂貴的 Active Data Guard 授權成本。它可節省儲存成本,特別是當主要資料磁碟區的精簡複本為選項時。這套 Ansible 型自動化工具套件可讓使用者根據使用者排程設定,複製及重新整理複製的 Oracle 資料庫,以簡化生命週期管理。此工具套件適用於在 Data Guard 組態中使用 Google Cloud NetApp Volumes ( GCNV )儲存設備和 Oracle 資料庫設定,部署至 Google 公有雲的 Oracle 資料庫。

本解決方案可解決下列使用案例:

  • 設定 Oracle 待命資料庫複製組態檔案以進行 Ansible 自動化。

  • 根據使用者定義的排程,使用 Ansible 教戰手冊,從 Data Guard 待機模式建立或重新整理複製 Oracle 資料庫。

目標對象

本解決方案適用於下列人員:

  • 在 Google Cloud 中管理 Oracle 資料庫的 DBA 。

  • 管理 Google NetApp Volume 儲存設備的儲存管理員。

  • 喜歡從 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
https://bitbucket.ngage.netapp.com/projects/NS-BB/repos/na_oracle_clone_gcnv/browse
註 此工具組目前只能由具有 BitBucket 存取權限的 NetApp 內部使用者存取。對於有興趣的外部使用者,請向您的客戶團隊申請存取權限,或聯絡 NetApp 解決方案工程團隊。

Ansible 來源和目標主機檔案組態

Details

此工具套件包含主機檔案,可定義執行 Ansible 教戰手冊的來源和目標 Oracle 主機。通常,它會在 Data Guard 設定中包含待機 DB 主機,以及目標 Oracle 複製主機。以下是範例檔案。主機項目包括目標主機 IP 位址和 ssh 金鑰,供使用者存取主機以執行 clone 或 refresh 命令。Google Cloud NetApp Volumes 儲存設備可透過 gCloud CLI 存取及管理。

[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
[gcp]
localhost ansible_connection=local

整體變數組態

Details

以下是典型的全域變數檔案 vars.yml 範例,其中包含適用於全域層級的變數。

######################################################################
###### Oracle DB clone on GCNV user configuration variables     ######
###### Consolidate all variables from GCNV, linux and oracle    ######
######################################################################
############################################
### ONTAP/GCNV specific config variables ###
############################################
# GCNV credential
key_file: /home/admin/google-cloud-sdk/service_key.json
# Cloned DB volumes from standby DB
project_id: cvs-pm-host-1p
location: us-west4
protocol: nfsv3
data_vols:
  - "{{ groups.ora_stdby[0] }}-u02"
  - "{{ groups.ora_stdby[0] }}-u03"
  - "{{ groups.ora_stdby[0] }}-u04"
  - "{{ groups.ora_stdby[0] }}-u05"
  - "{{ groups.ora_stdby[0] }}-u06"
  - "{{ groups.ora_stdby[0] }}-u07"
  - "{{ groups.ora_stdby[0] }}-u08"
nfs_lifs:
  - 10.165.128.197
  - 10.165.128.196
  - 10.165.128.197
  - 10.165.128.197
  - 10.165.128.197
  - 10.165.128.197
  - 10.165.128.197
nfs_client: 0.0.0.0/0
###########################################
### 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.1198520783'
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"
# Data Guard mode - MaxAvailability or MaxPerformance
dg_mode: MaxAvailability
註 為了更安全的自動化部署,可使用 Ansible Vault 來加密密碼,存取權杖或金鑰等敏感資訊。解決方案不涵蓋 Ansible Vault 實作,但在 Ansible 文件中已有詳細記錄。詳情請參閱"使用 Ansible 資料保險箱保護敏感資料"

主機變數組態

Details

主機變數是在 host_vars 目錄中定義,名稱為 { { host_name } } 。僅適用於特定主機。對於此解決方案,只會設定目標複製資料庫主機參數檔案。Oracle 待機 DB 參數是在全域 vars 檔案中設定。以下為目標 Oracle Clone 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

Clone 目標 Oracle 伺服器應安裝和修補與來源 Oracle 伺服器相同的 Oracle 軟體堆疊。Oracle 使用者 .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'
註 確保 DB Clone 主機上的 asm_diskstring 組態參數包含所有複製的 Volume NFS 裝載點和磁碟裝置的目錄路徑。

教戰手冊執行

Details

共有兩本教戰手冊可執行 Oracle 資料庫複製生命週期。資料庫複製或重新整理可以隨需執行,也可以排程為 crontab 工作。

  1. 安裝 Ansible 控制器先決條件 - 僅一次。

    ansible-playbook -i hosts ansible_requirements.yml
  2. 可隨需建立及重新整理複製資料庫,或使用 Shell 指令碼定期從 crontab 建立及重新整理複製資料庫,以呼叫複製或重新整理教戰手冊。

    ansible-playbook -i oracle_clone_asm_gcnv.yml -u admin -e @vars/vars.yml
    0 */2 * * * /home/admin/na_oracle_clone_gcnv/oracle_clone_asm_gcnv.sh

若要複製任何其他資料庫,請建立個別的 oracle_clone , n_asm_gcnv.yml 和 oracle_clone n_asm_gcnv.sh 。在 host_vars 目錄中相應地配置 Ansible 目標主機,全局 vars.yml 和 hostname.yml 文件。

註 在不同階段執行工具組會暫停,以便完成特定工作。例如,它會暫停兩分鐘,讓資料庫磁碟區複製完成。一般而言,預設值應該足夠,但時間可能需要針對獨特情況或實作進行調整。

何處可找到其他資訊

若要深入瞭解 NetApp 解決方案自動化、請參閱下列網站 "NetApp解決方案自動化"