TR-4不同:《在采用NFS的NetApp C系列上简化的自动化Oracle部署》
NetApp公司Allen Cao、Niyaz Mohamed
本解决方案简要介绍了如何在NetApp AFF C系列中将Oracle自动化部署为使用NFS协议的主数据库存储。Oracle数据库部署为启用了DNFS的容器数据库。
目的
NetApp AFF C系列是一款容量闪存存储、可使统一存储更易于访问且经济实惠。对于许多第1层或第2层Oracle数据库工作负载来说、从性能角度来看、这种配置足以满足要求。AFF C系列系统由NetApp ONTAP®数据管理软件提供支持,可提供行业领先的效率、卓越的灵活性、同类最佳的数据服务和云集成,帮助您扩展IT基础架构、简化数据管理并降低存储成本和电耗。
本文档演示了如何使用自动化通过NFS挂载在NetApp C系列中简化Oracle数据库的部署。Oracle数据库部署在启用了Oracle DNFS协议的容器数据库(CDB)和可插拔数据库(PDB)配置中、以提高性能。此外、解决方案还提供了在C系列存储控制器上使用NFS协议设置存储网络和Storage Virtual Machine (SVM)的最佳实践。解决方案还包括有关使用NetApp SnapCenter UI工具快速备份、还原和克隆Oracle数据库的信息。
此解决方案 可解决以下使用情形:
-
在NetApp C系列存储控制器上自动部署Oracle容器数据库。
-
使用SnapCenter UI工具在C系列上保护和克隆Oracle数据库。
audience
此解决方案 适用于以下人员:
-
希望在NetApp C系列上部署Oracle的BA。
-
希望在NetApp C系列上测试Oracle工作负载的数据库解决方案架构师。
-
希望在NetApp C系列上部署和管理Oracle数据库的存储管理员。
-
希望在NetApp C系列上建立Oracle数据库的应用程序所有者。
解决方案 测试和验证环境
此解决方案的测试和验证是在实验室环境中执行的、可能与最终部署环境不匹配。请参见一节 部署注意事项的关键因素 有关详细信息 …
架构
硬件和软件组件
* 硬件 * |
||
NetApp C系列C400 |
ONTAP版本9.13.1P3 |
两个磁盘架/24个磁盘、容量为278 TiB |
用于数据库服务器的VM |
4个vCPU、16 GiB RAM |
两个Linux VM实例、用于并发部署 |
适用于SnapCenter的VM |
4个vCPU、16 GiB RAM |
一个Windows VM实例 |
软件 |
||
RedHat Linux |
RHEL Linux 8.6 (LVM)- x64 Gen2 |
已部署RedHat订阅以进行测试 |
Windows服务器 |
2022 DataCenter x64第2代 |
托管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.16.2. |
Python 3.6.8 |
实验室环境中的Oracle数据库配置
* 服务器 * |
* 数据库 * |
DB存储 |
ORA_01 |
NTAP1 (NTAP1_PDB1、NTAP1_PDB2、NTAP_PDB3) |
/u01、/u02、/u03 NFS挂载到C400卷上 |
ORA_02 |
NTAP2 (NTAP2_PDB1、NTAP2_PDB2、NTAP2_PDB3) |
/u01、/u02、/u03 NFS挂载到C400卷上 |
部署注意事项的关键因素
-
*Oracle数据库存储布局。*在此自动化Oracle部署中、我们会默认为每个数据库配置三个数据库卷、以托管Oracle二进制文件、数据和日志。卷会通过NFS以/u01 -二进制、/u02 -数据、/u03 -日志的形式挂载在Oracle数据库服务器上。在/u02和/u03挂载点上配置双控制文件、以实现冗余。
-
*部署多个数据库服务器。*自动化解决方案可以在一次运行的AnsablePlaybook中将一个Oracle容器数据库部署到多个数据库服务器。无论数据库服务器的数量如何、该操作手册的执行都保持不变。通过使用不同的数据库实例ID (Oracle SID)重复部署、您可以将多个容器数据库部署到一个VM实例。但是、请确保主机上有足够的内存来支持已部署的数据库。
-
*DNFS配置。*通过使用DNFS (自Oracle 11g起提供)、在DB VM上运行的Oracle数据库可以比本机NFS客户端驱动更多的I/O。默认情况下、Oracle自动化部署会在NFSv3上配置DNFS。
-
*在C400控制器对上进行负载平衡。*将Oracle数据库卷均匀地放置在C400控制器节点上、以平衡工作负载。控制器1上的DB1、控制器2上的DB2等。将数据库卷挂载到其本地lf地址。
-
数据库备份。 NetApp提供了一个SnapCenter软件套件、可通过用户友好的用户界面进行数据库备份、还原和克隆。NetApp建议实施此类管理工具、以实现快速(不到一分钟)的快照备份、快速(几分钟)的数据库还原和数据库克隆。
解决方案 部署
以下各节介绍了自动化Oracle 19c部署的分步过程、以及部署后Oracle数据库保护和克隆的相关信息。
部署的前提条件
Details
部署需要满足以下前提条件。
-
NetApp C系列存储控制器对会进行机架安装和堆栈、并安装和配置最新版本的ONTAP操作系统。如有必要、请参见本设置指南: "详细指南—AFF C400"
-
配置两个Linux VM作为Oracle数据库服务器。有关环境设置的详细信息、请参见上一节中的架构图。
-
配置Windows服务器以使用最新版本运行NetApp SnapCenter UI工具。有关详细信息、请参见以下链接: "安装 SnapCenter 服务器"
-
将Linux VM配置为安装了最新版本的Ansv近 和Git的Ansv可 控制器节点。有关详细信息、请参见以下链接: "NetApp解决方案 自动化入门" 在第-节中
Setup the Ansible Control Node for CLI deployments on RHEL / CentOS
或
Setup the Ansible Control Node for CLI deployments on Ubuntu / Debian
。在Ansens可能 控制器和数据库VM之间启用ssh公共/专用密钥身份验证。
-
从NetApp控制器管理员用户主目录中、克隆适用于NFS的Oracle部署自动化工具包的副本。
git clone https://bitbucket.ngage.netapp.com/scm/ns-bb/na_oracle_deploy_nfs.git
-
Stage Follows Oracle 19c installation files on DB VM /tmp/archive directory with 777 permission
installer_archives: - "LINUX.X64_193000_db_home.zip" - "p34765931_190000_Linux-x86-64.zip" - "p6880880_190000_Linux-x86-64.zip"
在适用于Oracle的C系列上配置网络和SVM
Details
本部分部署指南演示了使用ONTAP System Manager UI为采用NFS协议的Oracle工作负载在C系列控制器上设置网络和Storage Virtual Machine (SVM)的最佳实践。
-
登录到ONTAP系统管理器、查看在首次安装ONTAP集群后、是否已为广播域配置了正确分配给每个域的以太网端口。通常、集群应有广播域、管理应有广播域、数据等工作负载应有广播域。
-
在"network - Ethernet Ports"(网络-以太网端口
Link Aggregate Group
创建LACP链路聚合组端口a0a、以便在聚合组端口中的成员端口之间实现负载平衡和故障转移。C400控制器上提供了4个数据端口—e0e、e0f、e0g和e0h。 -
选择组中的以太网端口、
LACP
对于模式、和Port
用于负载分布。 -
验证已创建的LACP端口a0a和广播域
Data
正在LACP端口上运行。 -
from
Ethernet Ports`下、单击 `VLAN
在每个控制器节点上为采用NFS协议的Oracle工作负载添加VLAN。 -
通过ssh从集群管理IP登录到C系列控制器、以验证是否已正确配置网络故障转移组。ONTAP会自动创建和管理故障转移组。
HCG-NetApp-C400-E9U9::> net int failover-groups show (network interface failover-groups show) Failover Vserver Group Targets ---------------- ---------------- -------------------------------------------- Cluster Cluster HCG-NetApp-C400-E9U9a:e0c, HCG-NetApp-C400-E9U9a:e0d, HCG-NetApp-C400-E9U9b:e0c, HCG-NetApp-C400-E9U9b:e0d HCG-NetApp-C400-E9U9 Data HCG-NetApp-C400-E9U9a:a0a, HCG-NetApp-C400-E9U9a:a0a-3277, HCG-NetApp-C400-E9U9b:a0a, HCG-NetApp-C400-E9U9b:a0a-3277 Mgmt HCG-NetApp-C400-E9U9a:e0M, HCG-NetApp-C400-E9U9b:e0M 3 entries were displayed.
-
from `STORAGE - Storage VMs`下、单击+Add为Oracle创建SVM。
-
为Oracle SVM命名、请选中
Enable NFS
和Allow NFS client access
。 -
添加NFS导出策略
Default
规则。 -
在中 `NETWORK INTERFACE`下,在每个节点上填写NFS lf地址的IP地址。
-
验证适用于Oracle的SVM是否已启动/正在运行、以及NFS Lifs状态是否为活动。
-
from
STORAGE-Volumes
用于为Oracle数据库添加NFS卷的选项卡。 -
为卷命名、分配容量和性能级别。
-
在中
Access Permission`下,选择从上一步创建的默认策略。取消选中 `Enable Snapshot Copies
因为我们更喜欢使用SnapCenter创建应用程序一致的快照。 -
为每个数据库服务器创建三个数据库卷:SERVER_NAME_u01 -二进制、SERVER_NAME_u02 -数据、SERVER_NAME_u03 -日志。
数据库卷命名约定应严格遵循上述格式、以确保自动化正常工作。
至此、Oracle的C系列控制器配置完成。
自动化参数文件
Details
Ans可 通过预定义的参数执行数据库安装和配置任务。对于此Oracle自动化解决方案、有三个用户定义的参数文件需要用户输入才能执行操作手册。
-
主机—定义运行自动化操作手册的目标。
-
vars/vars.yml—用于定义应用于所有目标的变量的全局变量文件。
-
host_vars/host_name.yml—用于定义仅适用于指定目标的变量的本地变量文件。在我们的使用情形中、这些是Oracle数据库服务器。
除了这些用户定义的变量文件之外、还有多个默认变量文件包含默认参数、除非必要、否则不需要更改这些参数。以下各节介绍如何配置用户定义的变量文件。
参数文件配置
Details
-
可逆目标
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
-
本地数据库服务器
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 admin -e @vars/vars.yml
-
使用1-4的数字顺序执行一次一个操作手册。
ansible-playbook -i hosts 1-ansible_requirements.yml -u admin -e @vars/vars.yml
ansible-playbook -i hosts 2-linux_config.yml -u admin -e @vars/vars.yml
ansible-playbook -i hosts 4-oracle_config.yml -u admin -e @vars/vars.yml
-
使用标记执行0-all_playbook.yml。
ansible-playbook -i hosts 0-all_playbook.yml -u admin -e @vars/vars.yml -t ansible_requirements
ansible-playbook -i hosts 0-all_playbook.yml -u admin -e @vars/vars.yml -t linux_config
ansible-playbook -i hosts 0-all_playbook.yml -u admin -e @vars/vars.yml -t oracle_config
-
撤消环境
ansible-playbook -i hosts 5-destroy.yml -u admin -e @vars/vars.yml
执行后验证
Details
运行此操作手册后、登录到Oracle数据库服务器VM、以验证是否已安装和配置Oracle以及是否已成功创建容器数据库。以下是对DB VM ora_01或ora_02进行Oracle数据库验证的示例。
-
验证NFS挂载
[admin@ora_01 ~]$ cat /etc/fstab # # /etc/fstab # Created by anaconda on Wed Oct 18 19:43:31 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/rhel-root / xfs defaults 0 0 UUID=aff942c4-b224-4b62-807d-6a5c22f7b623 /boot xfs defaults 0 0 /dev/mapper/rhel-swap none swap defaults 0 0 /root/swapfile swap swap defaults 0 0 172.21.21.100:/ora_01_u01 /u01 nfs rw,bg,hard,vers=3,proto=tcp,timeo=600,rsize=65536,wsize=65536 0 0 172.21.21.100:/ora_01_u02 /u02 nfs rw,bg,hard,vers=3,proto=tcp,timeo=600,rsize=65536,wsize=65536 0 0 172.21.21.100:/ora_01_u03 /u03 nfs rw,bg,hard,vers=3,proto=tcp,timeo=600,rsize=65536,wsize=65536 0 0 [admin@ora_01 tmp]$ 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 18M 7.8G 1% /run tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup /dev/mapper/rhel-root 44G 28G 17G 62% / /dev/sda1 1014M 258M 757M 26% /boot tmpfs 1.6G 12K 1.6G 1% /run/user/42 tmpfs 1.6G 4.0K 1.6G 1% /run/user/1000 172.21.21.100:/ora_01_u01 50G 8.7G 42G 18% /u01 172.21.21.100:/ora_01_u02 200G 384K 200G 1% /u02 172.21.21.100:/ora_01_u03 100G 320K 100G 1% /u03 [admin@ora_02 ~]$ 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 18M 7.8G 1% /run tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup /dev/mapper/rhel-root 44G 28G 17G 63% / /dev/sda1 1014M 258M 757M 26% /boot tmpfs 1.6G 12K 1.6G 1% /run/user/42 tmpfs 1.6G 4.0K 1.6G 1% /run/user/1000 172.21.21.101:/ora_02_u01 50G 7.8G 43G 16% /u01 172.21.21.101:/ora_02_u02 200G 320K 200G 1% /u02 172.21.21.101:/ora_02_u03 100G 320K 100G 1% /u03
-
验证Oracle侦听器
[admin@ora_02 ~]$ sudo su [root@ora_02 admin]# su - oracle [oracle@ora_02 ~]$ lsnrctl status listener.ntap2 LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 29-MAY-2024 12:13:30 Copyright (c) 1991, 2022, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ora_02.cie.netapp.com)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER.NTAP2 Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production Start Date 23-MAY-2024 16:13:03 Uptime 5 days 20 hr. 0 min. 26 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/19.0.0/NTAP2/network/admin/listener.ora Listener Log File /u01/app/oracle/diag/tnslsnr/ora_02/listener.ntap2/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora_02.cie.netapp.com)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=ora_02.cie.netapp.com)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/product/19.0.0/NTAP2/admin/NTAP2/xdb_wallet))(Presentation=HTTP)(Session=RAW)) Services Summary... Service "192551f1d7e65fc3e06308b43d0a63ae.solutions.netapp.com" has 1 instance(s). Instance "NTAP2", status READY, has 1 handler(s) for this service... Service "1925529a43396002e06308b43d0a2d5a.solutions.netapp.com" has 1 instance(s). Instance "NTAP2", status READY, has 1 handler(s) for this service... Service "1925530776b76049e06308b43d0a49c3.solutions.netapp.com" has 1 instance(s). Instance "NTAP2", status READY, has 1 handler(s) for this service... Service "NTAP2.solutions.netapp.com" has 1 instance(s). Instance "NTAP2", status READY, has 1 handler(s) for this service... Service "NTAP2XDB.solutions.netapp.com" has 1 instance(s). Instance "NTAP2", status READY, has 1 handler(s) for this service... Service "ntap2_pdb1.solutions.netapp.com" has 1 instance(s). Instance "NTAP2", status READY, has 1 handler(s) for this service... Service "ntap2_pdb2.solutions.netapp.com" has 1 instance(s). Instance "NTAP2", status READY, has 1 handler(s) for this service... Service "ntap2_pdb3.solutions.netapp.com" has 1 instance(s). Instance "NTAP2", status READY, has 1 handler(s) for this service... The command completed successfully [oracle@ora_02 ~]$
-
验证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 from v$dnfs_servers; SVRNAME -------------------------------------------------------------------------------- DIRNAME -------------------------------------------------------------------------------- 172.21.21.100 /ora_01_u02 172.21.21.100 /ora_01_u03 172.21.21.100 /ora_01_u01
-
登录到Oracle Enterprise Manager Express以验证数据库。
使用SnapCenter进行Oracle备份、还原和克隆
Details
NetApp建议使用SnapCenter UI工具来管理C系列中部署的Oracle数据库。请参阅TR-4979 "借助子系统装载的FSx ONTAP、在基于AWS的VMware Cloud中简化自我管理Oracle" 部分。 Oracle backup, restore, and clone with SnapCenter
有关设置SnapCenter以及执行数据库备份、还原和克隆工作流的详细信息。
从何处查找追加信息
要了解有关本文档中所述信息的更多信息,请查看以下文档和 / 或网站: