TR-4987 :簡化的自動化 Azure NetApp Files NFS 部署
NetApp公司的Alleno Cao、Niyazz Mohamed
此解決方案提供 Microsoft Azure NetApp Files 中自動化 Oracle 部署的概觀與詳細資料、做為具有 NFS 傳輸協定的主要資料庫儲存設備、而 Oracle 資料庫則部署為啟用 DNFS 的容器資料庫。
目的
在雲端中執行效能密集且對延遲敏感的 Oracle 工作負載、可能是一大挑戰。Azure NetApp Files ( anf )可讓企業業務單位( LOB )和儲存專業人員輕鬆移轉及執行要求嚴苛的 Oracle 工作負載、而無需變更程式碼。Azure NetApp Files 在各種情況下、例如 Oracle 資料庫從內部部署到 Azure 的新部署或移轉(提升和移轉)、廣泛用作基礎共用檔案儲存服務。
本文件說明如何使用 Ansible 自動化技術、透過 NFS 掛載、在 Azure NetApp Files 中簡化 Oracle 資料庫的部署。Oracle 資料庫會部署在已啟用 Oracle DNFS 傳輸協定的容器資料庫( CDB )和可插拔資料庫( PDB )組態中、以提升效能。此外、內部部署的 Oracle 單一執行個體資料庫或 PDB 可以使用自動化的 PDB 重新定位方法、將服務中斷降至最低、移轉至 Azure 中新部署的容器資料庫。它也提供 Azure Cloud 中 NetApp SnapCenter UI 工具的快速 Oracle 資料庫備份、還原及複製資訊。
本解決方案可解決下列使用案例:
-
在 Azure NetApp Files 上自動部署 Oracle Container 資料庫
-
在內部部署與 Azure 雲端之間自動進行 Oracle 資料庫移轉
目標對象
本解決方案適用於下列人員:
-
想要在 Azure NetApp Files 上部署 Oracle 的 DBA 。
-
想要在 Azure NetApp Files 上測試 Oracle 工作負載的資料庫解決方案架構設計師。
-
想要在 Azure NetApp Files 上部署及管理 Oracle 資料庫的儲存管理員。
-
想要在 Azure NetApp Files 上備份 Oracle 資料庫的應用程式擁有者。
解決方案測試與驗證環境
此解決方案的測試與驗證是在實驗室環境中執行、可能與最終部署環境不符。請參閱一節 部署考量的關鍵因素 以取得更多資訊。
架構
硬體與軟體元件
硬體 |
||
Azure NetApp Files |
Microsoft 目前在 Azure 提供的產品 |
單一容量集區、提供優質服務層級 |
Azure VM for DB 伺服器 |
Standard_B4ms - 4 個 vCPU 、 16GiB |
兩個用於並行部署的 Linux 虛擬機器執行個體 |
Azure VM for SnapCenter |
Standard_B4ms - 4 個 vCPU 、 16GiB |
一個 Windows 虛擬機器執行個體 |
軟體 |
||
RedHat Linux |
RHEL Linux 8.6 ( LVM ) - x64 Gen2 |
已部署RedHat訂閱以進行測試 |
Windows伺服器 |
2022 DataCenter ; Azure Edition HotPatch - x64 Gen2 |
託管 SnapCenter 伺服器 |
Oracle資料庫 |
版本 19.18 |
已套用 RU 修補程式 p34765931_190000_Linux-x86-64.zip |
Oracle OPatch |
12.2.0.1.36 版 |
最新修補程式 p6880880_190000_Linux-x86-64.zip |
伺服器SnapCenter |
版本 5.0 |
工作群組部署 |
開啟 JDK |
版本 Java-11-OpenJDK |
DB VM 上的 SnapCenter 外掛程式需求 |
NFS |
3.0版 |
Oracle DNFS 已啟用 |
Ansible |
核心 2 . 2 |
Python 3.6.8 |
實驗室環境中的 Oracle 資料庫組態
伺服器 |
資料庫 |
* 資料庫儲存 * |
ora-01 |
NTAP1 ( NTAP1_PDB1 、 NTAP1_PDB2 、 NTAP1_PDB3 ) |
/u01 、 /u02 、 /u03 NFS 裝載於 anf 容量集區 |
ora-02. |
NTAP2 ( NTAP2_PDB1 、 NTAP2_PDB2 、 NTAP2_PDB3 ) |
/u01 、 /u02 、 /u03 NFS 裝載於 anf 容量集區 |
部署考量的關鍵因素
-
* Oracle 資料庫儲存配置。 * 在這項自動化 Oracle 部署中、我們預設會為每個資料庫配置三個資料庫磁碟區、以主控 Oracle 二進位、資料和記錄檔。這些磁碟區會以 /u01 - 二進位、 /u02 - 資料、 /u03 - 記錄檔透過 NFS 裝載在 Oracle DB 伺服器上。雙控制檔是在 /u02 和 /u03 掛載點上設定、以提供備援。
-
* 部署多部 DB 伺服器。 * 自動化解決方案可在單一 Ansible 教戰手冊中、將 Oracle 容器資料庫部署至多部 DB 伺服器。無論資料庫伺服器的數量為何、教戰手冊的執行方式都會維持不變。您可以使用不同的資料庫執行個體 ID ( Oracle SID )重複部署、將多個容器資料庫部署到單一 VM 執行個體。但請確保主機上有足夠的記憶體來支援部署的資料庫。
-
* DNFS 組態。 * 透過使用 DNFS (自 Oracle 11g 起提供)、在 Azure 虛擬機器上執行的 Oracle 資料庫可提供比原生 NFS 用戶端更多的 I/O 。依預設、自動化 Oracle 部署會在 NFSv3 上設定 DNFS 。
-
* 分配大容量磁碟區以加速部署。 * anf 檔案系統 IO 處理量會根據磁碟區大小進行調整。對於初始部署、分配大容量磁碟區可以加速部署。之後、這些磁碟區可以動態縮減大小、而不會影響應用程式。
-
* 資料庫備份。 * NetApp 提供 SnapCenter 軟體套件、以方便使用者的 UI 介面進行資料庫備份、還原及複製。NetApp 建議實作這樣的管理工具、以快速(在一分鐘內)備份快照、快速(分鐘)資料庫還原及資料庫複製。
解決方案部署
以下各節提供在 Azure NetApp Files 上自動部署 Oracle 19c 和資料庫移轉的逐步程序、並透過 NFS 將直接掛載的資料庫磁碟區移轉至 Azure VM 。
部署的先決條件
Details
部署需要下列先決條件。
-
Azure 帳戶已設定完成、您的 Azure 帳戶已建立必要的 vnet 和網路區段。
-
從 Azure 雲端入口網站、將 Azure Linux VM 部署為 Oracle DB 伺服器。為 Oracle 資料庫建立 Azure NetApp Files 容量集區和資料庫磁碟區。啟用 VM SSH 私密 / 公開金鑰驗證、以利 azureuser 與 DB 伺服器之間的驗證。如需環境設定的詳細資訊、請參閱上一節的架構圖表。也請參閱 "Azure VM和Azure NetApp Files 整套Oracle部署程序" 以取得詳細資訊。
對於部署了本機磁碟備援的 Azure VM 、請確定您已在 VM 根磁碟中至少分配 128G 、以有足夠的空間來存放 Oracle 安裝檔案、並新增 OS 交換檔。相應地展開 /tmplv 和 /rontlv OS 分區。確保資料庫磁碟區命名遵循 VMNAME-u01 、 VMNAME-u02 和 VMNAME-u03 慣例。 sudo lvresize -r -L +20G /dev/mapper/rootvg-rootlv
sudo lvresize -r -L +10G /dev/mapper/rootvg-tmplv
-
從 Azure 雲端入口網站佈建 Windows 伺服器、以最新版本執行 NetApp SnapCenter UI 工具。如需詳細資訊、請參閱下列連結: "安裝SnapCenter 此伺服器"
-
在安裝最新版 Ansible 和 Git 的情況下、將 Linux VM 配置為 Ansible 控制器節點。如需詳細資訊、請參閱下列連結: "NetApp解決方案自動化入門" 在第 - 節中
Setup the Ansible Control Node for CLI deployments on RHEL / CentOS
或
Setup the Ansible Control Node for CLI deployments on Ubuntu / Debian
。Ansible 控制器節點可在預先置入或 Azure 雲端中找到、只要透過 ssh 連接埠到達 Azure DB VM 即可。 -
複製 NetApp Oracle 部署自動化工具套件 for NFS 的複本。
git clone https://bitbucket.ngage.netapp.com/scm/ns-bb/na_oracle_deploy_nfs.git
-
在 Azure DB VM /tmp/archive 目錄上執行 Oracle 19c 安裝檔案、並具有 777 權限。
installer_archives: - "LINUX.X64_193000_db_home.zip" - "p34765931_190000_Linux-x86-64.zip" - "p6880880_190000_Linux-x86-64.zip"
-
觀看下列影片:
在 Azure NetApp Files 上使用 NFS 簡化且自動化的 Oracle 部署
自動化參數檔案
Details
Ansible 教戰手冊使用預先定義的參數執行資料庫安裝和組態工作。對於此 Oracle 自動化解決方案、有三個使用者定義的參數檔案需要使用者輸入才能執行教戰手冊。
-
主機:定義自動化教戰手冊所針對的目標。
-
VARS/vars.yml - 定義適用於所有目標的變數的全域變數檔案。
-
host_vars/host_name.yml - 定義僅適用於命名目標的變數的本機變數檔案。在我們的使用案例中、這些是 Oracle DB 伺服器。
除了這些使用者定義的變數檔案之外、還有幾個預設變數檔案、其中包含預設參數、除非必要、否則不需要變更。下列各節說明如何設定使用者定義的變數檔案。
參數檔組態
Details
-
Ansible 目標
hosts
檔案組態:# Enter Oracle servers names to be deployed one by one, follow by each Oracle server public IP address, and ssh private key of admin user for the server. [oracle] ora_01 ansible_host=10.61.180.21 ansible_ssh_private_key_file=ora_01.pem ora_02 ansible_host=10.61.180.23 ansible_ssh_private_key_file=ora_02.pem
-
全域
vars/vars.yml
檔案組態###################################################################### ###### Oracle 19c deployment user configuration variables ###### ###### Consolidate all variables from ONTAP, linux and oracle ###### ###################################################################### ########################################### ### ONTAP env specific config variables ### ########################################### # Prerequisite to create three volumes in NetApp ONTAP storage from System Manager or cloud dashboard with following naming convention: # db_hostname_u01 - Oracle binary # db_hostname_u02 - Oracle data # db_hostname_u03 - Oracle redo # It is important to strictly follow the name convention or the automation will fail. ########################################### ### Linux env specific config variables ### ########################################### redhat_sub_username: XXXXXXXX redhat_sub_password: XXXXXXXX #################################################### ### DB env specific install and config variables ### #################################################### # Database domain name db_domain: solutions.netapp.com # Set initial password for all required Oracle passwords. Change them after installation. initial_pwd_all: XXXXXXXX
-
本機 DB 伺服器
host_vars/host_name.yml
組態、例如 ora_01.yml 、 ora_02.yml …# User configurable Oracle host specific parameters # Enter container database SID. By default, a container DB is created with 3 PDBs within the CDB oracle_sid: NTAP1 # Enter database shared memory size or SGA. CDB is created with SGA at 75% of memory_limit, MB. The grand total of SGA should not exceed 75% available RAM on node. memory_limit: 8192 # Local NFS lif ip address to access database volumes nfs_lif: 172.30.136.68
教戰手冊執行
Details
自動化工具套件共有五本教戰手冊。每個工作區塊都會執行不同的工作區塊、並提供不同的用途。
0-all_playbook.yml - execute playbooks from 1-4 in one playbook run. 1-ansible_requirements.yml - set up Ansible controller with required libs and collections. 2-linux_config.yml - execute Linux kernel configuration on Oracle DB servers. 4-oracle_config.yml - install and configure Oracle on DB servers and create a container database. 5-destroy.yml - optional to undo the environment to dismantle all.
有三個選項可用來執行具有下列命令的教戰手冊。
-
在一次合併執行中執行所有部署教戰手冊。
ansible-playbook -i hosts 0-all_playbook.yml -u azureuser -e @vars/vars.yml
-
一次執行一個教戰手冊、編號順序為 1-4 。
ansible-playbook -i hosts 1-ansible_requirements.yml -u azureuser -e @vars/vars.yml
ansible-playbook -i hosts 2-linux_config.yml -u azureuser -e @vars/vars.yml
ansible-playbook -i hosts 4-oracle_config.yml -u azureuser -e @vars/vars.yml
-
使用標記執行 0-all_playbook.yml 。
ansible-playbook -i hosts 0-all_playbook.yml -u azureuser -e @vars/vars.yml -t ansible_requirements
ansible-playbook -i hosts 0-all_playbook.yml -u azureuser -e @vars/vars.yml -t linux_config
ansible-playbook -i hosts 0-all_playbook.yml -u azureuser -e @vars/vars.yml -t oracle_config
-
復原環境
ansible-playbook -i hosts 5-destroy.yml -u azureuser -e @vars/vars.yml
執行後驗證
Details
執行教戰手冊後、請登入 Oracle DB 伺服器 VM 、以驗證 Oracle 是否已安裝及設定、以及是否已成功建立容器資料庫。以下是主機 ora-01 上 Oracle 資料庫驗證的範例。
-
驗證 NFS 掛載
[azureuser@ora-01 ~]$ cat /etc/fstab # # /etc/fstab # Created by anaconda on Thu Sep 14 11:04:01 2023 # # Accessible filesystems, by reference, are maintained under '/dev/disk/'. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info. # # After editing this file, run 'systemctl daemon-reload' to update systemd # units generated from this file. # /dev/mapper/rootvg-rootlv / xfs defaults 0 0 UUID=268633bd-f9bb-446d-9a1d-8fca4609a1e1 /boot xfs defaults 0 0 UUID=89D8-B037 /boot/efi vfat defaults,uid=0,gid=0,umask=077,shortname=winnt 0 2 /dev/mapper/rootvg-homelv /home xfs defaults 0 0 /dev/mapper/rootvg-tmplv /tmp xfs defaults 0 0 /dev/mapper/rootvg-usrlv /usr xfs defaults 0 0 /dev/mapper/rootvg-varlv /var xfs defaults 0 0 /mnt/swapfile swap swap defaults 0 0 172.30.136.68:/ora-01-u01 /u01 nfs rw,bg,hard,vers=3,proto=tcp,timeo=600,rsize=65536,wsize=65536 0 0 172.30.136.68:/ora-01-u02 /u02 nfs rw,bg,hard,vers=3,proto=tcp,timeo=600,rsize=65536,wsize=65536 0 0 172.30.136.68:/ora-01-u03 /u03 nfs rw,bg,hard,vers=3,proto=tcp,timeo=600,rsize=65536,wsize=65536 0 0 [azureuser@ora-01 ~]$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 7.7G 0 7.7G 0% /dev tmpfs 7.8G 0 7.8G 0% /dev/shm tmpfs 7.8G 8.6M 7.7G 1% /run tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup /dev/mapper/rootvg-rootlv 22G 17G 5.8G 74% / /dev/mapper/rootvg-usrlv 10G 2.0G 8.1G 20% /usr /dev/mapper/rootvg-varlv 8.0G 890M 7.2G 11% /var /dev/sda1 496M 106M 390M 22% /boot /dev/mapper/rootvg-homelv 1014M 40M 975M 4% /home /dev/sda15 495M 5.9M 489M 2% /boot/efi /dev/mapper/rootvg-tmplv 12G 8.4G 3.7G 70% /tmp tmpfs 1.6G 0 1.6G 0% /run/user/54321 172.30.136.68:/ora-01-u01 500G 11G 490G 3% /u01 172.30.136.68:/ora-01-u03 250G 1.2G 249G 1% /u03 172.30.136.68:/ora-01-u02 250G 7.1G 243G 3% /u02 tmpfs 1.6G 0 1.6G 0% /run/user/1000
-
驗證 Oracle 接聽程式
[azureuser@ora-01 ~]$ sudo su [root@ora-01 azureuser]# su - oracle Last login: Thu Feb 1 16:13:44 UTC 2024 [oracle@ora-01 ~]$ lsnrctl status listener.ntap1 LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 01-FEB-2024 16:25:37 Copyright (c) 1991, 2022, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ora-01.internal.cloudapp.net)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER.NTAP1 Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production Start Date 01-FEB-2024 16:13:49 Uptime 0 days 0 hr. 11 min. 49 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/19.0.0/NTAP1/network/admin/listener.ora Listener Log File /u01/app/oracle/diag/tnslsnr/ora-01/listener.ntap1/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora-01.hr2z2nbmhnqutdsxgscjtuxizd.jx.internal.cloudapp.net)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=ora-01.hr2z2nbmhnqutdsxgscjtuxizd.jx.internal.cloudapp.net)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/product/19.0.0/NTAP1/admin/NTAP1/xdb_wallet))(Presentation=HTTP)(Session=RAW)) Services Summary... Service "104409ac02da6352e063bb891eacf34a.solutions.netapp.com" has 1 instance(s). Instance "NTAP1", status READY, has 1 handler(s) for this service... Service "104412c14c2c63cae063bb891eacf64d.solutions.netapp.com" has 1 instance(s). Instance "NTAP1", status READY, has 1 handler(s) for this service... Service "1044174670ad63ffe063bb891eac6b34.solutions.netapp.com" has 1 instance(s). Instance "NTAP1", status READY, has 1 handler(s) for this service... Service "NTAP1.solutions.netapp.com" has 1 instance(s). Instance "NTAP1", status READY, has 1 handler(s) for this service... Service "NTAP1XDB.solutions.netapp.com" has 1 instance(s). Instance "NTAP1", status READY, has 1 handler(s) for this service... Service "ntap1_pdb1.solutions.netapp.com" has 1 instance(s). Instance "NTAP1", status READY, has 1 handler(s) for this service... Service "ntap1_pdb2.solutions.netapp.com" has 1 instance(s). Instance "NTAP1", status READY, has 1 handler(s) for this service... Service "ntap1_pdb3.solutions.netapp.com" has 1 instance(s). Instance "NTAP1", status READY, has 1 handler(s) for this service... The command completed successfully
-
驗證 Oracle 資料庫和 DNFS
[oracle@ora-01 ~]$ 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. # # NTAP1:/u01/app/oracle/product/19.0.0/NTAP1:Y [oracle@ora-01 ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Thu Feb 1 16:37:51 2024 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 --------- -------------------- ------------ NTAP1 READ WRITE ARCHIVELOG SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 NTAP1_PDB1 READ WRITE NO 4 NTAP1_PDB2 READ WRITE NO 5 NTAP1_PDB3 READ WRITE NO SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- /u02/oradata/NTAP1/system01.dbf /u02/oradata/NTAP1/sysaux01.dbf /u02/oradata/NTAP1/undotbs01.dbf /u02/oradata/NTAP1/pdbseed/system01.dbf /u02/oradata/NTAP1/pdbseed/sysaux01.dbf /u02/oradata/NTAP1/users01.dbf /u02/oradata/NTAP1/pdbseed/undotbs01.dbf /u02/oradata/NTAP1/NTAP1_pdb1/system01.dbf /u02/oradata/NTAP1/NTAP1_pdb1/sysaux01.dbf /u02/oradata/NTAP1/NTAP1_pdb1/undotbs01.dbf /u02/oradata/NTAP1/NTAP1_pdb1/users01.dbf NAME -------------------------------------------------------------------------------- /u02/oradata/NTAP1/NTAP1_pdb2/system01.dbf /u02/oradata/NTAP1/NTAP1_pdb2/sysaux01.dbf /u02/oradata/NTAP1/NTAP1_pdb2/undotbs01.dbf /u02/oradata/NTAP1/NTAP1_pdb2/users01.dbf /u02/oradata/NTAP1/NTAP1_pdb3/system01.dbf /u02/oradata/NTAP1/NTAP1_pdb3/sysaux01.dbf /u02/oradata/NTAP1/NTAP1_pdb3/undotbs01.dbf /u02/oradata/NTAP1/NTAP1_pdb3/users01.dbf 19 rows selected. SQL> select name from v$controlfile; NAME -------------------------------------------------------------------------------- /u02/oradata/NTAP1/control01.ctl /u03/orareco/NTAP1/control02.ctl SQL> select member from v$logfile; MEMBER -------------------------------------------------------------------------------- /u03/orareco/NTAP1/onlinelog/redo03.log /u03/orareco/NTAP1/onlinelog/redo02.log /u03/orareco/NTAP1/onlinelog/redo01.log SQL> select svrname, dirname, nfsversion from v$dnfs_servers; SVRNAME -------------------------------------------------------------------------------- DIRNAME -------------------------------------------------------------------------------- NFSVERSION ---------------- 172.30.136.68 /ora-01-u02 NFSv3.0 172.30.136.68 /ora-01-u03 NFSv3.0 SVRNAME -------------------------------------------------------------------------------- DIRNAME -------------------------------------------------------------------------------- NFSVERSION ---------------- 172.30.136.68 /ora-01-u01 NFSv3.0
-
登入 Oracle Enterprise Manager Express 以驗證資料庫。
將 Oracle 資料庫移轉至 Azure
Details
Oracle 資料庫從內部部署移轉至雲端的工作非常繁重。使用正確的策略和自動化功能、可以順利完成程序、並將服務中斷和停機時間降至最低。請遵循此詳細指示 "資料庫從內部部署移轉至Azure雲端" 引導您的資料庫移轉過程。
使用 SnapCenter 進行 Oracle 備份、還原及複製
Details
NetApp 建議使用 SnapCenter UI 工具來管理部署於 Azure 雲端的 Oracle 資料庫。請參閱 TR-4988 : "Oracle 資料庫備份、恢復及複製、透過 SnapCenter 進行" 以取得詳細資料。
何處可找到其他資訊
若要深入瞭解本文件所述資訊、請參閱下列文件及 / 或網站:
-
Oracle 資料庫備份、恢復及複製、透過 SnapCenter 進行
-
Azure NetApp Files
-
部署 Oracle Direct NFS
-
使用回應檔案安裝及設定 Oracle 資料庫