TR-4986:《在采用iSCSI的Amazon FSx ONTAP上简化的自动化Oracle部署》
NetApp公司Allen Cao、Niyaz Mohamed
本解决方案提供了有关在Amazon FSx ONTAP中作为主数据库存储自动部署和保护Oracle的概述和详细信息、其中、iSCSI协议和Oracle数据库配置为在使用Oracle ASM作为卷管理器的独立重新启动中进行。
目的
Amazon FSx ONTAP是一项存储服务、支持您在AWS云中启动和运行完全托管的NetApp ONTAP文件系统。它提供了NetApp文件系统的熟悉特性、性能、功能和API、并具有完全托管的AWS服务的灵活性、可扩展性和精简性。它支持您在AWS云中运行要求最严苛的数据库工作负载、例如Oracle、让您高枕无忧。
本文档演示了如何使用Ans可 自动化在Amazon FSx ONTAP文件系统中简化Oracle数据库的部署。Oracle数据库部署在独立重新启动配置中、使用iSCSI协议进行数据访问、使用Oracle ASM进行数据库存储磁盘管理。它还提供了有关使用NetApp SnapCenter UI工具在AWS云中执行高效存储数据库操作的Oracle数据库备份、还原和克隆的信息。
此解决方案 可解决以下使用情形:
-
在Amazon FSx ONTAP文件系统上自动部署Oracle数据库
-
使用NetApp SnapCenter工具在Amazon FSx ONTAP文件系统上执行Oracle数据库备份和还原
-
使用NetApp SnapCenter工具在Amazon FSx ONTAP文件系统上为开发/测试或其他使用情形创建Oracle数据库克隆
audience
此解决方案 适用于以下人员:
-
希望在Amazon FSx ONTAP文件系统上部署Oracle的数据库开发人员。
-
希望在Amazon FSx ONTAP文件系统上测试Oracle工作负载的数据库解决方案架构师。
-
希望在Amazon FSx ONTAP文件系统上部署和管理Oracle数据库的存储管理员。
-
希望在Amazon FSx ONTAP文件系统上建立Oracle数据库的应用程序所有者。
解决方案 测试和验证环境
此解决方案的测试和验证是在实验室环境中执行的、可能与最终部署环境不匹配。请参见一节 部署注意事项的关键因素 有关详细信息 …
架构
硬件和软件组件
* 硬件 * |
||
Amazon FSx ONTAP存储 |
AWS提供的当前版本 |
一个FSX HA集群位于同一VPC和可用性区域中 |
用于计算的EC2实例 |
t2.xlarge/4vCPU/16G |
两个EC2 T2大型EC2实例、用于并发部署 |
软件 |
||
RedHat Linux |
rell-8.6、4.18.0-372.9.1.el8.x86_64内核 |
已部署RedHat订阅以进行测试 |
Windows服务器 |
2022标准版、10.0.20348内部版本20348 |
托管SnapCenter服务器 |
Oracle网格基础架构 |
版本19.18 |
已应用RU修补程序p34762026_190000_Linux-x86-64.zip |
Oracle 数据库 |
版本19.18 |
已应用RU修补程序p34765931_190000_Linux-x86-64.zip |
Oracle OPatch |
版本12.2.0.1.36 |
最新修补程序p6880880_190000_Linux-x86-64.zip |
SnapCenter 服务器 |
版本4.9P1 |
工作组部署 |
打开JDK |
版本java-1.8.0-OpenJDK.x86_64 |
DB VM上的SnapCenter插件要求 |
实验室环境中的Oracle数据库配置
* 服务器 * |
* 数据库 * |
DB存储 |
ORA_01 |
NTAP1 (NTAP1_PDB1、NTAP1_PDB2、NTAP_PDB3) |
Amazon FSx ONTAP文件系统上的iSCSI LUN |
ORA_02 |
NTAP2 (NTAP2_PDB1、NTAP2_PDB2、NTAP2_PDB3) |
Amazon FSx ONTAP文件系统上的iSCSI LUN |
部署注意事项的关键因素
-
*Oracle数据库存储布局。*在此自动化Oracle部署中、我们默认配置四个数据库卷来托管Oracle二进制文件、数据和日志。卷中的一个LUN分配给Oracle二进制文件。然后、我们将使用数据和日志LUN创建两个ASM磁盘组。在+data ASM磁盘组中、我们配置两个数据卷、其中一个卷包含两个LUN。在+logs ASM磁盘组中、我们会在一个日志卷中创建两个LUN。一般来说、在一个ONTAP卷中部署多个LUN可提高性能。
-
*部署多个数据库服务器。*自动化解决方案可以在一次运行的AnsablePlaybook中将一个Oracle容器数据库部署到多个数据库服务器。无论数据库服务器的数量如何、该操作手册的执行都保持不变。您可以将多个容器数据库部署到具有不同数据库实例ID (Oracle SID)的单个EC2实例。但是、请确保主机上有足够的内存来支持已部署的数据库。
-
* iSCSI配置。* EC2实例数据库服务器使用iSCSI协议连接到FSX存储。EC2实例通常使用一个网络接口或ENI进行部署。单个NIC接口可同时传输iSCSI和应用程序流量。请务必通过仔细分析Oracle AWR报告来衡量Oracle数据库峰值I/O吞吐量需求、以便选择既满足应用程序流量吞吐量要求又符合iSCSI流量吞吐量要求的正确EC2计算实例。此外、AWS EC2通常会将每个TCP流量限制为5 Gbps。每个iSCSI路径可提供5 Gbps (625 Mbps)的带宽、要满足更高的吞吐量要求、可能需要多个iSCSI连接。
-
*要用于创建的每个Oracle ASM磁盘组的Oracle ASM冗余级别。*由于Amazon FSx ONTAP已启用HA、可在集群磁盘级别保护数据、因此应使用
External Redundancy
,表示选项不允许Oracle ASM镜像磁盘组的内容。 -
数据库备份。 NetApp提供了一个SnapCenter软件套件、可通过用户友好的用户界面进行数据库备份、还原和克隆。NetApp建议实施此类管理工具、以实现快速(不到一分钟)的快照备份、快速(几分钟)的数据库还原和数据库克隆。
解决方案 部署
以下各节提供了在使用直接挂载的数据库LUN的Amazon FSx ONTAP文件系统上自动部署和保护Oracle 19c的分步过程、这些LUN通过iSCSI传输到EC2实例VM、采用Oracle ASM作为数据库卷管理器的单节点重新启动配置。
部署的前提条件
Details
部署需要满足以下前提条件。
-
已设置AWS帐户、并已在您的AWS帐户中创建必要的VPC和网段。
-
从AWS EC2控制台中、将EC2 Linux实例部署为Oracle数据库服务器。为EC2用户启用SSH专用/公共密钥身份验证。有关环境设置的详细信息、请参见上一节中的架构图。另请查看 "Linux实例用户指南" 有关详细信息 …
-
从AWS FSx控制台中、配置满足要求的Amazon FSx ONTAP文件系统。查看文档"正在创建FSx ONTAP文件系统"、了解分步说明。
-
可以使用以下Terraform自动化工具包执行步骤2和步骤3、该工具包会创建一个名为的EC2实例
ora_01
和名为的FSX文件系统fsx_01
。执行前、请仔细阅读该说明并根据您的环境更改变量。您可以根据自己的部署要求轻松修改此模板。git clone https://github.com/NetApp-Automation/na_aws_fsx_ec2_deploy.git
-
将EC2 Linux实例配置为安装了最新版本的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
。 -
配置Windows服务器以使用最新版本运行NetApp SnapCenter UI工具。有关详细信息、请参见以下链接: "安装 SnapCenter 服务器"
-
克隆一份适用于iSCSI的NetApp Oracle部署自动化工具包副本。
git clone https://bitbucket.ngage.netapp.com/scm/ns-bb/na_oracle_deploy_iscsi.git
-
EC2实例/tmp/archive目录中的Oracle 19c安装文件后的阶段。
installer_archives: - "LINUX.X64_193000_grid_home.zip" - "p34762026_190000_Linux-x86-64.zip" - "LINUX.X64_193000_db_home.zip" - "p34765931_190000_Linux-x86-64.zip" - "p6880880_190000_Linux-x86-64.zip"
请确保已在Oracle VM根卷中至少分配50G、以便有足够的空间来暂存Oracle安装文件。 -
观看以下视频:
在采用iSCSI的Amazon FSx ONTAP上简化和自动化Oracle部署
自动化参数文件
Details
Ans可 通过预定义的参数执行数据库安装和配置任务。对于此Oracle自动化解决方案、有三个用户定义的参数文件需要用户输入才能执行操作手册。
-
主机—定义运行自动化操作手册的目标。
-
vars/vars.yml—用于定义应用于所有目标的变量的全局变量文件。
-
host_vars/host_name.yml—用于定义仅适用于指定目标的变量的本地变量文件。在我们的使用情形中、这些是Oracle数据库服务器。
除了这些用户定义的变量文件之外、还有多个默认变量文件包含默认参数、除非必要、否则不需要更改这些参数。以下各节介绍如何配置用户定义的变量文件。
参数文件配置
Details
-
可逆目标
hosts
文件配置:# Enter Amazon FSx ONTAP management IP address [ontap] 172.16.9.32 # Enter name for ec2 instance (not default IP address naming) to be deployed one by one, follow by ec2 instance IP address, and ssh private key of ec2-user for the instance. [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 global user configurable variables ###### ###### Consolidate all variables from ONTAP, linux and oracle ###### ############################################################################################################# ############################################################################################################# ###### ONTAP env specific config variables ###### ############################################################################################################# # Enter the supported ONTAP platform: on-prem, aws-fsx. ontap_platform: aws-fsx # Enter ONTAP cluster management user credentials username: "fsxadmin" password: "xxxxxxxx" ############################################################################################################# ### Linux env specific config variables ### ############################################################################################################# # Enter RHEL subscription to enable repo redhat_sub_username: xxxxxxxx redhat_sub_password: "xxxxxxxx" ############################################################################################################# ### Oracle DB env specific config variables ### ############################################################################################################# # Enter Database domain name db_domain: solutions.netapp.com # Enter 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
执行操作手册
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. 3-ontap_config.yml - configure ONTAP svm/volumes/luns for Oracle database and grant DB server access to luns. 4-oracle_config.yml - install and configure Oracle on DB servers for grid infrastructure 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 ec2-user -e @vars/vars.yml
-
使用1-4的数字顺序执行一次一个操作手册。
ansible-playbook -i hosts 1-ansible_requirements.yml -u ec2-user -e @vars/vars.yml
ansible-playbook -i hosts 2-linux_config.yml -u ec2-user -e @vars/vars.yml
ansible-playbook -i hosts 3-ontap_config.yml -u ec2-user -e @vars/vars.yml
ansible-playbook -i hosts 4-oracle_config.yml -u ec2-user -e @vars/vars.yml
-
使用标记执行0-all_playbook.yml。
ansible-playbook -i hosts 0-all_playbook.yml -u ec2-user -e @vars/vars.yml -t ansible_requirements
ansible-playbook -i hosts 0-all_playbook.yml -u ec2-user -e @vars/vars.yml -t linux_config
ansible-playbook -i hosts 0-all_playbook.yml -u ec2-user -e @vars/vars.yml -t ontap_config
ansible-playbook -i hosts 0-all_playbook.yml -u ec2-user -e @vars/vars.yml -t oracle_config
-
撤消环境
ansible-playbook -i hosts 5-destroy.yml -u ec2-user -e @vars/vars.yml
执行后验证
Details
运行该操作手册后、以Oracle用户身份登录到Oracle数据库服务器、以验证是否已成功创建Oracle网格基础架构和数据库。以下是在主机ora_01上验证Oracle数据库的示例。
-
验证EC2实例上的Oracle容器数据库
[admin@ansiblectl na_oracle_deploy_iscsi]$ ssh -i ora_01.pem ec2-user@172.30.15.40 Last login: Fri Dec 8 17:14:21 2023 from 10.61.180.18 [ec2-user@ip-172-30-15-40 ~]$ uname -a Linux ip-172-30-15-40.ec2.internal 4.18.0-372.9.1.el8.x86_64 #1 SMP Fri Apr 15 22:12:19 EDT 2022 x86_64 x86_64 x86_64 GNU/Linux [ec2-user@ip-172-30-15-40 ~]$ sudo su [root@ip-172-30-15-40 ec2-user]# su - oracle Last login: Fri Dec 8 16:25:52 UTC 2023 on pts/0 [oracle@ip-172-30-15-40 ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Fri Dec 8 18:18:20 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 --------- -------------------- ------------ 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 -------------------------------------------------------------------------------- +DATA/NTAP1/DATAFILE/system.257.1155055419 +DATA/NTAP1/DATAFILE/sysaux.258.1155055463 +DATA/NTAP1/DATAFILE/undotbs1.259.1155055489 +DATA/NTAP1/86B637B62FE07A65E053F706E80A27CA/DATAFILE/system.266.1155056241 +DATA/NTAP1/86B637B62FE07A65E053F706E80A27CA/DATAFILE/sysaux.267.1155056241 +DATA/NTAP1/DATAFILE/users.260.1155055489 +DATA/NTAP1/86B637B62FE07A65E053F706E80A27CA/DATAFILE/undotbs1.268.1155056241 +DATA/NTAP1/0C03AAFA7C6FD2E5E063280F1EACFBE0/DATAFILE/system.272.1155057059 +DATA/NTAP1/0C03AAFA7C6FD2E5E063280F1EACFBE0/DATAFILE/sysaux.273.1155057059 +DATA/NTAP1/0C03AAFA7C6FD2E5E063280F1EACFBE0/DATAFILE/undotbs1.271.1155057059 +DATA/NTAP1/0C03AAFA7C6FD2E5E063280F1EACFBE0/DATAFILE/users.275.1155057075 NAME -------------------------------------------------------------------------------- +DATA/NTAP1/0C03AC0089ACD352E063280F1EAC12BD/DATAFILE/system.277.1155057075 +DATA/NTAP1/0C03AC0089ACD352E063280F1EAC12BD/DATAFILE/sysaux.278.1155057075 +DATA/NTAP1/0C03AC0089ACD352E063280F1EAC12BD/DATAFILE/undotbs1.276.1155057075 +DATA/NTAP1/0C03AC0089ACD352E063280F1EAC12BD/DATAFILE/users.280.1155057091 +DATA/NTAP1/0C03ACEABA54D386E063280F1EACE573/DATAFILE/system.282.1155057091 +DATA/NTAP1/0C03ACEABA54D386E063280F1EACE573/DATAFILE/sysaux.283.1155057091 +DATA/NTAP1/0C03ACEABA54D386E063280F1EACE573/DATAFILE/undotbs1.281.1155057091 +DATA/NTAP1/0C03ACEABA54D386E063280F1EACE573/DATAFILE/users.285.1155057105 19 rows selected. SQL> select name from v$controlfile; NAME -------------------------------------------------------------------------------- +DATA/NTAP1/CONTROLFILE/current.261.1155055529 +LOGS/NTAP1/CONTROLFILE/current.256.1155055529 SQL> select member from v$logfile; MEMBER -------------------------------------------------------------------------------- +DATA/NTAP1/ONLINELOG/group_3.264.1155055531 +LOGS/NTAP1/ONLINELOG/group_3.259.1155055539 +DATA/NTAP1/ONLINELOG/group_2.263.1155055531 +LOGS/NTAP1/ONLINELOG/group_2.257.1155055539 +DATA/NTAP1/ONLINELOG/group_1.262.1155055531 +LOGS/NTAP1/ONLINELOG/group_1.258.1155055539 6 rows selected. SQL> exit Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.18.0.0.0
-
验证Oracle侦听器。
[oracle@ip-172-30-15-40 ~]$ lsnrctl status listener LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 08-DEC-2023 18:20:24 Copyright (c) 1991, 2022, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ip-172-30-15-40.ec2.internal)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production Start Date 08-DEC-2023 16:26:09 Uptime 0 days 1 hr. 54 min. 14 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/19.0.0/grid/network/admin/listener.ora Listener Log File /u01/app/oracle/diag/tnslsnr/ip-172-30-15-40/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ip-172-30-15-40.ec2.internal)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=ip-172-30-15-40.ec2.internal)(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 "+ASM" has 1 instance(s). Instance "+ASM", status READY, has 1 handler(s) for this service... Service "+ASM_DATA" has 1 instance(s). Instance "+ASM", status READY, has 1 handler(s) for this service... Service "+ASM_LOGS" has 1 instance(s). Instance "+ASM", status READY, has 1 handler(s) for this service... Service "0c03aafa7c6fd2e5e063280f1eacfbe0.solutions.netapp.com" has 1 instance(s). Instance "NTAP1", status READY, has 1 handler(s) for this service... Service "0c03ac0089acd352e063280f1eac12bd.solutions.netapp.com" has 1 instance(s). Instance "NTAP1", status READY, has 1 handler(s) for this service... Service "0c03aceaba54d386e063280f1eace573.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@ip-172-30-15-40 ~]$ asm [oracle@ip-172-30-15-40 ~]$ crsctl check has CRS-4638: Oracle High Availability Services is online [oracle@ip-172-30-15-40 ~]$ crsctl stat res -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.DATA.dg ONLINE ONLINE ip-172-30-15-40 STABLE ora.LISTENER.lsnr ONLINE ONLINE ip-172-30-15-40 STABLE ora.LOGS.dg ONLINE ONLINE ip-172-30-15-40 STABLE ora.asm ONLINE ONLINE ip-172-30-15-40 Started,STABLE ora.ons OFFLINE OFFLINE ip-172-30-15-40 STABLE -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.cssd 1 ONLINE ONLINE ip-172-30-15-40 STABLE ora.diskmon 1 OFFLINE OFFLINE STABLE ora.driver.afd 1 ONLINE ONLINE ip-172-30-15-40 STABLE ora.evmd 1 ONLINE ONLINE ip-172-30-15-40 STABLE ora.ntap1.db 1 ONLINE ONLINE ip-172-30-15-40 Open,HOME=/u01/app/o racle/product/19.0.0 /NTAP1,STABLE --------------------------------------------------------------------------------
-
验证Oracle ASM。
[oracle@ip-172-30-15-40 ~]$ asmcmd ASMCMD> lsdg State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED EXTERN N 512 512 4096 4194304 163840 155376 0 155376 0 N DATA/ MOUNTED EXTERN N 512 512 4096 4194304 81920 80972 0 80972 0 N LOGS/ ASMCMD> lsdsk Path AFD:ORA_01_DAT1_01 AFD:ORA_01_DAT1_03 AFD:ORA_01_DAT2_02 AFD:ORA_01_DAT2_04 AFD:ORA_01_LOGS_01 AFD:ORA_01_LOGS_02 ASMCMD> afd_state ASMCMD-9526: The AFD state is 'LOADED' and filtering is 'ENABLED' on host 'ip-172-30-15-40.ec2.internal' ASMCMD> exit
-
登录到Oracle Enterprise Manager Express以验证数据库。
使用SnapCenter进行Oracle备份、还原和克隆
Details
请参阅TR-4979 "借助子系统装载的FSx ONTAP、在基于AWS的VMware Cloud中简化自我管理Oracle" 部分。 Oracle backup, restore, and clone with SnapCenter
有关设置SnapCenter以及执行数据库备份、还原和克隆工作流的详细信息。
从何处查找追加信息
要了解有关本文档中所述信息的更多信息,请查看以下文档和 / 或网站:
-
Amazon FSx ONTAP
-
Amazon EC2
-
在安装新数据库的情况下为独立服务器安装Oracle网格基础架构
-
使用响应文件安装和配置Oracle数据库
-
将Red Hat Enterprise Linux 8.2与ONTAP结合使用