OEL9.7 安装 Oracle 26ai RAC

📢📢📢📣📣📣

作者:IT邦德

中国DBA联盟(ACDU)成员,15年DBA工作经验

Oracle、PostgreSQL ACE

CSDN博客专家及B站知名UP主,全网粉丝15万+

擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复,

安装迁移,性能优化、故障应急处理

文章目录

  • 一、安裝前准备
    • [1.1 软件下载](#1.1 软件下载)
      • [1.1.1 26ai RAC地址](#1.1.1 26ai RAC地址)
      • [1.1.2 OEL9.7地址](#1.1.2 OEL9.7地址)
    • [1.2 网络规划](#1.2 网络规划)
    • [1.3 ASM磁盘组规划](#1.3 ASM磁盘组规划)
  • 二、用户及网络
    • [2.1 新建用户和组](#2.1 新建用户和组)
    • [2.2 创建目录](#2.2 创建目录)
    • [2.3 环境变量](#2.3 环境变量)
      • [2.3.1 Grid用户](#2.3.1 Grid用户)
      • [2.3.2 Oracle用户](#2.3.2 Oracle用户)
    • [2.3.3 root用户](#2.3.3 root用户)
    • [2.4 hosts文件及网卡](#2.4 hosts文件及网卡)
      • [2.4.1 hosts 配置](#2.4.1 hosts 配置)
  • 三、共享存储配置
    • [3.1 新建存储文件](#3.1 新建存储文件)
    • [3.2 配置虚拟机](#3.2 配置虚拟机)
    • [3.3 操作系统磁盘规划](#3.3 操作系统磁盘规划)
  • 四、多链路配置
    • [4.1 配置 yum本地源](#4.1 配置 yum本地源)
    • [4.2 配置多路径](#4.2 配置多路径)
      • [4.2.1 安装multipath](#4.2.1 安装multipath)
      • [4.2.2 生成配置文件](#4.2.2 生成配置文件)
      • [4.2.3 激活multipath多路径](#4.2.3 激活multipath多路径)
      • [4.2.4 查看状态](#4.2.4 查看状态)
      • [4.2.5 开机自启动服务](#4.2.5 开机自启动服务)
    • [4.3 配置 UDEV](#4.3 配置 UDEV)
  • 五、操作系统配置
    • [5.1 操作系统](#5.1 操作系统)
    • [5.2 内存](#5.2 内存)
    • [5.3 swap](#5.3 swap)
    • [5.4 安装依赖包](#5.4 安装依赖包)
    • [5.5 关闭防火墙](#5.5 关闭防火墙)
    • [5.6 关闭linux安全](#5.6 关闭linux安全)
    • [5.7 chrony配置](#5.7 chrony配置)
    • [5.8 修改login](#5.8 修改login)
    • [5.9 修改limits.conf](#5.9 修改limits.conf)
    • [5.10 修改内核参数](#5.10 修改内核参数)
    • [5.11 停止avahi-daemon服务](#5.11 停止avahi-daemon服务)
    • [5.12 /etc/profile配置](#5.12 /etc/profile配置)
  • 六、Grid集群软件安装
    • [6.1 上传软件包](#6.1 上传软件包)
    • [6.2 解压grid安装包](#6.2 解压grid安装包)
    • [6.3 安装cvuqdisk](#6.3 安装cvuqdisk)
    • [6.4 互信配置](#6.4 互信配置)
    • [6.5 GI配置预检查](#6.5 GI配置预检查)
    • [6.6 执行安装](#6.6 执行安装)
    • [6.7 挂载ASM盘](#6.7 挂载ASM盘)
  • [七、Oracle DataBase软件安装](#七、Oracle DataBase软件安装)
    • [7.1 解压](#7.1 解压)
    • [7.2 解压安装](#7.2 解压安装)
  • 八、DBCA创建实例
  • 九、RAC启停
    • [9.1 关闭](#9.1 关闭)
    • [9.2 启动](#9.2 启动)

一、安裝前准备

OS版本:Oracle Linux Server release 9.7

内存:至少8G

1.1 软件下载

1.1.1 26ai RAC地址

https://www.oracle.com/database/technologies/oracle26ai-linux-downloads.html

1.1.2 OEL9.7地址

https://yum.oracle.com/oracle-linux-isos.html

1.2 网络规划

1.3 ASM磁盘组规划

二、用户及网络

2.1 新建用户和组

groupadd -g 54321 oinstall

groupadd -g 54322 dba

groupadd -g 54323 oper

groupadd -g 54324 backupdba

groupadd -g 54325 dgdba

groupadd -g 54326 kmdba

groupadd -g 54327 asmdba

groupadd -g 54328 asmoper

groupadd -g 54329 asmadmin

groupadd -g 54330 racdba

useradd -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba,racdba -u 10000 oracle

useradd -g oinstall -G dba,asmdba,asmoper,asmadmin,racdba -u 10001 grid

echo "oracle" | passwd --stdin oracle

echo "grid" | passwd --stdin grid

2.2 创建目录

mkdir -p /u01/app/23.26.1/grid

mkdir -p /u01/app/grid

mkdir -p /u01/app/oracle/product/23.26.1/dbhome_1

chown -R grid:oinstall /u01

chown -R oracle:oinstall /u01/app/oracle

chmod -R 775 /u01

2.3 环境变量

2.3.1 Grid用户

复制代码
cat >> /home/grid/.bash_profile << "EOF"
umask 022
export LANG=en_US
export ORACLE_SID=+ASM1
export ORACLE_TERM=xterm
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/23.26.1/grid
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export PATH=.:$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
EOF

source /home/grid/.bash_profile

2.3.2 Oracle用户

复制代码
cat >> /home/oracle/.bash_profile << "EOF"
export LANG=en_US
umask 022
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/23.26.1/dbhome_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export ORACLE_SID=PROD1
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
EOF

source /home/oracle/.bash_profile

2.3.3 root用户

复制代码
vi .bash_profile
export ORACLE_HOME=/u01/app/23.26.1/grid
export PATH=$PATH:$ORACLE_HOME/bin

2.4 hosts文件及网卡

2.4.1 hosts 配置

--root用户下,2个节点均操作

cp /etc/hosts /etc/hosts_date +"%Y%m%d_%H%M%S"

echo '#public ip

192.168.2.20 srv01

192.168.2.21 srv02

#private ip

10.10.0.1 srv01-priv

10.10.0.2 srv02-priv

#vip

192.168.2.22 srv01-vip

192.168.2.23 srv02-vip

#scanip

192.168.2.24 srv-racscan'>> /etc/hosts

hostnamectl set-hostname srv01

hostnamectl set-hostname srv02

三、共享存储配置

3.1 新建存储文件

复制代码
vmware-vdiskmanager.exe -c -s 10GB -a lsilogic -t 2 "E:\VMware_File\Sharedisk26ai\share-ocr01.vmdk" 
vmware-vdiskmanager.exe -c -s 10GB -a lsilogic -t 2 "E:\VMware_File\Sharedisk26ai\share-ocr02.vmdk" 
vmware-vdiskmanager.exe -c -s 10GB -a lsilogic -t 2 "E:\VMware_File\Sharedisk26ai\share-ocr03.vmdk" 
vmware-vdiskmanager.exe -c -s 20GB -a lsilogic -t 2 "E:\VMware_File\Sharedisk26ai\share-data01.vmdk"
vmware-vdiskmanager.exe -c -s 20GB -a lsilogic -t 2 "E:\VMware_File\Sharedisk26ai\share-data02.vmdk"
vmware-vdiskmanager.exe -c -s 20GB -a lsilogic -t 2 "E:\VMware_File\Sharedisk26ai\share-arch01.vmdk"

3.2 配置虚拟机

找到虚拟机的配置文件.vmx,加入以下内容

#shared disks configure

diskLib.dataCacheMaxSize=0

diskLib.dataCacheMaxReadAheadSize=0

diskLib.dataCacheMinReadAheadSize=0

diskLib.dataCachePageSize=4096

diskLib.maxUnsyncedWrites = "0"

disk.locking = "FALSE"

scsi1.sharedBus = "virtual"

scsi1.present = "TRUE"

scsi1.virtualDev = "lsilogic"

scsi1:0.mode = "independent-persistent"

scsi1:0.deviceType = "disk"

scsi1:0.present = "TRUE"

scsi1:0.fileName = "E:\VMware_File\Sharedisk26ai\share-ocr01.vmdk"

scsi1:0.redo = ""

scsi1:1.mode = "independent-persistent"

scsi1:1.deviceType = "disk"

scsi1:1.present = "TRUE"

scsi1:1.fileName = "E:\VMware_File\Sharedisk26ai\share-ocr02.vmdk"

scsi1:1.redo = ""

scsi1:2.mode = "independent-persistent"

scsi1:2.deviceType = "disk"

scsi1:2.present = "TRUE"

scsi1:2.fileName = "E:\VMware_File\Sharedisk26ai\share-ocr03.vmdk"

scsi1:2.redo = ""

scsi1:3.mode = "independent-persistent"

scsi1:3.deviceType = "disk"

scsi1:3.present = "TRUE"

scsi1:3.fileName = "E:\VMware_File\Sharedisk26ai\share-data01.vmdk"

scsi1:3.redo = ""

scsi1:4.mode = "independent-persistent"

scsi1:4.deviceType = "disk"

scsi1:4.present = "TRUE"

scsi1:4.fileName = "E:\VMware_File\Sharedisk26ai\share-data02.vmdk"

scsi1:4.redo = ""

scsi1:5.mode = "independent-persistent"

scsi1:5.deviceType = "disk"

scsi1:5.present = "TRUE"

scsi1:5.fileName = "E:\VMware_File\Sharedisk26ai\share-arch01.vmdk"

scsi1:5.redo = ""

3.3 操作系统磁盘规划

四、多链路配置

4.1 配置 yum本地源

复制代码
mount /dev/cdrom /mnt

echo "[localREPO]" >> /etc/yum.repos.d/my.repo
echo "name=localhost8" >> /etc/yum.repos.d/my.repo
echo "baseurl=file:///mnt/BaseOS" >> /etc/yum.repos.d/my.repo
echo "gpgcheck=0" >> /etc/yum.repos.d/my.repo
echo "enabled=1" >> /etc/yum.repos.d/my.repo

echo "[localREPO_APP]" >> /etc/yum.repos.d/my.repo
echo "name=localhost8_app" >> /etc/yum.repos.d/my.repo
echo "baseurl=file:///mnt/AppStream" >> /etc/yum.repos.d/my.repo
echo "gpgcheck=0" >> /etc/yum.repos.d/my.repo
echo "enabled=1" >> /etc/yum.repos.d/my.repo

yum repolist

4.2 配置多路径

4.2.1 安装multipath

systemctl status multipathd.service

若没有则执行以下命令安装:

yum install -y device-mapper*

4.2.2 生成配置文件

mpathconf --enable --with_multipathd y

以上命令,会生成一个配置文件multipath.conf

cat /etc/multipath.conf

查看scsi_id

复制代码
[root@srv01 ~]# /usr/lib/udev/scsi_id -g -u /dev/sdc
/usr/lib/udev/scsi_id -g -u /dev/sdb
36000c293e882f001bfdfbd0149b8c1d0
/usr/lib/udev/scsi_id -g -u /dev/sdc
36000c29cfd11459849fa8d2c9f4dc1c9
/usr/lib/udev/scsi_id -g -u /dev/sdd
36000c29685dc13f386419a261dad244d
/usr/lib/udev/scsi_id -g -u /dev/sde
36000c297a502e02ef1cce51a2697da72
/usr/lib/udev/scsi_id -g -u /dev/sdf
36000c299a7b8e711113652b69e7cd3cd
/usr/lib/udev/scsi_id -g -u /dev/sdg
36000c29facc541ce942bd6173e3d1365

cp /etc/multipath.conf /etc/multipath.conf.bak

复制代码
cat <<EOF>> /etc/multipath.conf
multipaths {
  multipath {
  wwid "36000c293e882f001bfdfbd0149b8c1d0"
  alias asm_ocr01
  }
  multipath {
  wwid "36000c29cfd11459849fa8d2c9f4dc1c9"
  alias asm_ocr02
  }
  multipath {
  wwid "36000c297a502e02ef1cce51a2697da72"
  alias asm_ocr03
  }
  multipath {
  wwid "36000c29685dc13f386419a261dad244d"
  alias asm_data01
  }  
  multipath {
  wwid "36000c299a7b8e711113652b69e7cd3cd"
  alias asm_data02
  }
  multipath {
  wwid "36000c29facc541ce942bd6173e3d1365"
  alias asm_arch01
  }
}
EOF

4.2.3 激活multipath多路径

systemctl start multipathd.service

重新加载:multipath -r

查看多路径:multipath -ll

4.2.4 查看状态

systemctl status multipathd.service

4.2.5 开机自启动服务

systemctl enable multipathd.service

root@srv01 \~# multipath -v3 | grep 3600

root@srv01 \~# mpathconf

4.3 配置 UDEV

root@srv01 \~# cd /dev/mapper

root@srv01 mapper# ll

注意:2个节点均执行,root用户

root@srv01 \~# cd /dev/mapper

复制代码
for i in asm_*; do
  printf "%s %s\n" "$i" "$(udevadm info --query=all --name=/dev/mapper/"$i" | grep -i dm_uuid)" >>/dev/mapper/udev_info
done
while read -r line; do
  dm_uuid=$(echo "$line" | awk -F'=' '{print $2}')
  disk_name=$(echo "$line" | awk '{print $1}')
  echo "KERNEL==\"dm-*\",ENV{DM_UUID}==\"${dm_uuid}\",SYMLINK+=\"${disk_name}\",OWNER=\"grid\",GROUP=\"asmdba\",MODE=\"0660\"" >>/etc/udev/rules.d/99-oracle-asmdevices.rules
done < /dev/mapper/udev_info

udevadm control --reload-rules

udevadm trigger --type=devices

ll /dev/dm*

五、操作系统配置

5.1 操作系统

root@srv01 \~# cat /etc/oracle-release

Oracle Linux Server release 9.7

5.2 内存

root@srv01 \~# grep MemTotal /proc/meminfo | awk '{print $2}'

32398736

5.3 swap

root@srv01 \~# free -h

root@srv01 \~# grep SwapTotal /proc/meminfo | awk '{print $2}'

5.4 安装依赖包

yum install -y bc binutils compat-openssl11 elfutils-libelf fontconfig glibc glibc-devel glibc-headers ksh libaio libasan liblsan libX11 libXau libXi libXrender libXtst libxcrypt-compat libgcc libibverbs librdmacm libstdc++ libxcb libvirt-libs make policycoreutils policycoreutils-python-utils smartmontools sysstat

5.5 关闭防火墙

注意:root用户两个节点均操作

systemctl stop firewalld

systemctl disable firewalld

systemctl status firewalld

5.6 关闭linux安全

root@srv01 \~# vi /etc/selinux/config

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

5.7 chrony配置

systemctl status chronyd

yum -y install chrony

vi /etc/chrony.conf

sources 命令显示 chronyd 正在访问的当前时间源的信息。

可以使用可选参数 -v 来包括详细信息。在这种情况下,会输出额外的标头行显示字段含义的信息。

$ chronyc sources

5.8 修改login

root@srv01 \~# cp /etc/pam.d/login /etc/pam.d/login_bak

root@srv01 \~# echo "session required pam_limits.so" >> /etc/pam.d/login

5.9 修改limits.conf

复制代码
cat <<EOF>> /etc/security/limits.conf
#ORACLE SETTING
grid  soft  nproc 16384
grid  hard  nproc 16384
grid  soft  nofile 1024
grid  hard  nofile 65536
grid  soft  stack 10240
grid  hard  stack 32768
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack  10240
oracle hard stack  32768
oracle hard memlock 3428352
oracle soft memlock 3428352
EOF

memlock计算的原则:物理内存的90%(单位是KB)

5.10 修改内核参数

复制代码
cat <<EOF>> /etc/sysctl.conf
#ORACLE SETTING
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmax = 22548578304
kernel.shmall = 5637144576
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
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 = 1048586
EOF

kernel.shmmax参数:需要根据实际物理内存计算,此处按节点物理内存128GB计算;建议kernel.shmmax参数取值为节点物理内存的70%,单位为字节,

即12870%10241024 1024=96207267430.4(向上取整为96207267430)。

kernel.shmall参数:根据SGA/PAGE_SIZE计算。

kernel.sem参数:如果客户单个数据库需要支持的process数超过12000,请按照实际情况配置。

生效命令:/sbin/sysctl --system

5.11 停止avahi-daemon服务

systemctl disable avahi-daemon.socket

systemctl disable avahi-daemon.service

systemctl stop avahi-daemon.socket

添加NOZEROCONF=yes参数

vi /etc/sysconfig/network

NOZEROCONF=yes

5.12 /etc/profile配置

复制代码
cat >> /etc/profile << EOF
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
        if [ $SHELL = "/bin/ksh" ]; then
            ulimit -p 16384
              ulimit -n 65536
  else
   ulimit -u 16384 -n 65536
      fi
    umask 022
fi
EOF

六、Grid集群软件安装

6.1 上传软件包

root@srv01 \~# ll /opt

6.2 解压grid安装包

复制代码
[grid@srv01 ~]$ echo $ORACLE_HOME
/u01/app/23.26.1/grid
[root@srv01 ~]$ cp /opt/LINUX.X64_2326100_grid_home.zip /u01/app/23.26.1/grid

[root@srv01 ~]# chown -R grid:oinstall /u01/app/23.26.1/grid
[root@srv01 ~]# chmod -R 775 /u01/app/23.26.1/grid
[root@srv01 ~]# su - grid
[grid@srv01 ~]$ cd $ORACLE_HOME
[grid@srv01 grid]$ unzip LINUX.X64_2326100_grid_home.zip

6.3 安装cvuqdisk

root用户下2个节点都要操作

root@srv01 \~# cd /u01/app/23.26.1/grid/cv/rpm

root@srv01 rpm# ll

root@srv01 rpm# export CVUQDISK_GRP=oinstall

root@srv01 rpm# rpm -ivh cvuqdisk-1.0.10-1.rpm

6.4 互信配置

分别使用grid和oracle用户验证SSH connectivity:

#grid用户等效性

srv01

ssh-keygen -t rsa

ssh-keygen -t dsa

srv02

ssh-keygen -t rsa

ssh-keygen -t dsa

复制代码
srv01
cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
ssh grid@srv02 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
srv02
cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
ssh grid@srv01 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys

for h in srv01 srv01-priv srv02 srv02-priv;
do
ssh -l grid -o StrictHostKeyChecking=no $h date;
done

#oracle用户等效性

复制代码
srv01
ssh-keygen -t rsa
ssh-keygen -t dsa
srv02
ssh-keygen -t rsa
ssh-keygen -t dsa

srv01
cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
ssh oracle@srv02 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
srv02
cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys
ssh oracle@srv01 cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys

for h in srv01 srv01-priv srv02 srv02-priv;
do
ssh -l oracle -o StrictHostKeyChecking=no $h date;
done

6.5 GI配置预检查

在配置GRID前,使用grid用户执行runcluvf.sh脚本检查环境,修复不满足安装需求的项

su - grid

/u01/app/23.26.1/grid/runcluvfy.sh stage -pre crsinst -n srv01,srv02 -fixup -verbose

6.6 执行安装

复制代码
[grid@srv01 grid]$ export DISPLAY=192.168.2.23:0.0
[grid@srv01 grid]$ ./gridSetup.sh

查看节点信息:crsctl check cluster -all

检查crs运行状态:crsctl check crs

grid@srv01 \~$ crsctl status res -t

6.7 挂载ASM盘

SQL> select name,state from v$asm_diskgroup;

七、Oracle DataBase软件安装

7.1 解压

oracle@srv01 \~ echo ORACLE_HOME

/u01/app/oracle/product/23.26.1/dbhome_1

复制代码
[root@srv01 ~]# cd /opt
[root@srv01 opt]# cp LINUX.X64_2326100_db_home.zip /u01/app/oracle/product/23.26.1/dbhome_1
[root@srv01 ~]# chown -R oracle:oinstall /u01/app/oracle/product/23.26.1/dbhome_1
[root@srv01 ~]# chmod -R 775 /u01/app/oracle/product/23.26.1/dbhome_1

[root@srv01 soft]# su - oracle
[oracle@srv01 ~]$ cd $ORACLE_HOME
[oracle@srv01 dbhome_1]$ unzip LINUX.X64_2326100_db_home.zip

7.2 解压安装

复制代码
[oracle@srv01 dbhome_1]$  export DISPLAY=192.168.2.238:0.0
[oracle@srv01 dbhome_1]$  ./runInstaller

八、DBCA创建实例

复制代码
[root@srv01 ~]# su - oracle
[oracle@srv01 ~]$ export DISPLAY=192.168.2.183:0.0
[oracle@srv01 ~]$ dbca

九、RAC启停

9.1 关闭

oracle:srvctl stop database -d prod

root:crsctl stop crs

9.2 启动

root:crsctl stop crs

oracle:srvctl start database -d prod

crsctl status res -t

相关推荐
每天都要进步哦8 分钟前
SQL单行函数详解:字符、数字、日期、转换与通用函数全解析
数据库·mysql
不剪发的Tony老师12 分钟前
VeloxDB:一款免费开源的轻量级数据库管理工具
数据库·sql
dotnet9017 分钟前
批量生成所有表的修改脚本
数据库·sql·oracle
@Mike@25 分钟前
06-数据库学习笔记(存储模型与数据压缩)
数据库·笔记·学习
南凉北往1 小时前
PandasAI连接LLM对MySQL数据库进行数据分析
数据库·mysql·数据分析
回眸不遇1 小时前
详谈 QT 布局 QLayout::SizeConstraint 和 QSizePolicy 对 QWidget 尺寸的影响
数据库·qt·系统架构
2601_965798471 小时前
MTDb Movie & TV Database Script Setup, Caching, and SEO Guide
linux·服务器·数据库·php
zdl6862 小时前
EasyMarkets:“机器人商业化仍待验证”
数据库·机器人
Freak嵌入式2 小时前
版本混乱 / 依赖缺失?uPyPi:MicroPython 版 PyPI,彻底解决库管理混乱
linux·服务器·数据库·单片机·嵌入式硬件·性能优化·依赖倒置原则
Elastic 中国社区官方博客2 小时前
Elastic 和 OpenAI 合作,将前沿智能引入非结构化企业数据
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai