前言

推荐大家安装部署前,详细都看一遍官方文档。本文也是参考官方文档的情况下,写出的。由于有时效性,以官方文档为准。
https://docs.oracle.com/en/database/oracle/oracle-database/23/cwlin/index.html

1、基础环境准备

1.1、适配操作系统

参考官方文档
在这里插入图片描述
选用Oracle Linux 8.8

1.2.网络规划

物理IP: 192.168.0.127 192.168.0.128
VIP: 192.168.0.129 192.168.0.130
SCAN IP: 192.168.0.131
心跳IP: 10.0.0.200 10.0.0.201

1.3.硬件配置

在这里插入图片描述
内存16GB以上,要配置NTP,因为23ai已经不支持CTSS了。

1.4.虚拟机安装注意点

添加参数disk.EnableUUID = “TRUE”
在这里插入图片描述
要新建一个SCSI
在这里插入图片描述
共享硬盘的配置如下
在这里插入图片描述

1.5.共享磁盘划分

ocr 10GB 存储集群voting disk文件、OCR注册文件
arch 50GB 存储数据库归档日志文件
data 100GB 存储数据库文件、redo日志、undo表空间

1.6.安装包下载

下载地址
https://edelivery.oracle.com/

grid安装包名为 V1043786-01.zip
数据库安装包名为 V1043785-01.zip

2.安装部署前准备

以下操作默认在2个节点上同时操作。
检查主机时区、各个主机网卡名是否一致。

2.1.依赖包安装

备份走其他repo文件

cd /etc/yum.repos.d
mkdir bak
mv *.repo bak/

加载本地的安装光盘后,配置dnf源(后续用dnf代替yum命令)

mount  /dev/cdrom /mnt
vi /etc/yum.repos.d/ol.repo
[local-source]
name=ol
baseurl=file:///mnt/BaseOS/
enabled=1
gpgcheck=0

[local-source1]
name=ol
baseurl=file:///mnt/AppStream/
enabled=1
gpgcheck=0

官网下载 oracle-database-preinstall-23ai-1.0-2.el8.x86_64.rpm (貌似不下载也能安装,没试过)

dnf install -y oracle-database-preinstall-23ai-1.0-2.el8.x86_64.rpm
dnf install -y bc binutils compat-openssl10 elfutils-libelf fontconfig glibc glibc-devel ksh libaio libXrender libX11 libXau libXi libXtst libgcc libstdc++ libxcb libibverbs libasan liblsan librdmacm make policycoreutils policycoreutils-python-utils smartmontools sysstat net-tools nscd xterm

2.2.检查虚拟机环境下Clock Source是否配置为tsc

cat /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc hpet acpi_pm 

有tsc即可,没有的话运行以下命令

echo "tsc">/sys/devices/system/clocksource/clocksource0/current_clocksource

2.3.取消transparent_hugepage(透明大页)

cat /etc/default/grub

查看GRUB_CMDLINE_LINUX中transparent_hugepage=madvise是否为以上值,不是则更改。修改后重启配置:

 grub2-mkconfig -o /boot/grub2/grub.cfg

然后重启生效,检查配置

cat /sys/kernel/mm/transparent_hugepage/enabled
always [madvise] never

2.4.启用 Name Service Cache Daemon

为了让 Oracle Clusterware 更好地应对 NAS 设备或 NFS 挂载的网络故障,请启用名称服务缓存守护进程(nscd)。
(本次实验没有涉及,故跳过)

2.5.创建用户与用户组

groupadd -g 54421 oinstall
groupadd -g 54422 dba
useradd -u 54321 -g oinstall -G dba oracle
useradd -u 54322 -g oinstall -G dba grid
mkdir -p  /u01/app/23.0.0/grid
mkdir -p /u01/app/grid
mkdir -p /u01/app/oracle/product/23.0.0/dbhome_1
chown -R grid:oinstall /u01
chown oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/

并创建密码(略)

2.6.配置共享存储

本次实验,共享存储使用的是多路径+udev的方式。
检查与安装

dnf install "*device*" 

加载并启动multipath模块和服务

modprobe dm_multipath
lsmod |grep dm_multipath
dm_multipath           17724  0 
dm_mod                 84209  3 dm_multipath,dm_mirror,dm_log

配置自动启动

systemctl enable multipathd.service

检查

systemctl list-unit-files | grep multipathd
multipathd.service                                enabled  
multipathd.socket                                 enabled  

配置多路径

cp /usr/share/doc/device-mapper-multipath/multipath.conf /etc/
systemctl start multipathd.service

查看wwid

