
装数据库这事说难不难说简单也真容易翻车。这套环境到我手里的时候机器上已经放好了 Linux10 的系统镜像和 Oracle 26ai 的安装包版本号看起来挺新我第一反应是去查一下兼容性文档确认一下这套组合的安装路径和之前的 23ai 有没有本质区别。结果一查才发现26ai 不只是版本号往上跳了一级——整个 AI 功能从“可选模块”变成了“核心组件”安装流程、初始化参数、依赖关系都有不少变化。这篇就把我从裸机准备、依赖配置、静默安装到实例跑通的完整过程写出来包括踩过的坑和绕过的路给需要在这套环境上做部署的同学一份能直接抄的作业。1. 方案审视为什么是这个组合、需要什么基础1.1 从 23ai 到 26aiOracle 的 AI 化演进路径Oracle 的 AI 化推进节奏其实从 23ai 就很明显了当时主打的是 AI Vector Search 和 JSON 关系二元性视图把数据库从“存数据的地方”往“跑模型的地方”推了一大步。到了 26ai这一代的核心变化在于 AI 能力不再是锦上添花的插件而是渗透到了安装器、实例初始化、优化器以及日常运维的各个环节。比如安装介质里直接内置了 vector 索引的模板配置DBCA 建库时会出现专门的 AI Workload 类型选项初始化参数里也多了几个和向量内存池、模型推理进程相关的默认值。这给部署带来的直接影响是你不能再像以前装 11g、12c 那样“装完就行”了必须在安装阶段就想清楚这个实例到底要承担什么角色——是纯 OLTP、分析型为主还是要把 AI Vector Search 作为核心卖点。选择不同内存分配、数据文件布局、PGA 和 SGA 的初始比例都会有差异。我在这次部署前专门花了一晚上把 26ai 的 Release Notes 和安装指南里关于“engineered for AI”的部分过了一遍强烈建议你也不要跳过这一步。另外特别要注意的是许可证和功能开关。26ai 和 23ai 一样AI Vector Search 这类功能并不是默认全开的部分特性需要显式启用部分则包含在标准版里。安装前跟业务方确认清楚实际要用的功能范围能省掉后面不少配参数的功夫。1.2 Linux10 环境评估与硬件配置核对先看硬件这是所有问题的基础。Oracle 官方建议的安装底线是 2 核 CPU、8GB 内存但那是“能装”的底线不是“能用”的底线。这台机器配的是 16 核、64GB 内存SSD 阵列做数据盘我评估下来跑 26ai 的 AI 工作负载是比较舒服的。如果你手上的机器内存低于 16GB建议要么加内存要么在安装时把 AI 相关的初始化参数调小否则实例起来后极容易出现内存分配失败。磁盘规划上26ai 的安装包比 23ai 又大了一圈解压后光安装介质就要 15GB 左右。加上数据库软件本体、数据文件、闪回区、重做日志我给 /u01 划了 200GB给 /opt 划了 50GB 用于 staging 目录。这里有个经验staging 目录最好不要和 ORACLE_BASE 放在同一个文件系统上因为安装过程会把介质文件循环读取结束后还要手动清理万一空间被占满会影响数据库的正常运行。操作系统层面用cat /etc/os-release先确认一下发行版和内核版本。Linux10 的内核版本号看上去是在 6.x 的后续演进版本上Oracle 官方兼容性矩阵里对内核版本有明确的最低要求。装之前我还跑了uname -a和df -h确认主机名能正常解析——这一步看着基础但主机名解析问题引发的安装失败案例我见过太多了。1.3 安装路径决策全新部署还是升级如果机器上已经跑着 23ai理论上可以走升级路径官方提供了dbua升级工具和手工升级脚本两种方式。但我的建议是除非有非常强的不停机诉求否则新环境一律走全新安装然后把旧库的数据用 expdp/impdp 或者 Data Guard 的方式迁移过去。理由很简单26ai 对初始化参数的默认值改动很多升级路径虽然能保留现有配置但也可能把旧版本遗留的坑带到新版本排查起来反而更麻烦。这次部署因为是从零开始的干净环境直接选择了全新安装。这也让后面的安装过程少了很多变数——没有旧的 ORACLE_HOME 干扰没有残留的监听配置所有东西都是白纸一张。我个人的经验是能够在干净环境里装新版本就别折腾升级省下的时间足够你做两轮数据校验。2. 环境准备操作系统层面的前期工作2.1 依赖包清单与内核参数配置Oracle 安装对系统依赖包的要求从来都是“多而全”26ai 也不例外。安装器虽然在预检查阶段会列出缺失的包但提前装好能节省大量时间。我在 Linux10 上用 dnf 一次性装齐了主要依赖这里贴一下常用清单dnf install -y binutils compat-libcap1 compat-libstdc-33 \ gcc gcc-c glibc glibc-devel ksh libaio libaio-devel \ libX11-devel libXrender libXrender-devel libgcc libstdc \ libstdc-devel libxcb make net-tools nfs-utils \ policycoreutils python3 python3-pip sysstat smartmontools注意两点。第一compat-libstdc-33 这种老包在较新的发行版里可能已经不在默认源里了需要确认源是否包含兼容仓库。第二26ai 的安装器对 python3 的版本有要求建议装完确认一下python3 --version是否满足 3.9 以上。内核参数这块Oracle 官方在安装文档里给了标准的 sysctl 配置我结合这台机器的内存规模做了一点调整。核心参数和说明如下# /etc/sysctl.conf 中追加 fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 1073741824 kernel.shmmax 4398046511104 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 1048576 vm.max_map_count 1048576 vm.dirty_ratio 30 vm.dirty_background_ratio 3kernel.shmmax 和 kernel.shmall 这两个参数决定共享内存的上限26ai 的 SGA 默认分配策略比以前激进特别是启用了 AI Vector 内存池之后共享内存不足会直接导致实例启动失败。vm.max_map_count 也要特别注意向量索引通常会产生大量内存映射段这个值太小会报 ORA-27100 或相关的内存映射错误。配置完记得sysctl -p使其生效然后用ipcs -lm检查共享内存限制是否真的更新了。这一步虽然基础但很多人容易忽略验证环节结果到建库时才报错。2.2 用户、目录与权限规划Oracle 的安装规范是创建独立的操作系统用户不允许用 root 直接装。这次我按标准分组方案来groupadd oinstall groupadd dba useradd -g oinstall -G dba oracle passwd oracle目录规划上Orale 的 OFAOptimal Flexible Architecture标准我还是继续沿用的虽然看起来有点老派但它最大的好处是路径规则统一后续做备份脚本、监控脚本都方便mkdir -p /u01/app/oracle mkdir -p /u01/app/oraInventory chown -R oracle:oinstall /u01/app/oracle chown -R oracle:oinstall /u01/app/oraInventory chmod -R 775 /u01/app除了这几个目录还有两个地方容易忽略。一个是/tmp空间安装器解压和运行临时文件都会往这里写建议至少预留 2GB 以上另一个是/dev/shm这是 Oracle 实例使用共享内存的重要载体默认大小通常只有物理内存的一半如果机器内存是 64GB/dev/shm默认只有 32GB对 26ai 这种内存大户来说可能不够。修改方式是在/etc/fstab里给/dev/shm加挂载参数把大小调整为物理内存的 80% 左右tmpfs /dev/shm tmpfs defaults,size51g 0 0改完之后mount -o remount /dev/shm生效并用df -h /dev/shm验证。2.3 Oracle 环境变量与 umask 设置oracle 用户的~/.bash_profile是安装前必配的一项。我的配置如下export ORACLE_BASE/u01/app/oracle export ORACLE_HOME/u01/app/oracle/product/26ai/dbhome_1 export ORACLE_SIDorcl26 export PATH$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH$ORACLE_HOME/lib:/usr/lib export NLS_LANGAMERICAN_AMERICA.AL32UTF8 umask 022这里有一个非常容易踩的坑umask 没有设置成 022 的话安装过程中生成的配置文件权限会很奇怪导致后续sqlplus或者监听启动时没有权限读取文件。另一个坑是 ORACLE_HOME 路径里的版本号别写错这一次安装器的默认路径是/u01/app/oracle/product/26ai/dbhome_1如果你之前装过 23ai习惯了写23ai这个路径这里很容易惯性写错。环境变量配完之后记得source ~/.bash_profile生效然后用env | grep ORACLE确认变量都正确加载了。3. 核心实操Oracle 26ai 安装全流程3.1 安装介质获取与校验企业内网环境一般会有官方的软件分发渠道拿到的是 ZIP 压缩包。26ai 的安装包拆成了两个 ZIP一定要全部下载完整再解压否则安装到一半会报文件缺失。我在解压前先做了 SHA-256 校验sha256sum V26ai_Linux_x64_1of2.zip V26ai_Linux_x64_2of2.zip把校验结果和官网给的 checksum 文件比对一致后再按顺序解压到一个干净的 staging 目录mkdir -p /opt/oracle_stage unzip -q V26ai_Linux_x64_1of2.zip -d /opt/oracle_stage unzip -q V26ai_Linux_x64_2of2.zip -d /opt/oracle_stage解压完成后确认/opt/oracle_stage/Database目录下有runInstaller这个可执行文件。这里提醒一句staging 目录的所有者建议改成 oracle否则安装器在读取文件时可能会因为权限问题卡住。用chown -R oracle:oinstall /opt/oracle_stage一把搞定。3.2 静默安装 vs 图形安装参数模板与选择图形安装界面在本地有显示器的环境里用起来最直观但如果是远程服务器配置 X11 转发或者 VNC 都是一堆额外的事。考虑到生产环境通常没有图形界面也为了后续批量部署可以复用配置我这次直接用静默安装。26ai 的静默安装依然是经典的 response file 方式安装介质里有模板文件。先把模板复制出来再改cp /opt/oracle_stage/Database/response/install_oracle26ai.rsp /home/oracle/install26ai.rsp chown oracle:oinstall /home/oracle/install26ai.rsp关键参数我按下述调整oracle.install.responseFileVersion/oracle/install/rspfmt_dbinstall_response_schema_v26_0 oracle.install.optionINSTALL_DB_SWONLY UNIX_GROUP_NAMEoinstall INVENTORY_LOCATION/u01/app/oraInventory ORACLE_BASE/u01/app/oracle oracle.install.db.ORACLE_HOME/u01/app/oracle/product/26ai/dbhome_1 oracle.install.db.ORACLE_HOME_NAMEOraDB26Home1 oracle.install.db.InstallEditionEE oracle.install.db.OSDBA_GROUPdba oracle.install.db.OSOPER_GROUPdba oracle.install.db.OSBACKUPDBA_GROUPdba oracle.install.db.OSDGDBA_GROUPdba oracle.install.db.OSKMDBA_GROUPdba oracle.install.db.OSRACDBA_GROUPdba oracle.install.db.rootconfig.executeRootScriptfalse oracle.install.db.CONFIG_NAMEorcl26 SECURITY_UPDATES_VIA_MYORACLESUPPORTfalse DECLINE_SECURITY_UPDATEStrue注意InstallEditionEE26ai 的企业版才包含完整的 AI Vector 和 SELECT AI 功能标准版虽然能装但后续有些特性会被禁用。rootconfig.executeRootScript先设为 false原因是安装器会在最后阶段提示需要 root 权限执行脚本我们把它放到安装完成后手动执行。准备工作做好后切换到 oracle 用户执行安装su - oracle cd /opt/oracle_stage/Database ./runInstaller -silent -responseFile /home/oracle/install26ai.rsp安装过程中日志输出到/tmp/oraInstall2026-*.log如果中途想确认进度可以开另一个终端 tail 这个日志。安装成功后会提示“Successfully Setup Software”然后让你用 root 执行两个脚本/u01/app/oraInventory/orainstRoot.sh /u01/app/oracle/product/26ai/dbhome_1/root.sh这两个脚本分别初始化 inventory 目录和设置软件所有者权限必须执行否则后续启动会报权限错误。3.3 监听配置与数据库实例创建软件装完后接下来就是配置监听和建库。监听用 netca 静默创建一个默认的LISTENER端口标准是 1521netca -silent -responsefile /opt/oracle_stage/Database/response/netca.rsp如果你不想记这个命令也可以直接用netca -silent -port 1521 -listenertype LISTENER -name LISTENER这种简化方式只要版本支持就行。监听起来后用lsnrctl status确认状态这一步能帮你排除端口被占用、主机名解析失败等问题。建库部分我用的是 dbca 静默模式。26ai 的 dbca 在模板上增加了一个 AI Workload 的建库选项模板文件在$ORACLE_HOME/assistants/dbca/templates下。我这次选择的是General_Purpose_for_AI.dbc模板它会在建库时自动把向量内存池相关的初始化参数配好省去手工调整的麻烦。dbca -silent -createDatabase \ -templateName General_Purpose_for_AI.dbc \ -sid orcl26 \ -gdbName orcl26 \ -sysPassword YourSysPass123 \ -systemPassword YourSystemPass123 \ -datafileDestination /u01/app/oracle/oradata \ -storageType FS \ -characterSet AL32UTF8 \ -memoryMgmtType AUTO_SGA \ -totalMemory 32768这里有几个参数要说明。-totalMemory 32768表示给实例分配 32GB 内存这个值根据机器内存情况调整一般建议不超过物理内存的 60%要给操作系统和未来可能增加的实例留出余量。-memoryMgmtType AUTO_SGA启用自动共享内存管理26ai 的向量内存池会在这个基础上自动扩展不用手工指定具体的 pool 大小。建库过程大概持续 20 到 40 分钟取决于磁盘性能和模板复杂度。执行完后看到 “Database creation complete” 就说明库已经建好了可以试着登录验证sqlplus / as sysdba SQL select status from v$instance;3.4 AI 特性初始化与验证实例起来后验证 26ai 的核心特性是否可用。首先确认数据库版本和 AI 相关功能SELECT version FROM v$instance; -- 期望看到 26.0.x 版本信息 SELECT value FROM v$parameter WHERE name LIKE %vector%;如果上面查到的 vector 相关参数没有值需要手动开启ALTER SYSTEM SET vector_memory_size4G SCOPESPFILE; ALTER SYSTEM SET enable_ai_vector_searchTRUE SCOPEBOTH;vector_memory_size表示用于向量索引的内存池大小我在这台 64GB 的机器上先给了 4GB后续可以根据实际向量数据量再调大。接下来做一个最简单的向量数据读写验证CREATE TABLE demo_vectors (id NUMBER, embedding VECTOR(3)); INSERT INTO demo_vectors VALUES (1, [1.0, 2.0, 3.0]); INSERT INTO demo_vectors VALUES (2, [4.0, 5.0, 6.0]); SELECT id, embedding FROM demo_vectors;再验证一下向量距离计算的语法是否正常工作SELECT id, vector_distance(embedding, [1.0, 2.0, 3.0], EUCLIDEAN) AS dist FROM demo_vectors ORDER BY dist;能正确返回距离值就说明 26ai 的向量存储与检索链路是通的。SELECT AI 这类自然语言转 SQL 的功能还需要额外配置 LLM 服务的连接信息我在这次部署中暂时没有接入外部大模型如果你确实要用建议按官方文档把模型服务和数据库之间的网络安全策略梳理清楚再启用。4. 问题排查与调试实录4.1 内存与共享内存配置问题这次安装过程中遇到的最典型问题是共享内存配置不当。第一次尝试启动实例时报了 ORA-00845: MEMORY_TARGET not supported on this system原因就是/dev/shm太小。这个问题在 26ai 上更容易触发因为默认的 MEMORY_TARGET 比 23ai 更激进。解决方式就是前面说的修改/etc/fstab中的/dev/shm挂载大小tmpfs /dev/shm tmpfs defaults,size51g 0 0 mount -o remount /dev/shm df -h /dev/shm改完之后重启数据库进程。这里有个细节改/dev/shm只对之后启动的进程生效所以你必须在重启数据库实例之前完成修改否则还是报同样的错误。另一个相关的报错是 ORA-27102: out of memory这通常是 kernel.shmmax 设得太小把/etc/sysctl.conf里的kernel.shmmax改成比 SGA 目标值大即可。我一般习惯把 shmmax 设置为物理内存的一半以上比如 64GB 的机器就设为 4398046511104约 4TB这个值设置得大一些不会消耗实际内存只是上限。4.2 图形界面无法启动的替代方案最开始我尝试过在本地工作站上用 X11 转发跑图形安装器结果在 Linux10 上遇到了 GTK 库版本不兼容的问题界面起不来。这也是我转而采用静默安装的直接原因。如果你也执着于图形界面可以试试 VNC 到服务器上操作但要注意两点一是 VNC 会话里跑的安装器有时候颜色深度不对界面显示异常二是必须全程以 oracle 用户身份操作不要在 VNC 里用 root 启动安装器再切换用户。如果只是想快速解决我的建议就是老老实实用 response file 做静默安装。静默安装的日志输出其实非常详细安装到哪一步、缺什么包、哪里权限不对都会明确写到日志里排查起来并不比图形界面慢。4.3 数据库启动失败的日志分析有次执行startup时数据库一直停留在 mounted 状态无法 open。这种问题第一反应是查 alert log位置在/u01/app/oracle/diag/rdbms/orcl26/orcl26/trace/alert_orcl26.log这次查到的原因是系统表空间自动扩展失败数据文件所在的文件系统剩余空间不足 500MB。Oracle 在 open 阶段需要为系统表空间分配额外的段空间不够就卡住了。清理了一部分日志文件后问题解决。另外要留意 listener 日志位置在/u01/app/oracle/diag/tnslsnr/主机名/listener/alert/log.xml如果客户端连接时报 ORA-12514: TNS listener does not currently know of service多半是 tnsnames.ora 里的服务名和实际注册的服务名不一致。可以用lsnrctl services查看监听实际注册的服务名再回去比对客户端的连接串十有八九是大小写或多了.world域名后缀导致的。4.4 常见问题速查表现象可能原因解决方法ORA-00845 启动失败/dev/shm 空间不足修改 /etc/fstab 调大 tmpfs 挂载大小ORA-27102 内存不足kernel.shmmax 设置偏小增大 kernel.shmmax 并 sysctl -p安装器提示缺依赖包系统源缺少 compat 包安装全部官方依赖清单启用兼容仓库远程界面起不来X11 转发或 GTK 版本问题改用静默安装日志排查更快ORA-12514 连接失败服务名不匹配lsnrctl services 核对真实服务名向量表创建报无权限AI Vector 功能未启用ALTER SYSTEM SET enable_ai_vector_searchTRUE数据库 open 卡住数据文件空间不足检查文件系统剩余空间扩大或清理文件5. 安装后的优化与经验总结5.1 性能参数调整建议实例建好之后我习惯先跑一周基础监控再动参数。26ai 的内存管理虽然宣称全自动但 AI 工作负载的场景下有几个参数值得手工关注。vector_memory_size是最重要的一个。如果你打算把向量索引作为核心业务使用建议根据向量表的数据量算一下假设一张表有 100 万行、每行 128 维 float 向量索引占用的内存大约在几百 MB 到 2GB 之间。公式不好一概而论我的经验是先给 4GB跑几个典型的 AI 查询看命中率和响应时间再决定加还是减。SGA 内部的shared_pool_size和db_cache_size在 26ai 里依然建议使用自动管理但pga_aggregate_limit要注意设一个明确的上限防止并行查询或 AI 批处理任务把内存吃穿。我在这次部署里设置pga_aggregate_limit8G配合 32GB 的 SGA整体内存占用稳定在 40GB 左右给操作系统留了足够的缓冲。5.2 备份策略与安全加固新库上线第一件事是确认备份方案。我用的是最简单的 RMAN 本地备份先做一次全备验证链路是否通rman target / RMAN backup database plus archivelog;如果后续要接远程容灾建议配置 Data Guard26ai 的 Data Guard 在 AI Vector 数据的同步上做得比较完善不需要额外手工处理向量表。备份策略上每天增量、每周全备的节奏对于大多数场景都够用。安全加固方面几个基础动作别偷懒远程连接账号设置强密码策略listener.ora里加ADR_BASE和访问控制列表限制只有业务网段能连 1521 端口清理安装过程中遗留的默认密码和示例用户。26ai 安装时会自动创建一些演示账号如果不需要直接锁掉或者删掉。5.3 个人实操心得这次部署最大的感受是26ai 已经不是“传统数据库加个 AI 插件”这么简单了它从安装理念、模板设计到参数默认值都在向 AI 优先的方向倾斜。对于 DBA 来说这意味着你需要了解向量索引怎么组织、内存池怎么划分、模型服务的对接怎么加密这些在未来两三年内会成为 Oracle 数据库运维的常态技能。如果只让我说一条经验那就是别跳过安装前的环境检查。Linux10 搭配 26ai 的组合虽然顺利跑通了但中途那次/dev/shm的问题就是典型的“环境没准备好就急着装”的代价。把内核参数、文件系统、用户权限这些基础打牢剩下的安装过程其实只是按部就班。最后再分享一个小技巧安装日志别急着删。/tmp/oraInstall2026-*.log和 alert log 在数据库运行后遇到奇怪问题时往往是定位历史变更的唯一线索保留至少一个季度再清理排查问题时你会感谢自己当初留了这些日志。