Skip to main content
NetApp Solutions
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

TR-4965:《使用iSCSI/ASM在AWS FSX/EC2中部署和保护Oracle数据库》

贡献者

NetApp公司Allen Cao、Niyaz Mohamed

目的

ASM (Automatic Storage Management、自动存储管理)是许多Oracle安装中常用的Oracle存储卷管理器。这也是Oracle建议的存储管理解决方案。它提供了传统卷管理器和文件系统的替代方案。自Oracle 11g版以来、ASM一直采用网格基础架构而非数据库打包。因此、要在不使用RAC的情况下使用Oracle ASM进行存储管理、您必须在独立服务器中安装Oracle网格基础架构、也称为Oracle Restart。这样做无疑会增加Oracle数据库部署的复杂性。但是、顾名思义、在以重新启动模式部署Oracle时、出现故障的Oracle服务会由网格基础架构自动重新启动、或者在主机重新启动后无需用户干预、从而提供一定程度的高可用性或HA功能。

在本文档中、我们将演示如何在使用EC2计算实例的Amazon FSX for ONTAP 存储环境中部署采用iSCSI协议的Oracle数据库和Oracle ASM。我们还演示了如何通过NetApp BlueXP控制台使用NetApp SnapCenter 服务来备份、还原和克隆Oracle数据库、以便在AWS公共云中进行开发/测试或其他存储效率数据库操作用例。

此解决方案 可解决以下使用情形:

  • 在Amazon FSX中部署Oracle数据库、用于使用iSCSI/ASM的ONTAP 存储和EC2计算实例

  • 使用iSCSI/ASM在公共AWS云中测试和验证Oracle工作负载

  • 测试和验证AWS中部署的Oracle数据库重新启动功能

audience

此解决方案 适用于以下人员:

  • 希望使用iSCSI/ASM在AWS公共云中部署Oracle的DBA。

  • 一名数据库解决方案 架构师、希望在AWS公共云中测试Oracle工作负载。

  • 希望部署和管理部署到AWS FSX存储的Oracle数据库的存储管理员。

  • 希望在AWS FSX/EC2中建立Oracle数据库的应用程序所有者。

解决方案 测试和验证环境

此解决方案 的测试和验证是在AWS FSX和EC2环境中执行的、该环境可能与最终部署环境不匹配。有关详细信息,请参见一节 [Key Factors for Deployment Consideration]

架构

此图详细展示了AWS公共云中使用iSCSI和ASM的Oracle部署配置。

硬件和软件组件

* 硬件 *

FSX ONTAP 存储

AWS提供的当前版本

一个FSX HA集群位于同一VPC和可用性区域中

用于计算的EC2实例

t2.xlarge/4vCPU/16G

两个EC2 t2 xlarge EC2实例、一个用作主数据库服务器、另一个用作克隆数据库服务器

软件

RedHat Linux

rhel-8.6.0_hvm-20220503-x86_64-2-Hourly2-gp2

已部署RedHat订阅以进行测试

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 服务

version

v2.3.1.2324

部署注意事项的关键因素

  • * EC2计算实例。*在这些测试和验证中、我们对Oracle数据库计算实例使用了AWS EC2 T2.xlarge实例类型。NetApp建议在生产部署中使用M5类型的EC2实例作为Oracle的计算实例、因为它针对数据库工作负载进行了优化。您需要根据实际工作负载要求根据vCPU数量和RAM量适当调整EC2实例的大小。

  • * FSX存储HA集群单区域或多区域部署。*在这些测试和验证中、我们在一个AWS可用性区域中部署了一个FSX HA集群。对于生产部署、NetApp建议在两个不同的可用性区域中部署一个FSX HA对。FSX HA集群始终配置在一个HA对中、该HA对在一对主动-被动文件系统中进行同步镜像、以提供存储级别的冗余。多区域部署可在单个AWS区域发生故障时进一步提高高可用性。

  • * FSX存储集群规模估算。*适用于ONTAP 存储文件系统的Amazon FSX可提供高达160、000个原始SSD IOPS、高达4 Gbps吞吐量以及最大192 TiB容量。但是、您可以根据部署时的实际要求、根据已配置的IOPS、吞吐量和存储限制(最小1、024 GiB)来调整集群的大小。可以动态调整容量、而不会影响应用程序可用性。

  • * Oracle数据和日志布局。*在测试和验证中、我们分别为数据和日志部署了两个ASM磁盘组。在+data ASM磁盘组中、我们在一个数据卷中配置了四个LUN。在+logs ASM磁盘组中、我们在一个日志卷中配置了两个LUN。通常、在适用于ONTAP 的Amazon FSX卷中部署多个LUN可提高性能。

  • * iSCSI配置。* EC2实例数据库服务器使用iSCSI协议连接到FSX存储。EC2实例通常使用一个网络接口或ENI进行部署。单个NIC接口可同时传输iSCSI和应用程序流量。请务必通过仔细分析Oracle AWR报告来衡量Oracle数据库峰值I/O吞吐量需求、以便选择既满足应用程序流量吞吐量要求又符合iSCSI流量吞吐量要求的正确EC2计算实例。NetApp还建议为正确配置多路径的两个FSX iSCSI端点分配四个iSCSI连接。

  • *要为创建的每个Oracle ASM磁盘组使用的Oracle ASM冗余级别。*由于FSX已在FSX集群级别镜像存储、因此应使用外部冗余、这意味着该选项不允许Oracle ASM镜像磁盘组的内容。

  • 数据库备份。 NetApp提供SaaS版本的SnapCenter 软件服务、用于在云中备份、还原和克隆数据库、该服务可通过NetApp BlueXP控制台UI访问。NetApp建议实施此类服务、以实现快速(不到一分钟)的快照备份、快速(几分钟)的数据库还原和数据库克隆。

解决方案 部署

下一节介绍了分步部署过程。

部署的前提条件

Details

部署需要满足以下前提条件。

  1. 已设置AWS帐户、并已在您的AWS帐户中创建必要的VPC和网段。

  2. 在AWS EC2控制台中、您必须部署两个EC2 Linux实例、一个用作主Oracle数据库服务器、另一个用作可选的克隆目标数据库服务器。有关环境设置的详细信息、请参见上一节中的架构图。另请查看 "Linux实例用户指南" 有关详细信息 …​

  3. 在AWS EC2控制台中、部署适用于ONTAP 存储HA集群的Amazon FSX以托管Oracle数据库卷。如果您不熟悉FSX存储的部署、请参见相关文档 "为ONTAP 文件系统创建FSX" 了解分步说明。

  4. 可以使用以下Terraform自动化工具包执行步骤2和步骤3、该工具包会创建一个名为的EC2实例 ora_01 和名为的FSX文件系统 fsx_01。执行前、请仔细阅读该说明并根据您的环境更改变量。

    git clone https://github.com/NetApp-Automation/na_aws_fsx_ec2_deploy.git
备注 确保您已在EC2实例根卷中至少分配50G、以便有足够的空间来暂存Oracle安装文件。

EC2实例内核配置

Details

在配置了前提条件的情况下、以EC2-user身份登录到EC2实例、并使用sudo to root user配置Linux内核以进行Oracle安装。

  1. 创建暂存目录 /tmp/archive 文件夹并设置 777 权限。

    mkdir /tmp/archive
    
    chmod 777 /tmp/archive
  2. 将Oracle二进制安装文件和其他所需的rpm文件下载并暂存到 /tmp/archive 目录。

    请参见以下要在中说明的安装文件列表 /tmp/archive 在EC2实例上。

    [ec2-user@ip-172-30-15-58 ~]$ ls -l /tmp/archive
    total 10537316
    -rw-rw-r--. 1 ec2-user ec2-user      19112 Mar 21 15:57 compat-libcap1-1.10-7.el7.x86_64.rpm
    -rw-rw-r--  1 ec2-user ec2-user 3059705302 Mar 21 22:01 LINUX.X64_193000_db_home.zip
    -rw-rw-r--  1 ec2-user ec2-user 2889184573 Mar 21 21:09 LINUX.X64_193000_grid_home.zip
    -rw-rw-r--. 1 ec2-user ec2-user     589145 Mar 21 15:56 netapp_linux_unified_host_utilities-7-1.x86_64.rpm
    -rw-rw-r--. 1 ec2-user ec2-user      31828 Mar 21 15:55 oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm
    -rw-rw-r--  1 ec2-user ec2-user 2872741741 Mar 21 22:31 p34762026_190000_Linux-x86-64.zip
    -rw-rw-r--  1 ec2-user ec2-user 1843577895 Mar 21 22:32 p34765931_190000_Linux-x86-64.zip
    -rw-rw-r--  1 ec2-user ec2-user  124347218 Mar 21 22:33 p6880880_190000_Linux-x86-64.zip
    -rw-r--r--  1 ec2-user ec2-user     257136 Mar 22 16:25 policycoreutils-python-utils-2.9-9.el8.noarch.rpm
  3. 安装Oracle 19c预安装RPM、以满足大多数内核配置要求。

    yum install /tmp/archive/oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm
  4. 下载并安装缺少的 compat-libcap1 在Linux 8中。

    yum install /tmp/archive/compat-libcap1-1.10-7.el7.x86_64.rpm
  5. 从NetApp下载并安装NetApp主机实用程序。

    yum install /tmp/archive/netapp_linux_unified_host_utilities-7-1.x86_64.rpm
  6. 安装 policycoreutils-python-utils、在EC2实例中不可用。

    yum install /tmp/archive/policycoreutils-python-utils-2.9-9.el8.noarch.rpm
  7. 安装Open JDK 1.8版。

    yum install java-1.8.0-openjdk.x86_64
  8. 安装iSCSI启动程序实用程序。

    yum install iscsi-initiator-utils
  9. 安装 sg3_utils

    yum install sg3_utils
  10. 安装 device-mapper-multipath

    yum install device-mapper-multipath
  11. 在当前系统中禁用透明页面。

    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    echo never > /sys/kernel/mm/transparent_hugepage/defrag

    在中添加以下行 /etc/rc.local 以禁用 transparent_hugepage 重新启动后:

      # Disable transparent hugepages
              if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
                echo never > /sys/kernel/mm/transparent_hugepage/enabled
              fi
              if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
                echo never > /sys/kernel/mm/transparent_hugepage/defrag
              fi
  12. 通过更改禁用SELinux SELINUX=enforcing to SELINUX=disabled。要使更改生效、必须重新启动主机。

    vi /etc/sysconfig/selinux
  13. 将以下行添加到 limit.conf 设置不带引号的文件描述符限制和堆栈大小 " "

    vi /etc/security/limits.conf
      "*               hard    nofile          65536"
      "*               soft    stack           10240"
  14. 按照以下说明向EC2实例添加交换空间: "如何使用交换文件分配内存以用作Amazon EC2实例中的交换空间?" 要添加的确切空间量取决于RAM大小、最高可达16G。

  15. 更改 node.session.timeo.replacement_timeout 在中 iscsi.conf 配置文件的时间从120秒到5秒不等。

    vi /etc/iscsi/iscsid.conf
  16. 在EC2实例上启用并启动iSCSI服务。

    systemctl enable iscsid
    systemctl start iscsid
  17. 检索要用于数据库LUN映射的iSCSI启动程序地址。

    cat /etc/iscsi/initiatorname.iscsi
  18. 添加要用于ASM sysASM组的ASM组。

    groupadd asm
  19. 修改Oracle用户以将ASM添加为二级组(Oracle用户应在安装Oracle预安装RPM后创建)。

    usermod -a -G asm oracle
  20. 停止并禁用处于活动状态的Linux防火墙。

    systemctl stop firewalld
    systemctl disable firewalld
  21. 重新启动EC2实例。