[root@rac1 ~]# /usr/lib/udev/scsi_id -g -u /dev/sdb
36000c297740a8f5d637f9dab3249339a
[root@rac1 ~]# /usr/lib/udev/scsi_id -g -u /dev/sdc
36000c299b4f556d29627470c5bf0d644
[root@rac1 ~]# /usr/lib/udev/scsi_id -g -u /dev/sdd
36000c294ccd104ecb45c343b747a8ade

配置multipath.conf添加以下部分

blacklist_exceptions {
          devnode "sda[a-z]"
        }

defaults {
        queue_without_daemon no  
        flush_on_last_del  no
        no_path_retry queue
        max_fds max
        path_grouping_policy    group_by_prio  
        features                "3 queue_if_no_path pg_init_retries 50"  
        getuid_callout          "/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/%n"  
        path_checker            tur 
        path_selector           "round-robin 0"  
        prio        "alua"  
        failback                immediate  
        rr_weight               uniform  
        rr_min_io_rq               128  
        user_friendly_names     no
}
blacklist {
        devnode "^(sda|ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
        devnode "^hd[a-z]"
        devnode "^asm/*"         # Here
        devnode "ofsctl"             # Here
}
multipaths {
multipath {
        wwid    36000c297740a8f5d637f9dab3249339a
        alias   ocr1
}
multipath {
        wwid    36000c299b4f556d29627470c5bf0d644
        alias   arch1
}
multipath {
        wwid    36000c294ccd104ecb45c343b747a8ade
        alias   data1
}                                        
}

配置UDEV,使用udev修改multipath下的文件属性

ENV{DM_NAME}=="ocr1", OWNER:="grid", GROUP:="dba", MODE:="0660", SYMLINK+="iscsi/oraasm-$env{DM_NAME}"
ENV{DM_NAME}=="data1", OWNER:="grid", GROUP:="dba", MODE:="0660", SYMLINK+="iscsi/oraasm-$env{DM_NAME}"
ENV{DM_NAME}=="arch1", OWNER:="grid", GROUP:="dba", MODE:="0660", SYMLINK+="iscsi/oraasm-$env{DM_NAME}"

重启multipath与udev

systemctl restart  multipathd.service
/sbin/udevadm trigger --type=devices --action=change

检查权限

[root@rac1 etc]# ls -l /dev/dm-*
brw-rw----. 1 grid dba  252, 3 Sep 12 13:15 /dev/dm-3
brw-rw----. 1 grid dba  252, 4 Sep 12 13:15 /dev/dm-4
brw-rw----. 1 grid dba  252, 5 Sep 12 13:15 /dev/dm-5
[root@rac1 etc]# ls -l /dev/mapper/*
lrwxrwxrwx. 1 root root       7 Sep 12 13:15 /dev/mapper/arch1 -> ../dm-4
lrwxrwxrwx. 1 root root       7 Sep 12 13:15 /dev/mapper/data1 -> ../dm-5
lrwxrwxrwx. 1 root root       7 Sep 12 13:15 /dev/mapper/ocr1 -> ../dm-3

2.7.修改Disk I/O Scheduler on Linux 8 and Later Systems

磁盘 I/O 调度器会对磁盘 I/O 请求进行重新排序、延迟或合并,以实现更高的吞吐量和更低的延迟。
Linux 提供多种磁盘 I/O 调度器,在 Oracle Linux 8 及更高版本、RHEL 8 及更高版本以及 SUSE Linux Enterprise Server 15 及更高版本系统中,包括 mq-deadline、none、kyber 和 bfq。对于 Oracle 自动存储管理(Oracle ASM),您应咨询存储供应商,以确定最合适的 I/O 调度器配置,从而获得最佳性能。
总体而言,Oracle 建议在这些系统上:
对于旋转存储设备(HDD),将 I/O 调度器设置为 mq-deadline;
对于非旋转存储设备(如 SSD 和 NVMe),将 I/O 调度器设置为 none。

以上为官方文档内容,本次实验对性能不要求,就不修改了。

2.8.修改/etc/hosts

vi /etc/hosts
192.168.0.127 rac1
192.168.0.128 rac2

192.168.0.129 rac1-vip
192.168.0.130 rac2-vip

192.168.0.131 rac-scan

10.0.0.200 rac1-priv
10.0.0.201 rac2-priv

2.9.系统文件

以下的配置均以官网给出的为准,可根据相关的BUG进行调整。

vi /etc/security/limits.conf
grid         soft    nproc   2048
grid         hard    nproc   16384
grid         soft    nofile  1024
grid         hard    nofile  65536
grid         soft    stack   10240
grid         hard    stack   32768

oracle       soft    nproc   2048
oracle       hard    nproc   16384
oracle       soft    nofile  1024
oracle       hard    nofile  65536
oracle       soft    stack   10240
oracle       hard    stack   32768
vi /etc/sysctl.conf

kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
kernel.shmall = 4194304
kernel.shmmax = 10307921510
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.aio-max-nr=3145728

配置生效

sysctl -p

/etc/pam.d/login添加:

vi /etc/pam.d/login
session required pam_limits.so

/etc/profile添加:

vi /etc/profile
if [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
       ulimit -u 16384
       ulimit -n 65536
    else
       ulimit -u 16384 -n 65536
    fi
fi

2.10.禁用SELinux与防火墙

setenforce 0
vi /etc/sysconfig/selinux
SELINUX=disabled
systemctl stop  firewalld
systemctl disable  firewalld

2.11.配置NTP(chrony)服务

Linux 8默认使用chrony作为时钟服务。我这边的实验环境的NTP服务器为192.168.35.252

dnf install chrony

vi /etc/chrony.conf
添加以下2个配置
allow 192.168.0.0/16
server 192.168.35.252 iburst

重启

systemctl restart chronyd
systemctl status chronyd
systemctl enable chronyd

2.12.配置oracle、grid用户的ssh互信

ssh生成公钥/私钥 (oracle、grid用户)

ssh-keygen -t rsa -P ''

输入内容直接按回车

cd ~/.ssh
cat id_rsa.pub

将2个节点id_rsa.pub的内容,复制出来写入到2个节点的authorized_keys文件中

cd ~/.ssh
vi authorized_keys

在2个节点分别测试ssh联通性(oracle、grid用户都要)

ssh 10.1.200.120
提示输入yes
exit
ssh 10.1.200.121
提示输入yes
exit

也可使用 sshUserSetup.sh 进行配置,会更加简单,看个人习惯。

2.13.oracle、grid用户环境变量配置

oracle用户,2个节点上配置:

export TMP=/tmp 
export TMPDIR=$TMP 
export ORACLE_SID=orcl1   #节点1的配置
#export ORACLE_SID=orcl2  #节点2的配置
export ORACLE_BASE=/u01/app/oracle 
export ORACLE_HOME=$ORACLE_BASE/product/23.0.0/dbhome_1
export TNS_ADMIN=$ORACLE_HOME/network/admin 
export PATH=/usr/sbin:$PATH 
export PATH=$ORACLE_HOME/bin:$PATH 
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib 
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib 
umask 022

grid用户,2个节点上配置:

export TMP=/tmp 
export TMPDIR=$TMP 
export ORACLE_SID=+ASM1   #节点1的配置
#export ORACLE_SID=+ASM2  #节点2的配置
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=//u01/app/23.0.0/grid
export PATH=/usr/sbin:$PATH 
export PATH=$ORACLE_HOME/bin:$PATH 
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib 
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib 
umask 022

3.安装部署

3.1.安装grid

3.1.1.解压

cp V1043786-01.zip /u01/app/23.0.0/grid/
cd /u01/app/23.0.0/grid/	
unzip V1043786-01.zip

3.1.2.安装cvuqdisk

用root用户安装

cd /u01/app/23.0.0/grid/cv/rpm/
rpm -iv cvuqdisk-1.0.10-1.rpm

把文件cvuqdisk-1.0.10-1.rpm拷贝到其他节点,同样方法安装

3.1.3.可视化安装

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以下几个问题忽略
在这里插入图片描述
在这里插入图片描述
运行root.sh的时候会报错: ora-27350
在这里插入图片描述
是因为目前Oracle 23ai 的集群仅支持exadata一体机,为了实验为目的,需要修改相应的参数跳过检查。该步骤可以安装前修改。

修改参数(root用户),2个节点都改

cat /u01/app/23.0.0/grid/crs/install/crsconfig_params|grep ASMCA_ARGS
ASMCA_ARGS=

修改为

ASMCA_ARGS=-param "_exadata_feature_on=true"

然后就能运行成功
在这里插入图片描述
后面的步骤就比较简单,略过。
在这里插入图片描述

3.1.4.创建磁盘组

在这里插入图片描述

在这里插入图片描述
创建 arch 与 data的磁盘组,步骤略过。结果如下:
在这里插入图片描述

3.2.安装oracle数据库

3.2.1.解压

cp V1043785-01.zip /u01/app/oracle/product/23.0.0/dbhome_1
cd /u01/app/oracle/product/23.0.0/dbhome_1
unzip V1043785-01.zip

3.2.2.可视化安装

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以下报错略过
在这里插入图片描述
在这里插入图片描述

3.3.DBCA建库

同样因为要检查是否为exadata一体机的原因,所以这边需要跳过检查。要用以下命令

dbca -createDatabase -initParams "_exadata_feature_on=true"

在这里插入图片描述
后面就比较简单了,根据自己的需求进行选择,略过。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