正德厚生,臻于至善

Oracle 26ai RAC 图形界面安装指南(VirtualBox + OL 8.10)

配套笔记:《Oracle 26ai RAC 脚本方式部署指南》
本文档是图形界面步骤,适合第一次装、需要看着界面点的场景。


1. 环境信息

主机名IP用途
ebsdb110.0.20.61节点1
ebsdb210.0.20.62节点2
ebsdb1-vip10.0.20.63节点1 VIP
ebsdb2-vip10.0.20.64节点2 VIP
ebs-scan10.0.20.65SCAN
ebsdb1-priv110.0.21.61私网1
ebsdb2-priv110.0.21.62私网1
ebsdb1-priv210.0.22.61私网2
ebsdb2-priv210.0.22.62私网2

网络规划

接口网段VirtualBox 模式用途ebsdb1 IPebsdb2 IP
eth010.0.2.0/24NAT互联网访问10.0.2.61/2410.0.2.62/24
eth110.0.20.0/24Host-OnlyRAC public10.0.20.61/2410.0.20.62/24
eth210.0.21.0/24Internal NetworkRAC private110.0.21.61/2410.0.21.62/24
eth310.0.22.0/24Internal NetworkRAC private210.0.22.61/2410.0.22.62/24
  • eth0 网关:10.0.2.2,DNS:10.0.2.2
  • 域名:dehetu.com
  • 软件目录:/bzebs/prod/26.0.0/grid(GI)、/bzebs/prod/db/26.0.0(DB)
  • ASM 磁盘组:OCR(10G×1)、OCRBACK(10G×1)、DATA(30G×4)、ARCH(20G×1)
  • DB SID:BZCDB1 / BZCDB2

2. 宿主机:创建并挂载共享盘

VM 必须关机。PowerShell 以普通用户运行。

$VBOX      = "D:\Oracle\VirtualBox\VBoxManage.exe"
$SharedDir = "D:\OracleVMs\ASM"
$VM1       = "ebsdb1"
$VM2       = "ebsdb2"
$CtrlName  = "SATA"
$PortCount = 8

# 前置检查:VM 必须关机
$running = & $VBOX list runningvms
if ($running -match ('"' + [regex]::Escape($VM1) + '"|"' + [regex]::Escape($VM2) + '"')) {
  throw "请先关闭 $VM1 / $VM2"
}

# 创建共享盘目录
if (-not (Test-Path -LiteralPath $SharedDir)) {
  [IO.Directory]::CreateDirectory($SharedDir) | Out-Null
}

# 盘清单
$DISKS = @(
  @{ Name = "OCR01";  SizeMB = 10240; Port = 1 },
  @{ Name = "OCR02";  SizeMB = 10240; Port = 2 },
  @{ Name = "DATA01"; SizeMB = 30720; Port = 3 },
  @{ Name = "DATA02"; SizeMB = 30720; Port = 4 },
  @{ Name = "DATA03"; SizeMB = 30720; Port = 5 },
  @{ Name = "DATA04"; SizeMB = 30720; Port = 6 },
  @{ Name = "ARCH01"; SizeMB = 20480; Port = 7 }
)

# 创建 Fixed VMDK(先清孤儿登记)
foreach ($d in $DISKS) {
  $file = Join-Path $SharedDir ($d.Name + ".vmdk")
  & $VBOX closemedium disk $file 2>&1 | Out-Null
  if (Test-Path -LiteralPath $file) {
    Write-Host "跳过:$($d.Name).vmdk"
    continue
  }
  & $VBOX createmedium disk --filename $file --size $d.SizeMB --format VMDK --variant Fixed
  if ($LASTEXITCODE -ne 0) { throw "createmedium 失败:$file" }
  Write-Host "创建:$($d.Name).vmdk ($($d.SizeMB) MB)"
}

# 扩展现有 SATA 控制器端口数(关键!默认 PortCount=1 会静默拒绝 port 1+)
foreach ($vm in @($VM1, $VM2)) {
  & $VBOX storagectl $vm --name $CtrlName --portcount $PortCount --hostiocache off
  if ($LASTEXITCODE -ne 0) { throw "storagectl 失败:$vm" }
  Write-Host "$vm $CtrlName PortCount=$PortCount, hostiocache=off"
}