配置数据库卷和LUN并将其映射到EC2实例主机

Details

使用FSx集群管理IP通过ssh以fsxadmin用户身份登录FSx集群、从命令行配置三个卷、以托管Oracle数据库二进制文件、数据和日志文件。

  1. 以fsxadmin用户身份通过SSH登录到FSX集群。

    ssh fsxadmin@172.30.15.53
  2. 执行以下命令为Oracle二进制文件创建卷。

    vol create -volume ora_01_biny -aggregate aggr1 -size 50G -state online  -type RW -snapshot-policy none -tiering-policy snapshot-only
  3. 执行以下命令为Oracle数据创建卷。

    vol create -volume ora_01_data -aggregate aggr1 -size 100G -state online  -type RW -snapshot-policy none -tiering-policy snapshot-only
  4. 执行以下命令为Oracle日志创建卷。

    vol create -volume ora_01_logs -aggregate aggr1 -size 100G -state online  -type RW -snapshot-policy none -tiering-policy snapshot-only
  5. 在数据库二进制卷中创建二进制LUN。

    lun create -path /vol/ora_01_biny/ora_01_biny_01 -size 40G -ostype linux
  6. 在数据库数据卷中创建数据LUN。

    lun create -path /vol/ora_01_data/ora_01_data_01 -size 20G -ostype linux
    
    lun create -path /vol/ora_01_data/ora_01_data_02 -size 20G -ostype linux
    
    lun create -path /vol/ora_01_data/ora_01_data_03 -size 20G -ostype linux
    
    lun create -path /vol/ora_01_data/ora_01_data_04 -size 20G -ostype linux
  7. 在数据库日志卷中创建日志LUN。

    lun create -path /vol/ora_01_logs/ora_01_logs_01 -size 40G -ostype linux
    
    lun create -path /vol/ora_01_logs/ora_01_logs_02 -size 40G -ostype linux
  8. 使用从上述EC2内核配置的步骤14中检索到的启动程序为EC2实例创建一个igroup。

    igroup create -igroup ora_01 -protocol iscsi -ostype linux -initiator iqn.1994-05.com.redhat:f65fed7641c2
  9. 将LUN映射到上述创建的igroup。按顺序增加卷中每个附加LUN的LUN ID。

    lun map -path /vol/ora_01_biny/ora_01_biny_01 -igroup ora_01 -vserver svm_ora -lun-id 0
    lun map -path /vol/ora_01_data/ora_01_data_01 -igroup ora_01 -vserver svm_ora -lun-id 1
    lun map -path /vol/ora_01_data/ora_01_data_02 -igroup ora_01 -vserver svm_ora -lun-id 2
    lun map -path /vol/ora_01_data/ora_01_data_03 -igroup ora_01 -vserver svm_ora -lun-id 3
    lun map -path /vol/ora_01_data/ora_01_data_04 -igroup ora_01 -vserver svm_ora -lun-id 4
    lun map -path /vol/ora_01_logs/ora_01_logs_01 -igroup ora_01 -vserver svm_ora -lun-id 5
    lun map -path /vol/ora_01_logs/ora_01_logs_02 -igroup ora_01 -vserver svm_ora -lun-id 6
  10. 验证LUN映射。

    mapping show

    这将返回:

    FsxId02ad7bf3476b741df::> mapping show
      (lun mapping show)
    Vserver    Path                                      Igroup   LUN ID  Protocol
    ---------- ----------------------------------------  -------  ------  --------
    svm_ora    /vol/ora_01_biny/ora_01_biny_01           ora_01        0  iscsi
    svm_ora    /vol/ora_01_data/ora_01_data_01           ora_01        1  iscsi
    svm_ora    /vol/ora_01_data/ora_01_data_02           ora_01        2  iscsi
    svm_ora    /vol/ora_01_data/ora_01_data_03           ora_01        3  iscsi
    svm_ora    /vol/ora_01_data/ora_01_data_04           ora_01        4  iscsi
    svm_ora    /vol/ora_01_logs/ora_01_logs_01           ora_01        5  iscsi
    svm_ora    /vol/ora_01_logs/ora_01_logs_02           ora_01        6  iscsi

数据库存储配置

Details

