裸金属解决方案上的 Oracle 的最佳实践
在裸金属解决方案上实现 Oracle 数据库时,我们深知您的目标是轻松启动环境,并尽可能减少问题。为了帮助您实现此目标,我们收集了在裸金属解决方案上实施过 Oracle 数据库的客户、解决方案架构师和支持人员的反馈。以下信息为您提供了从这些专家处获得的建议,以帮助您在裸金属解决方案上启动自己的 Oracle 数据库环境时取得成功。
软件部署
为了成功部署 Oracle 软件,我们建议您使用裸金属解决方案工具包。该工具包提供了几个 Ansible 和 JSON 脚本,可帮助您在裸金属解决方案上执行 Oracle 软件安装。如需详细了解裸金属解决方案工具包以及如何在裸金属解决方案环境中安装 Oracle 数据库,请参阅工具包用户指南。
操作系统
在裸金属解决方案服务器上设置操作系统时,我们建议您执行以下操作。
验证 NTP 服务器
所有裸金属解决方案服务器都应与一个时间源同步。选择最符合您需求的 NTP 服务器选项(物理或虚拟)。
如果您的服务器使用 NTP 进行时间同步,请使用 timedatectl
或 ntpstat
命令查看服务器是否与时间源同步。下面的示例显示了成功同步的服务器的命令输出:
timedatectl show -p NTPSynchronized
NTPSynchronized=yes
synchronised to NTP server (216.239.35.8) at stratum 3
time correct to within 49 ms
polling server every 1024 s
查看 Oracle 虚拟机 CPU 数量和内存详情
如需查看有关 Oracle 虚拟机 (OVM) 主机的信息(包括 CPU 和内存详情),请使用 xm info
命令。例如:
/usr/sbin/xm info
如需了解详情,请参阅有关查看主机信息的 Oracle 文档。
检查 /etc/fstab
设置以确认装载选项正确
为了防止启动过程挂起,请始终使用 nofail
装载选项配置您创建的非根装载点(例如 /u01
和 /u02
)设置,以代替默认设置。在极少数情况下,主机重启时底层存储设备可能不可用。设置 nofail
装载选项可让启动过程在服务器无法查看存储设备时继续。
以下示例展示了 /etc/fstab
文件中 /u01
和 /u02
装载点的推荐设置:
/dev/mapper/3600a098038314352513f4f765339624c1 /u01 xfs nofail 0 0
/dev/mapper/3600a374927591837194d4j371563816c1 /u02 xfs nofail 0 0
您可以将装载选项从 defaults
修改为 nofail
,而不会对操作系统产生任何影响。但是,要应用新设置,您需要重新启动服务器。
确认 shell 限制设置
裸金属解决方案工具包会配置设置 Oracle RAC 所需的 shell 限制。如果您使用了裸金属解决方案工具包,并且没有更改 shell 限制,则可以跳过此验证。必须为拥有 Oracle 软件(包括 Grid Infrastructure)的所有操作系统账号设置 shell 限制。Oracle 建议对 Linux 使用以下设置:
限额 | 软性值 | 硬性值 |
---|---|---|
打开文件 | 1024 | 65536 |
最大用户进程数 | 16384 | 16384 |
堆栈大小 | 10240 | 32768 |
最大锁定内存 | 至少 90% 的内存 | 至少 90% 的内存 |
使用 ulimit
命令验证软性和硬性 shell 限制。例如,输入以下命令以验证软性 shell 限制:
ulimit -S -n -u -s -l
以下输出显示了具有 384 GB 内存的系统的正确软性 shell 限制设置:
open files (-n) 1024
max user processes (-u) 16384
stack size (kbytes, -s) 10240
max locked memory (kbytes, -l) 355263678
如需验证硬性 shell 限制,请使用以下命令:
ulimit -H -n -u -s -l
以下输出显示了具有 384 GB 内存的系统的正确硬性 shell 限制:
open files (-n) 65536
max user processes (-u) 16384
stack size (kbytes, -s) 32768
max locked memory (kbytes, -l) 355263678
如果未正确设置任何 shell 限制,请修改 /etc/security/limits.conf
文件中的条目,如以下示例所示:
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock 355263678
oracle hard memlock 355263678
grid soft nofile 1024
grid hard nofile 65536
grid soft nproc 2047
grid hard nproc 16384
grid soft stack 10240
grid hard stack 32768
grid soft memlock 355263678
grid hard memlock 355263678
grep MemTotal /proc/meminfo
MemTotal: 16092952 kB
避免更改多路径设置
如果选择更改多路径设置,如果您使用 multipath.conf
为设备创建别名,请勿配置 path_grouping_policy
属性。此更改会覆盖 devices
定义部分中设置的默认政策。
在正常操作下,multipath -ll
命令应显示类似于以下示例的状态。每个设备包括两个处于就绪状态的活跃路径。
3600a0980383143524f2b50476d59554e dm-7 NETAPP ,LUN C-Mode
size=xxxG features='4 queue_if_no_path pg_init_retries 50 retain_attached_hw_handle' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| |- 14:0:3:2 sdf 8:80 active ready running
| `- 16:0:5:2 sdv 65:80 active ready running
`-+- policy='service-time 0' prio=10 status=enabled
|- 14:0:2:2 sdc 8:32 active ready running
`- 16:0:3:2 sdq 65:0 active ready running
使用巨型帧
为了防止数据包在 RAC 环境中从一个服务器传输到另一个服务器时发生碎片化,Oracle 建议您为服务器接口配置巨型帧。巨型帧的 MTU 大小为 9000 字节,其大小足够支持 8192 字节的 Oracle 数据库块大小。
如需在 Oracle RAC 的裸金属解决方案服务器上配置巨型帧,请执行以下操作:
查看裸金属解决方案专用网络的设置,确认已配置巨型帧:
gcloud bms networks describe NETWORK_NAME --project=PROJECT_ID --region=REGION | grep jumboFramesEnabled
示例输出:
jumboFramesEnabled: true
确定网络接口及其
mtu
大小:ip link show | grep mtu
示例输出:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 2: enp55s0f1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000 3: enp55s0f2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000 4: enp55s0f3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000 5: enp17s0f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP mode DEFAULT group default qlen 1000 6: enp17s0f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP mode DEFAULT group default qlen 1000 7: enp173s0f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP mode DEFAULT group default qlen 1000 8: enp173s0f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP mode DEFAULT group default qlen 1000 9: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000 10: bond1.117@bond1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000 11: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000 12: bond0.118@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000 13: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000 14: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN mode DEFAULT group default qlen 1000
使用根级权限,将
MTU=9000
添加到裸金属解决方案环境中使用巨型帧的所有服务器的接口配置文件。您可以在/etc/sysconfig/network-scripts/ifcfg-interface_name
找到该文件。示例输出:
BONDING_OPTS="lacp_rate=1 miimon=100 mode=802.3ad xmit_hash_policy=1" TYPE=Bond BONDING_MASTER=yes PROXY_METHOD=none BROWSER_ONLY=no DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=no IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=bond1 UUID=0e7da685-64bf-44f3-812f-9846d747a801 DEVICE=bond1 ONBOOT=yes AUTOCONNECT_SLAVES=yes MTU=9000
重启网络服务以使更改生效:
service network restart
发出
ping
命令以测试新的 MTU 配置:ping -c 2 -M do -s 8972 svr001 PING svr001 (172.16.1.10) 8972(9000) bytes of data. 8980 bytes from svr001 (172.16.1.10): icmp_seq=1 ttl=64 time=0.153 ms 8980 bytes from svr001 (172.16.1.10): icmp_seq=2 ttl=64 time=0.151 ms --- svr001 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 0.151/0.152/0.153/0.001 ms
Oracle RMAN 备份和延迟时间影响
如果 Oracle RMAN 备份进程不受 RATE
参数的限制,则可能会将存储吞吐量或 IOPS 推送到存储卷的性能限制。这会导致存储 I/O 被节流,从而增加存储卷的延迟时间。
我们建议您实现 RATE
通道参数,以限制 Oracle RMAN 可以使用的带宽或吞吐量。
如需了解详情,请参阅 Oracle 文档:23.2.1.4 RATE 信道参数
Oracle 自动存储管理
我们的 Cloud Customer Care 团队和一些裸金属解决方案客户已将 Oracle 自动存储管理 (ASM) 添加到其裸金属解决方案环境中。基于他们的集体经验和智慧,我们整理了以下最佳实践列表,以帮助您成功安装自己的 ASM 磁盘组。我们的目标是帮助您实现裸金属解决方案环境的最佳存储性能。
- 使用统一的 LUN 大小
- 最多创建两个 ASM 磁盘组
- 跨所有卷中的所有 LUN 对 ASM 磁盘组进行条带化
- 在同一磁盘组中使用具有相同性能特征的 LUN 和卷
- 不要跨多个 RAC 集群共享存储卷
- 在创建 ASM 磁盘组之前了解所需的 IOPS 和吞吐量容量
- 保持多路径配置不变
- 为 ASM 配置重要设置
- 创建具有外部冗余的 ASM 磁盘组
- 创建 ASM 磁盘后重新启动裸金属解决方案服务器
使用统一的 LUN 大小
您选择的 LUN 大小应代表增长单元。ASM 最适合用于具有相同大小和相似性能特征的 LUN。对于非常大的数据库,我们建议使用 2 TB 的 LUN 大小以优化性能。
最多创建两个 ASM 磁盘组
您应该将数据文件和 REDO
日志的一个副本发送到单个 DATA
磁盘组。您还可以选择创建第二个 FRA
磁盘组以存储磁盘上的备份和归档日志。将 REDO
日志存储在高弹性存储空间时,您不需要拥有两个副本。
REDO
日志写入对延迟时间比较敏感。因此,仅当 FRA
磁盘组的性能配置文件与 DATA
磁盘组的性能配置文件匹配时,才应考虑多路复用 REDO
日志。
跨所有卷中的所有 LUN 对 ASM 磁盘组进行条带化
创建 ASM 磁盘组时,请跨所有卷的所有 LUN 对磁盘组进行条带化。如果您的 LUN 属于单个卷,则必须在创建磁盘组时包含该卷中的所有 LUN。例如,如果一个卷有 X
个 LUN,则应在创建磁盘组时使用所有 X
个 LUN。
本指南也适用于使用多个卷的情况,因为我们提供卷的 QoS 限制。如果您使用多个卷来提高吞吐量 (>900 Mbps),则需要在创建磁盘组时包含每个卷中的所有 LUN 以实现所需的性能。
在同一磁盘组中使用具有相同性能特征的 LUN 和卷
如果您使用多个卷来提高吞吐量,请在创建 ASM 磁盘组时使用相同的卷大小和性能特征。
请勿混合使用具有不同性能特征的卷中的 LUN。如果您在同一磁盘组中包含了具有不同性能配置文件的 LUN 和卷,则执行 I/O 操作的磁盘的性能上限可能会低得多,还可能会导致延迟时间高峰。
例如,如果您创建了一个包含两个大小不一致的卷(1 个 16 TiB 和 1 个 5 TiB)的 ASM 磁盘组,则 5 TB 卷中的磁盘执行的 I/O 操作可能会导致延迟时间增加。5 TiB 卷的吞吐量和 IOPS 上限要低得多,因此会在远低于 16 TiB 卷的限制水平的时候就达到限制水平。
不要跨多个 RAC 集群共享存储卷
对于每个 RAC 集群,请预配唯一的存储卷。不要跨多个 RAC 集群共享同一个存储卷。由于存储设备在卷级别应用 QoS,因此这种做法可以最大限度地降低噪声邻居争用单个 IOPS 和吞吐量池的可能性。
例如,如果单个卷具有 8 个 LUN,请勿将一些 LUN 分配给一个 RAC 数据库集群,并将其余的 LUN 分配给另一个 RAC 数据库集群。您应该预配两个单独的存储卷,并将每个卷分配给单独的专用 RAC 集群。
在创建 ASM 磁盘组之前了解所需的 IOPS 和吞吐量容量
请注意本地环境的性能峰值。如需查找此信息,请在高峰工作负载时段内生成 AWR 报告,以记录系统的峰值 IOPS 和吞吐量值。您还可以使用我们的 Oracle 数据库评估工具来收集您的峰值性能数值。
获得本地性能数值后,请查看我们的裸金属解决方案存储性能表,以计算分配给 ASM 磁盘组以及实现预期性能所需要的存储空间。如果您有更高的吞吐量要求 (>768 Mbps),则可以创建多个卷并跨所有 LUN 和所有卷对 ASM 磁盘组进行条带化。
保持多路径配置不变
您不应更改 /etc/multipath.conf
文件中的默认 group_pathing_policy
。而应始终使用默认值 group_pathing_policy=group_by_prio
,以避免在存储路径失败时逐出 RAC 节点。
如需详细了解如何保持多路径配置不变,请参阅避免更改多路径设置。
为 ASM 配置重要设置
如果您在 Linux 上使用 Oracle Grid Infrastructure 12.1.0.2 或更高版本,请使用 ASMFD 或 UDEV 设置 ASM。
对于之前的 Oracle Grid Infrastructure 版本,请使用 ASMLib。
如需阻止 Oracle ASM 先选择单路径 ASM 设备,请按如下所示设置扫描顺序:
ORACLEASM_SCANORDER="dm" ORACLEASM_SCANEXCLUDE="sd"
由于裸金属解决方案存储环境使用您可以在
/proc/partitions
中查看的 DM 设备,因此我们要求进行此设置。如需检查 ASMLib 是否配置为管理 ASM 磁盘,请以根用户身份运行以下命令:
/usr/sbin/oracleasm configure | grep SCAN
如果您使用的是 ASMLib,输出将如下所示:
ORACLEASM_SCANBOOT=true ORACLEASM_SCANORDER="dm" ORACLEASM_SCANEXCLUDE="sd" ORACLEASM_SCAN_DIRECTORIES=""
创建具有外部冗余的 ASM 磁盘组
裸金属解决方案提供的存储使用 NETAPP RAID-DP,它是 RAID 6 的一种形式,即使两个磁盘出现故障,也可以保护数据。因此,我们建议您为 ASM 使用外部冗余。
创建 ASM 磁盘后重新启动裸金属解决方案服务器
创建 ASM 磁盘组后,您应该重新启动集群中的所有裸金属解决方案服务器,以确保 ASM 实例和磁盘组在重新启动后联机。遵循此主动步骤将使您可以避免在 ASM 磁盘组上构建数据库集群后可能发生的问题。
Oracle RAC
本部分介绍在裸金属解决方案上安装 Oracle Real Application Clusters (RAC) 的最佳实践。
Oracle Grid Infrastructure 集群名称长度
集群名称的长度不得超过 15 个字符。
如果集群名称超过 15 个字符,root.sh
脚本将会失败。
通过 SSH 隧道 VNC 查看器
任意服务器(例如 VNC 查看器)会被裸金属解决方案服务器的默认操作系统防火墙阻止。因此,请通过 SSH 建立 X Window 或 VNC Viewer 隧道:
ssh -L 5901:localhost:5901 bms-host
vncviewer localhost:1
根文件系统有足够的空间
确保根文件系统 (/) 有足够的可用空间。裸金属解决方案服务器附带 20GB 的根文件系统,这可能不够用。
在裸金属解决方案服务器上,检查根“/”文件系统的大小。默认大小为 20GB,可能不够用。如果大小为 20GB,请将其增加。
使用域名服务器替代 Cloud DNS
如果您不想使用 Cloud DNS,请安装您自己的域名服务器,以解析裸金属解决方案服务器上的主机 IP 地址。Oracle 网格基础架构使用 nslookup
命令来获取 DNS 服务器的名称。nslookup
命令不使用 /etc/hosts
文件。
请按照以下步骤操作:
安装
dnsmasq
。yum makecache yum install dnsmasq
在编辑模式下打开
/etc/dnsmasq.conf
文件。vi /etc/dnsmasq.conf
在
/etc/dnsmasq.conf
文件中,添加以下行:port=53 domain-needed bogus-priv strict-order expand-hosts domain=localdomain address=/.localdomain/127.0.0.1 address=//127.0.0.1 listen-address=127.0.0.1 resolv-file=/etc/dnsmasq-resolv.conf
修改
/etc/dnsmasq-resolv.conf
文件和/etc/resolv.conf
文件,使其仅包含以下行:nameserver 127.0.0.1
启动
dnsmasq
服务:systemctl restart dnsmasq systemctl status dnsmasq
在两个节点上,运行
nslookup
命令。nslookup at-2811641-svr001 Server: 127.0.0.1 Address: 127.0.0.1#53 Name: at-2811641-svr001 Address: 192.168.1.10 nslookup at-2811641-svr002 Server: 127.0.0.1 Address: 127.0.0.1#53 Name: at-2811641-svr002 Address: 192.168.1.11
安装 NTP
安装 NTP 时,请确保所有 RAC 节点与跳转主机或内部 NTP 服务器的时间同步。请按照以下步骤操作:
安装 NTP。
yum install ntp
启动
ntpd
服务。systemctl start ntpd
在
/etc/ntp.conf
文件中,添加以下行以与堡垒主机(在本例中为10.x.x.x
)同步。您还可以使用内部 NTP 服务器。在本例中,192.x.x.x
是您的裸金属解决方案服务器。restrict 192.x.x.x mask 255.255.255.0 nomodify notrap server 10.x.x.x prefer
如需开始同步,请更新时间服务器以开始同步。
ntpdate -qu SERVER_NAME
一次仅在一个节点上运行 root 脚本
一次只在一个节点上运行根脚本 root.sh
。如果第一个节点上的执行失败,请勿继续执行下一个节点。
解析 Localhost
由于裸金属解决方案服务器不会将 Localhost
添加到 /etc/hosts
文件,因此请手动将 Localhost
解析为 127.0.0.1
。
确保有足够的资源限制
在裸金属解决方案服务器上安装 Oracle RAC 之前,请确保 root
用户和 oracle
用户的资源限制足够。
您可以使用 ulimit
命令检查限制。
设置 ORACLEASM_SCANORDER
变量
如果您使用的是 Oracle ASMLib,如需阻止 Oracle ASM 先选择单路径 ASM 设备,请按如下所示设置扫描顺序:
ORACLEASM_SCANORDER="dm"
ORACLEASM_SCANEXCLUDE="sd"
由于裸金属解决方案存储环境使用您可以在 /proc/partitions
文件中查看的 DM 设备,因此我们要求进行此设置。
Java 是 Oracle 和/或其关联公司的注册商标。