# 挂载到双节点
foreach ($vm in @($VM1, $VM2)) {
  foreach ($d in $DISKS) {
    $file = Join-Path $SharedDir ($d.Name + ".vmdk")
    & $VBOX storageattach $vm --storagectl $CtrlName --port $d.Port --device 0 `
      --type hdd --medium $file --mtype shareable
    if ($LASTEXITCODE -ne 0) { Write-Warning "attach 失败:$vm port $($d.Port)" }
    else { Write-Host "OK  $vm  port $($d.Port)  <- $($d.Name).vmdk" }
  }
}

# 验收:两节点应各有 7 个 vmdk 挂载点
foreach ($vm in @($VM1, $VM2)) {
  $n = (& $VBOX showvminfo $vm --machinereadable | Select-String '\.vmdk"').Count
  Write-Host "$vm 共享盘挂载点:$n"
}

3. Guest OS 基线(ebsdb1 / ebsdb2 都执行)

3.1 关闭防火墙、SELinux、avahi

systemctl disable --now firewalld
systemctl stop avahi-daemon.socket && systemctl stop avahi-daemon
systemctl disable avahi-daemon.socket && systemctl disable avahi-daemon

sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config
setenforce 0

3.2 时间同步(chrony + 阿里云 NTP)

cat > /etc/chrony.conf <<EOF
server ntp.aliyun.com iburst
server cn.ntp.org.cn iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow 10.0.0.0/16
local stratum 10
EOF

systemctl enable --now chronyd
chronyc sources -v
# 应看到 ntp.aliyun.com 状态为 ^*(已同步)

3.3 网卡配置(全部手工)

# ebsdb1
nmcli connection add type ethernet ifname eth0 con-name wan   ipv4.method manual ipv4.addresses 10.0.2.61/24   ipv4.gateway 10.0.2.2   ipv4.dns 10.0.2.2
nmcli connection add type ethernet ifname eth1 con-name pub    ipv4.method manual ipv4.addresses 10.0.20.61/24  ipv4.never-default yes
nmcli connection add type ethernet ifname eth2 con-name priv1 ipv4.method manual ipv4.addresses 10.0.21.61/24  ipv4.never-default yes
nmcli connection add type ethernet ifname eth3 con-name priv2 ipv4.method manual ipv4.addresses 10.0.22.61/24  ipv4.never-default yes
nmcli connection up wan; nmcli connection up pub; nmcli connection up priv1; nmcli connection up priv2

# ebsdb2
nmcli connection add type ethernet ifname eth0 con-name wan   ipv4.method manual ipv4.addresses 10.0.2.62/24   ipv4.gateway 10.0.2.2   ipv4.dns 10.0.2.2
nmcli connection add type ethernet ifname eth1 con-name pub    ipv4.method manual ipv4.addresses 10.0.20.62/24  ipv4.never-default yes
nmcli connection add type ethernet ifname eth2 con-name priv1 ipv4.method manual ipv4.addresses 10.0.21.62/24  ipv4.never-default yes
nmcli connection add type ethernet ifname eth3 con-name priv2 ipv4.method manual ipv4.addresses 10.0.22.62/24  ipv4.never-default yes
nmcli connection up wan; nmcli connection up pub; nmcli connection up priv1; nmcli connection up priv2

验收:

ping -c2 10.0.20.62   # ebsdb1 上
ping -c2 10.0.21.62   # priv1
ping -c2 10.0.22.62   # priv2
ip -br a

3.4 hostname 与 hosts

# ebsdb1
hostnamectl set-hostname ebsdb1.dehetu.com
# ebsdb2
hostnamectl set-hostname ebsdb2.dehetu.com

两台机器写入完全相同的 /etc/hosts:

cat >> /etc/hosts <<EOF
###HOSTIP###
10.0.20.61 ebsdb1.dehetu.com ebsdb1
10.0.20.62 ebsdb2.dehetu.com ebsdb2
###VIP###
10.0.20.63 ebsdb1-vip.dehetu.com ebsdb1-vip
10.0.20.64 ebsdb2-vip.dehetu.com ebsdb2-vip
###SCANIP###
10.0.20.65 ebs-scan.dehetu.com ebs-scan
###PRIVATEIP###
10.0.21.61 ebsdb1-priv1.dehetu.com ebsdb1-priv1
10.0.21.62 ebsdb2-priv1.dehetu.com ebsdb2-priv1
10.0.22.61 ebsdb1-priv2.dehetu.com ebsdb1-priv2
10.0.22.62 ebsdb2-priv2.dehetu.com ebsdb2-priv2
EOF

验收:

getent hosts ebsdb1 ebsdb2 ebs-scan
ping -c2 ebsdb2

3.5 预安装包与用户组

# 仓库
dnf install -y oraclelinux-release
dnf config-manager --set-enabled ol8_addons -y

# 预安装包
dnf -y install oracle-ai-database-preinstall-26ai.x86_64

# grid 的 limits(preinstall 默认只配 oracle)
/bin/cp /etc/security/limits.d/oracle-ai-database-preinstall-26ai.conf \
        /etc/security/limits.d/grid.conf
sed -i "s/oracle/grid/g" /etc/security/limits.d/grid.conf

# sysctl 模板
[ -f /etc/sysctl.conf.26ai ] && /bin/cp -pr /etc/sysctl.conf.26ai /etc/sysctl.conf

# 清理旧版本 limits
cd /etc/security/limits.d/ && mkdir -p backup
mv *19* *21* *23* *ebs* backup/ 2>/dev/null || true

# 常用工具
dnf -y install epel-release
dnf config-manager --set-enabled powertools
dnf makecache
dnf -y install tree nmap dos2unix lrzsz nc lsof wget tcpdump htop iftop iotop sysstat nethogs rng-tools vim-enhanced gcc gcc-c++ psmisc net-tools bash-completion libaio cmake screen rlwrap bzip2 lftp telnet bind-utils tigervnc-server tigervnc kernel-headers kernel-devel make rsync lvm2 iperf3
# 清理旧用户/组
for u in oracle grid; do
  id $u >/dev/null 2>&1 && userdel -r $u
done
for g in oinstall dba asmdba asmoper asmadmin oper backupdba dgdba kmdba racdba; do
  getent group $g >/dev/null && groupdel $g
done

# 重建组
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 asmdba
groupadd -g 54324 asmoper
groupadd -g 54325 asmadmin
groupadd -g 54326 oper
groupadd -g 54327 backupdba
groupadd -g 54328 dgdba
groupadd -g 54329 kmdba
groupadd -g 54330 racdba

# 建用户
useradd -u 54321 -g oinstall -G dba,oper,asmdba,asmoper,backupdba,dgdba,kmdba,racdba oracle
useradd -u 54322 -g oinstall -G dba,asmadmin,asmdba,asmoper grid

# 密码
echo "oracle" | passwd --stdin oracle
echo "grid"   | passwd --stdin grid
id oracle; id grid

3.6 目录与环境变量

# 软件目录
mkdir -p /bzebs/prod/26.0.0/grid
mkdir -p /bzebs/prod/grid
mkdir -p /bzebs/prod/db/26.0.0
chown -R grid:oinstall   /bzebs
chown -R oracle:oinstall /bzebs/prod/db
# grid 环境变量(ebsdb2 的 ORACLE_SID 改 +ASM2)
cat > /home/grid/.bash_profile <<'EOF'
export ORACLE_BASE=/bzebs/prod/grid
export ORACLE_HOME=/bzebs/prod/26.0.0/grid
export ORACLE_SID=+ASM1
export PATH=$ORACLE_HOME/bin:$PATH
export DISPLAY=:0
EOF
chown grid:oinstall /home/grid/.bash_profile

# oracle 环境变量(ebsdb2 的 ORACLE_SID 改 BZCDB2)
cat > /home/oracle/.bash_profile <<'EOF'
export ORACLE_BASE=/bzebs/prod/db
export ORACLE_HOME=/bzebs/prod/db/26.0.0
export ORACLE_SID=BZCDB1
export PATH=$ORACLE_HOME/bin:$PATH
export DISPLAY=:0
EOF
chown oracle:oinstall /home/oracle/.bash_profile

3.7 SSH 等价

root / grid / oracle 三个身份都要在两节点间免密互访。

# grid
su - grid
ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa
ssh -o StrictHostKeyChecking=no ebsdb2 date
ssh-copy-id grid@ebsdb2
ssh ebsdb2 date

# oracle
su - oracle
ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa
ssh -o StrictHostKeyChecking=no ebsdb2 date
ssh-copy-id oracle@ebsdb2
ssh ebsdb2 date

# root
ssh-keygen -t rsa -N '' -f /root/.ssh/id_rsa
ssh -o StrictHostKeyChecking=no ebsdb2 date
ssh-copy-id root@ebsdb2

4. ASM 存储配置(ASMLib)

在 ebsdb1 上执行创建,ebsdb2 上只做 scandisks。

4.1 安装 ASMLib

yum install -y kmod-oracleasm oracleasm-support
rpm -ivh /tmp/oracleasmlib-3.1.3-1.el8.x86_64.rpm

4.2 确认盘与分区

lsblk
# sda=系统盘(100G),sdb~sdh=7 块共享盘
# 按大小:2×10G(OCR/OCRBACK) + 4×30G(DATA) + 1×20G(ARCH)

# 给每块共享盘建一个主分区
for d in sdb sdc sdd sde sdf sdg sdh; do
  echo -e "n\np\n1\n\n\nw" | fdisk /dev/$d
done
partprobe /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh

4.3 配置 oracleasm 服务

oracleasm configure -i
# Default user: grid
# Default group: asmadmin
# Start on boot: y
# Scan on boot: y
# Max disks: 2048
# iofilter: y

systemctl enable oracleasm
systemctl restart oracleasm
systemctl status oracleasm

4.4 创建 ASM 盘标签

oracleasm createdisk -v OCR01   /dev/sdb1
oracleasm createdisk -v OCR02   /dev/sdc1
oracleasm createdisk -v DATA01  /dev/sdg1
oracleasm createdisk -v DATA02  /dev/sdf1
oracleasm createdisk -v DATA03  /dev/sde1
oracleasm createdisk -v DATA04  /dev/sdd1
oracleasm createdisk -v ARCH01  /dev/sdh1

oracleasm scandisks
oracleasm listdisks
# 应输出:ARCH01 DATA01 DATA02 DATA03 DATA04 OCR01 OCR02

4.5 第二节点扫描(ebsdb2)

partprobe /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh
oracleasm scandisks
oracleasm listdisks
# 应看到和 ebsdb1 完全相同的 7 个标签

4.6 验证

ls -l /dev/oracleasm/disks/
# 属主 grid:asmadmin,权限 0660

cd /dev/disk/by-label && ls -l
# ARCH01 -> ../../sdh1
# DATA01 -> ../../sdg1
# DATA02 -> ../../sdf1
# DATA03 -> ../../sde1
# DATA04 -> ../../sdd1
# OCR01  -> ../../sdb1
# OCR02  -> ../../sdc1

5. Grid Infrastructure 安装(gridSetup.sh)

5.1 前置准备

# root 执行:建 inventory 指针
cat > /etc/oraInst.loc <<EOF
inventory_loc=/bzebs/prod/oraInventory
inst_group=oinstall
EOF
chown grid:oinstall /etc/oraInst.loc
chmod 664 /etc/oraInst.loc

5.2 启动安装

# root 执行:允许图形界面
xhost +

# grid 用户执行
su - grid
cd /tmp/grid_home
./gridSetup.sh

5.3 步骤说明

步骤界面选择/填写
1Configuration OptionConfigure Oracle Grid Infrastructure for a New Cluster
2Cluster ConfigurationConfigure cluster to manage Oracle RAC databases
3Grid Plug and PlayCreate Local SCAN;Cluster Name=ebs;SCAN Name=ebs-scan;SCAN Port=1521
4Cluster Node Information已有 ebsdb1/ebsdb1-vip;点 Add → ebsdb2 / ebsdb2-vip;下方 SSH 互信:OS Username=grid,Password=grid,点 Setup,提示成功后 OK
5Network Interface Usageeth1 → Public;eth2 → ASM & Private;eth3 → ASM & Private
6Storage OptionUse Oracle Flex ASM for storage;勾选 “Configure a separate disk group to store automatic backups of OCR”
7Create ASM Disk GroupDisk Group Name=OCR;Redundancy=External;Disk Discovery Path 改成 ORCL:*;勾选 OCR01;再点 Create 建 OCRBACK:Disk Group Name=OCRBACK,External,勾选 OCR02
8ASM PasswordUse same passwords;输入 Oracle_2026
9Automatic Self Correction勾选 Enable Automatic Self Correction
10Failure IsolationDo not use IPMI
11Management Options不勾选 Register with EM Cloud Control
12Operating System GroupsOSASM=asmadmin;OSDBA for ASM=asmdba;OSOPER for ASM=asmoper
13Installation LocationOracle Base=/bzebs/prod/grid;Software Location=/bzebs/prod/26.0.0/grid
14Create InventoryInventory Directory=/bzebs/prod/oraInventory;oinstall group
15Root Script Execution勾选 Automatically run;选 Use root credential;输入 root 密码
16Prerequisite Checks实验环境点 Ignore All(警告不影响);Next
17Summary核对配置,点 Install

等待安装完成(20~40 分钟),root 脚本自动执行。

5.4 安装后验证

crsctl check crs
crsctl stat res -t
asmcmd lsdg
srvctl config asmnetwork

6. ASM 磁盘组创建(asmca)

6.1 启动

su - grid
asmca

6.2 创建磁盘组

磁盘组名Redundancy选择磁盘
DATAExternalDATA01, DATA02, DATA03, DATA04
ARCHExternalARCH01

点 Create,确认两个磁盘组都是 MOUNTED(2 of 2)。


7. DB 软件安装(runInstaller)

7.1 启动

# root 执行
xhost +

# oracle 用户执行
su - oracle
cd /tmp/db_home
./runInstaller

7.2 步骤说明

步骤界面选择/填写
1Configuration OptionSet Up RAC Software Only
2Installation TypeOracle Real Application Clusters database installation
3Node Selection勾选 ebsdb1、ebsdb2;SSH 互信:OS Username=oracle,Password=oracle,点 Setup
4Database EditionEnterprise Edition
5Installation LocationOracle Base=/bzebs/prod/db;Software Location=/bzebs/prod/db/26.0.0
6Operating System GroupsOSdba=dba;OSoper=oper;OSbackup=backupdba;OSdgdba=dgdba;OSkmdba=kmdba;OSracdba=racdba
7Root Script Execution勾选 Automatically run;Use root credential;输入 root 密码
8Prerequisite ChecksIgnore All
9Summary核对后点 Install

等待安装完成(15~30 分钟)。


8. 建库(dbca)

8.1 启动

su - oracle
dbca

8.2 步骤说明

步骤界面选择/填写
1Database OperationCreate Database
2Creation ModeAdvanced Configuration
3Database TypeOracle RAC database
4Deployment TypeAdmin Managed;Database Name=BZCDB;勾选 ebsdb1、ebsdb2
5Database IdentificationGlobal Database Name=BZCDB;Prefix=BZCDB
6Storage OptionUse ASM
7ASM Disk GroupsData Files → +DATA;Recovery Area → +ARCH
8Fast Recovery Area+ARCH;大小 20G
9Network Configuration默认 LISTENER
10Data Vault不启用
11Configuration Options内存自动管理;字符集 AL32UTF8
12Management Option不注册 EM Express
13Operating System Groups默认
14Summary核对后点 Finish

等待建库完成(30~60 分钟)。


9. 验证

# 集群状态
crsctl stat res -t

# 数据库状态
srvctl status database -d BZCDB
srvctl status asm

# 实例状态
sqlplus / as sysdba
SELECT instance_name, status FROM gv$instance;
# 应看到 BZCDB1 和 BZCDB2 都 OPEN

赞(0) 打赏
未经允许不得转载:徐万新之路 » Oracle 26ai RAC 图形界面安装指南(VirtualBox + OL 8.10)

支持快讯、专题、百度收录推送、人机验证、多级分类筛选器,适用于垂直站点、科技博客、个人站,扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、文章图片弹窗、自动缩略图等...

联系我们

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册