现在、为EC2实例主机上的Oracle网格基础架构和数据库安装导入并设置FSX存储。

  1. 以EC2用户身份使用SSH密钥和EC2实例IP地址通过SSH登录到EC2实例。

    ssh -i ora_01.pem ec2-user@172.30.15.58
  2. 使用任一SVM iSCSI IP地址发现FSX iSCSI端点。然后、更改为您的环境专用门户地址。

    sudo iscsiadm iscsiadm --mode discovery --op update --type sendtargets --portal 172.30.15.51
  3. 登录到每个目标以建立iSCSI会话。

    sudo iscsiadm --mode node -l all

    命令的预期输出为:

    [ec2-user@ip-172-30-15-58 ~]$ sudo iscsiadm --mode node -l all
    Logging in to [iface: default, target: iqn.1992-08.com.netapp:sn.1f795e65c74911edb785affbf0a2b26e:vs.3, portal: 172.30.15.51,3260]
    Logging in to [iface: default, target: iqn.1992-08.com.netapp:sn.1f795e65c74911edb785affbf0a2b26e:vs.3, portal: 172.30.15.13,3260]
    Login to [iface: default, target: iqn.1992-08.com.netapp:sn.1f795e65c74911edb785affbf0a2b26e:vs.3, portal: 172.30.15.51,3260] successful.
    Login to [iface: default, target: iqn.1992-08.com.netapp:sn.1f795e65c74911edb785affbf0a2b26e:vs.3, portal: 172.30.15.13,3260] successful.
  4. 查看并验证活动iSCSI会话的列表。

    sudo iscsiadm --mode session

    返回iSCSI会话。

    [ec2-user@ip-172-30-15-58 ~]$ sudo iscsiadm --mode session
    tcp: [1] 172.30.15.51:3260,1028 iqn.1992-08.com.netapp:sn.1f795e65c74911edb785affbf0a2b26e:vs.3 (non-flash)
    tcp: [2] 172.30.15.13:3260,1029 iqn.1992-08.com.netapp:sn.1f795e65c74911edb785affbf0a2b26e:vs.3 (non-flash)
  5. 验证LUN是否已导入到主机中。

    sudo sanlun lun show

    此操作将从FSX返回Oracle LUN的列表。

    [ec2-user@ip-172-30-15-58 ~]$ sudo sanlun lun show
    controller(7mode/E-Series)/                                   device          host                  lun
    vserver(cDOT/FlashRay)        lun-pathname                    filename        adapter    protocol   size    product
    
    svm_ora                       /vol/ora_01_logs/ora_01_logs_02 /dev/sdn        host3      iSCSI      40g     cDOT
    svm_ora                       /vol/ora_01_logs/ora_01_logs_01 /dev/sdm        host3      iSCSI      40g     cDOT
    svm_ora                       /vol/ora_01_data/ora_01_data_03 /dev/sdk        host3      iSCSI      20g     cDOT
    svm_ora                       /vol/ora_01_data/ora_01_data_04 /dev/sdl        host3      iSCSI      20g     cDOT
    svm_ora                       /vol/ora_01_data/ora_01_data_01 /dev/sdi        host3      iSCSI      20g     cDOT
    svm_ora                       /vol/ora_01_data/ora_01_data_02 /dev/sdj        host3      iSCSI      20g     cDOT
    svm_ora                       /vol/ora_01_biny/ora_01_biny_01 /dev/sdh        host3      iSCSI      40g     cDOT
    svm_ora                       /vol/ora_01_logs/ora_01_logs_02 /dev/sdg        host2      iSCSI      40g     cDOT
    svm_ora                       /vol/ora_01_logs/ora_01_logs_01 /dev/sdf        host2      iSCSI      40g     cDOT
    svm_ora                       /vol/ora_01_data/ora_01_data_04 /dev/sde        host2      iSCSI      20g     cDOT
    svm_ora                       /vol/ora_01_data/ora_01_data_02 /dev/sdc        host2      iSCSI      20g     cDOT
    svm_ora                       /vol/ora_01_data/ora_01_data_03 /dev/sdd        host2      iSCSI      20g     cDOT
    svm_ora                       /vol/ora_01_data/ora_01_data_01 /dev/sdb        host2      iSCSI      20g     cDOT
    svm_ora                       /vol/ora_01_biny/ora_01_biny_01 /dev/sda        host2      iSCSI      40g     cDOT
  6. 配置 multipath.conf 包含以下默认条目和黑名单条目的文件。

    sudo vi /etc/multipath.conf
    
    defaults {
        find_multipaths yes
        user_friendly_names yes
    }
    
    blacklist {
        devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
        devnode "^hd[a-z]"
        devnode "^cciss.*"
    }
  7. 启动多路径服务。

    sudo systemctl start multipathd

    现在、多路径设备将显示在中 /dev/mapper 目录。

    [ec2-user@ip-172-30-15-58 ~]$ ls -l /dev/mapper
    total 0
    lrwxrwxrwx 1 root root       7 Mar 21 20:13 3600a09806c574235472455534e68512d -> ../dm-0
    lrwxrwxrwx 1 root root       7 Mar 21 20:13 3600a09806c574235472455534e685141 -> ../dm-1
    lrwxrwxrwx 1 root root       7 Mar 21 20:13 3600a09806c574235472455534e685142 -> ../dm-2
    lrwxrwxrwx 1 root root       7 Mar 21 20:13 3600a09806c574235472455534e685143 -> ../dm-3
    lrwxrwxrwx 1 root root       7 Mar 21 20:13 3600a09806c574235472455534e685144 -> ../dm-4
    lrwxrwxrwx 1 root root       7 Mar 21 20:13 3600a09806c574235472455534e685145 -> ../dm-5
    lrwxrwxrwx 1 root root       7 Mar 21 20:13 3600a09806c574235472455534e685146 -> ../dm-6
    crw------- 1 root root 10, 236 Mar 21 18:19 control
  8. 通过SSH以fsxadmin用户身份登录到FSX集群、以检索每个LUN的序列号十六进制值、该值以6c574xxx开头…​、十六进制值以3600a0980开头、即AWS供应商ID。

    lun show -fields serial-hex

    并返回如下内容:

    FsxId02ad7bf3476b741df::> lun show -fields serial-hex
    vserver path                            serial-hex
    ------- ------------------------------- ------------------------
    svm_ora /vol/ora_01_biny/ora_01_biny_01 6c574235472455534e68512d
    svm_ora /vol/ora_01_data/ora_01_data_01 6c574235472455534e685141
    svm_ora /vol/ora_01_data/ora_01_data_02 6c574235472455534e685142
    svm_ora /vol/ora_01_data/ora_01_data_03 6c574235472455534e685143
    svm_ora /vol/ora_01_data/ora_01_data_04 6c574235472455534e685144
    svm_ora /vol/ora_01_logs/ora_01_logs_01 6c574235472455534e685145
    svm_ora /vol/ora_01_logs/ora_01_logs_02 6c574235472455534e685146
    7 entries were displayed.
  9. 更新 /dev/multipath.conf 文件、用于为多路径设备添加用户友好名称。

    sudo vi /etc/multipath.conf

    包含以下条目:

    multipaths {
            multipath {
                    wwid            3600a09806c574235472455534e68512d
                    alias           ora_01_biny_01
            }
            multipath {
                    wwid            3600a09806c574235472455534e685141
                    alias           ora_01_data_01
            }
            multipath {
                    wwid            3600a09806c574235472455534e685142
                    alias           ora_01_data_02
            }
            multipath {
                    wwid            3600a09806c574235472455534e685143
                    alias           ora_01_data_03
            }
            multipath {
                    wwid            3600a09806c574235472455534e685144
                    alias           ora_01_data_04
            }
            multipath {
                    wwid            3600a09806c574235472455534e685145
                    alias           ora_01_logs_01
            }
            multipath {
                    wwid            3600a09806c574235472455534e685146
                    alias           ora_01_logs_02
            }
    }
  10. 重新启动多路径服务以验证下的设备 /dev/mapper 已更改为LUN名称与串行十六进制ID。

    sudo systemctl restart multipathd

    检查 /dev/mapper 返回如下内容:

    [ec2-user@ip-172-30-15-58 ~]$ ls -l /dev/mapper
    total 0
    crw------- 1 root root 10, 236 Mar 21 18:19 control
    lrwxrwxrwx 1 root root       7 Mar 21 20:41 ora_01_biny_01 -> ../dm-0
    lrwxrwxrwx 1 root root       7 Mar 21 20:41 ora_01_data_01 -> ../dm-1
    lrwxrwxrwx 1 root root       7 Mar 21 20:41 ora_01_data_02 -> ../dm-2
    lrwxrwxrwx 1 root root       7 Mar 21 20:41 ora_01_data_03 -> ../dm-3
    lrwxrwxrwx 1 root root       7 Mar 21 20:41 ora_01_data_04 -> ../dm-4
    lrwxrwxrwx 1 root root       7 Mar 21 20:41 ora_01_logs_01 -> ../dm-5
    lrwxrwxrwx 1 root root       7 Mar 21 20:41 ora_01_logs_02 -> ../dm-6
  11. 使用一个主分区对二进制LUN进行分区。

    sudo fdisk /dev/mapper/ora_01_biny_01
  12. 使用XFS文件系统格式化分区的二进制LUN。

    sudo mkfs.xfs /dev/mapper/ora_01_biny_01p1
  13. 将二进制LUN挂载到 /u01

    sudo mount -t xfs /dev/mapper/ora_01_biny_01p1 /u01
  14. 更改 /u01 将点所有权挂载到Oracle用户及其所属的主组。

    sudo chown oracle:oinstall /u01
  15. 查找二进制LUN的UUI。

    sudo blkid /dev/mapper/ora_01_biny_01p1
  16. 将挂载点添加到 /etc/fstab

    sudo vi /etc/fstab

    添加以下行。

    UUID=d89fb1c9-4f89-4de4-b4d9-17754036d11d       /u01    xfs     defaults,nofail 0       2
    备注 请务必仅使用UUID和nodfail选项挂载二进制文件、以避免在EC2实例重新启动期间可能出现根锁定问题。
  17. 以root用户身份为Oracle设备添加udev规则。

    vi /etc/udev/rules.d/99-oracle-asmdevices.rules

    包括以下条目:

    ENV{DM_NAME}=="ora*", GROUP:="oinstall", OWNER:="oracle", MODE:="660"
  18. 以root用户身份重新加载udev规则。

    udevadm control --reload-rules
  19. 以root用户身份触发udev规则。

    udevadm trigger
  20. 以root用户身份重新加载multipathd。

    systemctl restart multipathd
  21. 重新启动EC2实例主机。

Oracle网格基础架构安装

Details
  1. 通过SSH以EC2-user身份登录到EC2实例、并通过取消注释启用密码身份验证 PasswordAuthentication yes 然后进行注释 PasswordAuthentication no

    sudo vi /etc/ssh/sshd_config
  2. 重新启动sshd服务。

    sudo systemctl restart sshd
  3. 重置Oracle用户密码。

    sudo passwd oracle
  4. 以Oracle Restart软件所有者用户(Oracle)身份登录。按如下所示创建Oracle目录:

    mkdir -p /u01/app/oracle
    mkdir -p /u01/app/oraInventory
  5. 更改目录权限设置。

    chmod -R 775 /u01/app
  6. 创建网格主目录并进行更改。

    mkdir -p /u01/app/oracle/product/19.0.0/grid
    cd /u01/app/oracle/product/19.0.0/grid
  7. 解压缩网格安装文件。

    unzip -q /tmp/archive/LINUX.X64_193000_grid_home.zip
  8. 从网格主页中、删除 OPatch 目录。

    rm -rf OPatch
  9. 从网格主页解压缩 p6880880_190000_Linux-x86-64.zip

    unzip -q /tmp/archive/p6880880_190000_Linux-x86-64.zip
  10. 从网格主页修改 cv/admin/cvu_config、取消注释并替换 CV_ASSUME_DISTID=OEL5 使用 CV_ASSUME_DISTID=OL7

    vi cv/admin/cvu_config
  11. 准备 gridsetup.rsp 文件以进行静默安装、并将rsp文件置于中 /tmp/archive 目录。rsp文件应涵盖A、B和G部分、并提供以下信息:

    INVENTORY_LOCATION=/u01/app/oraInventory
    oracle.install.option=HA_CONFIG
    ORACLE_BASE=/u01/app/oracle
    oracle.install.asm.OSDBA=dba
    oracle.install.asm.OSOPER=oper
    oracle.install.asm.OSASM=asm
    oracle.install.asm.SYSASMPassword="SetPWD"
    oracle.install.asm.diskGroup.name=DATA
    oracle.install.asm.diskGroup.redundancy=EXTERNAL
    oracle.install.asm.diskGroup.AUSize=4
    oracle.install.asm.diskGroup.disks=/dev/mapper/ora_01_data_01,/dev/mapper/ora_01_data_02,/dev/mapper/ora_01_data_03,/dev/mapper/ora_01_data_04
    oracle.install.asm.diskGroup.diskDiscoveryString=/dev/mapper/*
    oracle.install.asm.monitorPassword="SetPWD"
    oracle.install.asm.configureAFD=true
  12. 以root用户身份登录到EC2实例并进行设置 ORACLE_HOMEORACLE_BASE

    export ORACLE_HOME=/u01/app/oracle/product/19.0.0/grid
    export ORACLE_BASE=/tmp
    cd /u01/app/oracle/product/19.0.0/grid/bin
  13. 配置磁盘设备以与Oracle ASM筛选器驱动程序结合使用。

     ./asmcmd afd_label DATA01 /dev/mapper/ora_01_data_01 --init
    
     ./asmcmd afd_label DATA02 /dev/mapper/ora_01_data_02 --init
    
     ./asmcmd afd_label DATA03 /dev/mapper/ora_01_data_03 --init
    
     ./asmcmd afd_label DATA04 /dev/mapper/ora_01_data_04 --init
    
     ./asmcmd afd_label LOGS01 /dev/mapper/ora_01_logs_01 --init
    
     ./asmcmd afd_label LOGS02 /dev/mapper/ora_01_logs_02 --init
  14. 安装 cvuqdisk-1.0.10-1.rpm

    rpm -ivh /u01/app/oracle/product/19.0.0/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm
  15. 未设置 $ORACLE_BASE

    unset ORACLE_BASE
  16. 以Oracle用户身份登录到EC2实例、然后在中提取修补程序 /tmp/archive 文件夹。

    unzip /tmp/archive/p34762026_190000_Linux-x86-64.zip -d /tmp/archive
  17. 从Grid home /u01/app/oracle/product/19.0.0/grid中、以Oracle用户身份启动 gridSetup.sh 用于网格基础架构安装。

     ./gridSetup.sh -applyRU /tmp/archive/34762026/ -silent -responseFile /tmp/archive/gridsetup.rsp

    忽略有关网格基础架构的错误组的警告。我们正在使用一个Oracle用户来管理Oracle Restart、因此这是预期的。

  18. 以root用户身份执行以下脚本:

    /u01/app/oraInventory/orainstRoot.sh
    
    /u01/app/oracle/product/19.0.0/grid/root.sh
  19. 以root用户身份重新加载multipathd。

    systemctl restart multipathd
  20. 以Oracle用户身份执行以下命令以完成配置:

    /u01/app/oracle/product/19.0.0/grid/gridSetup.sh -executeConfigTools -responseFile /tmp/archive/gridsetup.rsp -silent
  21. 以Oracle用户身份创建日志磁盘组。

    bin/asmca -silent -sysAsmPassword 'yourPWD' -asmsnmpPassword 'yourPWD' -createDiskGroup -diskGroupName LOGS -disk 'AFD:LOGS*' -redundancy EXTERNAL -au_size 4
  22. 以Oracle用户身份、在安装配置后验证网格服务。

    bin/crsctl stat res -t
    +
    Name                Target  State        Server                   State details
    Local Resources
    ora.DATA.dg         ONLINE  ONLINE       ip-172-30-15-58          STABLE
    ora.LISTENER.lsnr   ONLINE  ONLINE       ip-172-30-15-58          STABLE
    ora.LOGS.dg         ONLINE  ONLINE       ip-172-30-15-58          STABLE
    ora.asm             ONLINE  ONLINE       ip-172-30-15-58          Started,STABLE
    ora.ons             OFFLINE OFFLINE      ip-172-30-15-58          STABLE
    Cluster Resources
    ora.cssd            ONLINE  ONLINE       ip-172-30-15-58          STABLE
    ora.diskmon         OFFLINE OFFLINE                               STABLE
    ora.driver.afd      ONLINE  ONLINE       ip-172-30-15-58          STABLE
    ora.evmd            ONLINE  ONLINE       ip-172-30-15-58          STABLE
  23. Valiate ASM筛选器驱动程序状态。

    [oracle@ip-172-30-15-58 grid]$ export ORACLE_HOME=/u01/app/oracle/product/19.0.0/grid
    [oracle@ip-172-30-15-58 grid]$ export ORACLE_SID=+ASM
    [oracle@ip-172-30-15-58 grid]$ export PATH=$PATH:$ORACLE_HOME/bin
    [oracle@ip-172-30-15-58 grid]$ 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  1048576     81920    81847                0           81847              0             N  DATA/
    MOUNTED  EXTERN  N         512             512   4096  1048576     81920    81853                0           81853              0             N  LOGS/
    ASMCMD> afd_state
    ASMCMD-9526: The AFD state is 'LOADED' and filtering is 'ENABLED' on host 'ip-172-30-15-58.ec2.internal'

Oracle数据库安装

Details
  1. 以Oracle用户身份登录并取消设置 $ORACLE_HOME$ORACLE_SID 如果已设置。

    unset ORACLE_HOME
    unset ORACLE_SID
  2. 创建Oracle DB主目录并进行更改。

    mkdir /u01/app/oracle/product/19.0.0/db1
    cd /u01/app/oracle/product/19.0.0/db1
  3. 解压缩Oracle数据库安装文件。

    unzip -q /tmp/archive/LINUX.X64_193000_db_home.zip
  4. 从数据库主目录中、删除 OPatch 目录。

    rm -rf OPatch
  5. 从DB主目录中、解压缩 p6880880_190000_Linux-x86-64.zip

    unzip -q /tmp/archive/p6880880_190000_Linux-x86-64.zip
  6. 在数据库主页中、修改 cv/admin/cvu_config`和取消注释并替换 `CV_ASSUME_DISTID=OEL5 使用 CV_ASSUME_DISTID=OL7

    vi cv/admin/cvu_config
  7. /tmp/archive 目录中、解压缩DB 19.18 RU修补程序。

    unzip p34765931_190000_Linux-x86-64.zip
  8. 在中准备DB静默安装rsp文件 /tmp/archive/dbinstall.rsp 具有以下值的目录:

    oracle.install.option=INSTALL_DB_SWONLY
    UNIX_GROUP_NAME=oinstall
    INVENTORY_LOCATION=/u01/app/oraInventory
    ORACLE_HOME=/u01/app/oracle/product/19.0.0/db1
    ORACLE_BASE=/u01/app/oracle
    oracle.install.db.InstallEdition=EE
    oracle.install.db.OSDBA_GROUP=dba
    oracle.install.db.OSOPER_GROUP=oper
    oracle.install.db.OSBACKUPDBA_GROUP=oper
    oracle.install.db.OSDGDBA_GROUP=dba
    oracle.install.db.OSKMDBA_GROUP=dba
    oracle.install.db.OSRACDBA_GROUP=dba
    oracle.install.db.rootconfig.executeRootScript=false
  9. 从db1 home /u01/app/oracle/product/19.0.0/db1中、执行无提示纯软件DB安装。

     ./runInstaller -applyRU /tmp/archive/34765931/ -silent -ignorePrereqFailure -responseFile /tmp/archive/dbinstall.rsp
  10. 以root用户身份运行 root.sh 在仅安装软件后编写脚本。

    /u01/app/oracle/product/19.0.0/db1/root.sh
  11. 以Oracle用户身份创建 dbca.rsp 包含以下条目的文件:

    gdbName=db1.demo.netapp.com
    sid=db1
    createAsContainerDatabase=true
    numberOfPDBs=3
    pdbName=db1_pdb
    useLocalUndoForPDBs=true
    pdbAdminPassword="yourPWD"
    templateName=General_Purpose.dbc
    sysPassword="yourPWD"
    systemPassword="yourPWD"
    dbsnmpPassword="yourPWD"
    datafileDestination=+DATA
    recoveryAreaDestination=+LOGS
    storageType=ASM
    diskGroupName=DATA
    characterSet=AL32UTF8
    nationalCharacterSet=AL16UTF16
    listeners=LISTENER
    databaseType=MULTIPURPOSE
    automaticMemoryManagement=false
    totalMemory=8192
  12. 以Oracle用户身份、使用dbca启动数据库创建。

    bin/dbca -silent -createDatabase -responseFile /tmp/archive/dbca.rsp
    
    output:
    Prepare for db operation
    7% complete
    Registering database with Oracle Restart
    11% complete
    Copying database files
    33% complete
    Creating and starting Oracle instance
    35% complete
    38% complete
    42% complete
    45% complete
    48% complete
    Completing Database Creation
    53% complete
    55% complete
    56% complete
    Creating Pluggable Databases
    60% complete
    64% complete
    69% complete
    78% complete
    Executing Post Configuration Actions
    100% complete
    Database creation complete. For details check the logfiles at:
     /u01/app/oracle/cfgtoollogs/dbca/db1.
    Database Information:
    Global Database Name:db1.demo.netapp.com
    System Identifier(SID):db1
    Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/db1/db1.log" for further details.
  13. 以Oracle用户身份、在创建数据库后验证Oracle Restart HA服务。

    [oracle@ip-172-30-15-58 db1]$ ../grid/bin/crsctl stat res -t
    
    Name           	Target  State        Server                   State details
    
    Local Resources
    
    ora.DATA.dg		ONLINE  ONLINE       ip-172-30-15-58          STABLE
    ora.LISTENER.lsnr	ONLINE  ONLINE       ip-172-30-15-58          STABLE
    ora.LOGS.dg		ONLINE  ONLINE       ip-172-30-15-58          STABLE
    ora.asm		ONLINE  ONLINE       ip-172-30-15-58          Started,STABLE
    ora.ons		OFFLINE OFFLINE      ip-172-30-15-58          STABLE
    
    Cluster Resources
    
    ora.cssd        	ONLINE  ONLINE       ip-172-30-15-58          STABLE
    ora.db1.db		ONLINE  ONLINE       ip-172-30-15-58          Open,HOME=/u01/app/oracle/product/19.0.0/db1,STABLE
    ora.diskmon		OFFLINE OFFLINE                               STABLE
    ora.driver.afd	ONLINE  ONLINE       ip-172-30-15-58          STABLE
    ora.evmd		ONLINE  ONLINE       ip-172-30-15-58          STABLE
  14. 设置Oracle用户 .bash_profile

    vi ~/.bash_profile
  15. 添加以下条目:

    export ORACLE_HOME=/u01/app/oracle/product/19.0.0/db1
    export ORACLE_SID=db1
    export PATH=$PATH:$ORACLE_HOME/bin
    alias asm='export ORACLE_HOME=/u01/app/oracle/product/19.0.0/grid;export ORACLE_SID=+ASM;export PATH=$PATH:$ORACLE_HOME/bin'
  16. 验证已创建的CDB/PDB。

    /home/oracle/.bash_profile
    
    sqlplus / as sysdba
    
    SQL> select name, open_mode from v$database;
    
    NAME      OPEN_MODE
    
    DB1       READ WRITE
    
    SQL> select name from v$datafile;
    
    NAME
    
    +DATA/DB1/DATAFILE/system.256.1132176177
    +DATA/DB1/DATAFILE/sysaux.257.1132176221
    +DATA/DB1/DATAFILE/undotbs1.258.1132176247
    +DATA/DB1/86B637B62FE07A65E053F706E80A27CA/DATAFILE/system.265.1132177009
    +DATA/DB1/86B637B62FE07A65E053F706E80A27CA/DATAFILE/sysaux.266.1132177009
    +DATA/DB1/DATAFILE/users.259.1132176247
    +DATA/DB1/86B637B62FE07A65E053F706E80A27CA/DATAFILE/undotbs1.267.1132177009
    +DATA/DB1/F7852758DCD6B800E0533A0F1EAC1DC6/DATAFILE/system.271.1132177853
    +DATA/DB1/F7852758DCD6B800E0533A0F1EAC1DC6/DATAFILE/sysaux.272.1132177853
    +DATA/DB1/F7852758DCD6B800E0533A0F1EAC1DC6/DATAFILE/undotbs1.270.1132177853
    +DATA/DB1/F7852758DCD6B800E0533A0F1EAC1DC6/DATAFILE/users.274.1132177871
    
    NAME
    
    +DATA/DB1/F785288BBCD1BA78E0533A0F1EACCD6F/DATAFILE/system.276.1132177871
    +DATA/DB1/F785288BBCD1BA78E0533A0F1EACCD6F/DATAFILE/sysaux.277.1132177871
    +DATA/DB1/F785288BBCD1BA78E0533A0F1EACCD6F/DATAFILE/undotbs1.275.1132177871
    +DATA/DB1/F785288BBCD1BA78E0533A0F1EACCD6F/DATAFILE/users.279.1132177889
    +DATA/DB1/F78529A14DD8BB18E0533A0F1EACB8ED/DATAFILE/system.281.1132177889
    +DATA/DB1/F78529A14DD8BB18E0533A0F1EACB8ED/DATAFILE/sysaux.282.1132177889
    +DATA/DB1/F78529A14DD8BB18E0533A0F1EACB8ED/DATAFILE/undotbs1.280.1132177889
    +DATA/DB1/F78529A14DD8BB18E0533A0F1EACB8ED/DATAFILE/users.284.1132177907
    
    19 rows selected.
    
    SQL> show pdbs
    
        CON_ID CON_NAME                       OPEN MODE  RESTRICTED
    
             2 PDB$SEED                       READ ONLY  NO
             3 DB1_PDB1                       READ WRITE NO
             4 DB1_PDB2                       READ WRITE NO
             5 DB1_PDB3                       READ WRITE NO
    SQL>
  17. 将数据库恢复目标大小设置为+logs.磁盘组大小。

    alter system set db_recovery_file_dest_size = 80G scope=both;
  18. 使用sqlplus登录到数据库并启用归档日志模式。

    sqlplus /as sysdba.
    
    shutdown immediate;
    
    startup mount;
    
    alter database archivelog;
    
    alter database open;

至此、在适用于ONTAP 和EC2计算实例的Amazon FSX上完成Oracle 19c版本19.18重新启动部署。如果需要、NetApp建议将Oracle控制文件和联机日志文件重新定位到+logs磁盘组。

自动化部署选项

NetApp将随Ansible发布一个完全自动化的解决方案 部署工具包、以便于实施此解决方案。请查看此工具包的可用性。发布后、此处将发布一个链接。

使用SnapCenter 服务备份、还原和克隆Oracle数据库

请参见 "适用于Oracle的SnapCenter 服务" 有关使用NetApp BlueXP控制台备份、还原和克隆Oracle数据库的详细信息。