ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Oracle 19C 快速部署指南:RPM 安装与一键建库全流程

Oracle 19C 快速部署指南:RPM 安装与一键建库全流程 1. 为什么说 19C 是当前最值得快速部署的版本1.1 版本选型的底层逻辑工作里被问得最多的一句话就是“我想装个 Oracle 用来学习测试或者给一个小项目当数据库到底装哪个版本”我的答案一直很固定Oracle 19C。原因很简单19C 是 Oracle 数据库产品线里生命周期极长的长期支持版本LTS官方对它的支持周期一直持续很久这意味着你学会的安装方式、管理命令、SQL 写法在很长一段时间内都能用得上不用担心版本过时。另一个很现实的因素是19C 在功能上和 21C、23C 差距并没有想象中那么大但对于绝大多数从零开始的新手或者中小企业项目来说19C 的稳定性、资料丰富度、第三方工具兼容性反而是最好的。网上随便一搜Oracle 19C Linux 安装教程、Oracle Database 19C 安装教程、19C 创建用户表空间这类内容铺天盖地。社区讨论度越高你踩坑后越容易搜到解决方案。相比之下装一个太新的版本很多老工具、老教程对不上反而不省心。1.2 三种主流安装方式的取舍我在不同环境里分别试过传统图形界面安装、静默安装和 RPM 包安装下面这张表可以直观看出差距。安装方式是否需要图形界面操作复杂度平均耗时适合场景图形界面安装runInstaller DBCA需要 X11 或 VNC高全程多点下一步错一步就返工40-60 分钟有图形环境的桌面级服务器静默安装响应文件 runInstaller -silent不需要中高响应文件写错一个参数就得从头来30-45 分钟批量无人值守部署或者对安装流程理解较深的人RPM 包安装不需要极低两条命令加一个配置文件15-25 分钟单实例测试环境、生产库快速搭建、DBA 日常效率工具RPM 方案之所以快核心在于 Oracle 官方把大量“体力活”做成了自动化脚本。我从第一次用 RPM 方式装 19C 之后就再也不想回到手工改内核参数、手工创建用户组、手工敲 DBCA 响应的日子了。尤其是当你需要在几台机器上反复搭建实验环境时RPM 方式节省的时间是肉眼可见的。1.3 快速安装的整体流程所谓的“最简单快速”本质上就是把安装过程压缩成四步准备好系统、安装预检包、安装数据库软件包、执行一键配置脚本。听起来好像没什么特别但每一步背后其实都有对应的自动化处理逻辑接下来的内容我会把每一步的细节、参数含义、容易踩的坑全部拆开讲清楚。2. 安装前的环境准备这些坑提前踩掉2.1 硬件和操作系统要求先说明一个很多人容易忽略的事实Oracle 19C 对操作系统版本有明确要求官方认证主要针对 Oracle Linux 7、RHEL 7 和 CentOS 7 这个系列。如果你用的是 RHEL 8 或 RHEL 9也可以尝试安装但很可能会遇到依赖包兼容问题需要额外手动处理就不符合“最简单快速”的初衷了。从我的实测经验来看一台 CentOS 7.9 或 RHEL 7.9 系统是最稳的选择。硬件方面官方最低要求是 2GB 内存但说实话如果你只给虚拟机分 2GB装完数据库后内存就所剩无几了查询稍微大一点就会触发内存交换性能很难看。我的建议是至少 4GB 内存能分 8GB 体验会舒服很多。磁盘方面Oracle 19C 数据库软件加一个初始数据库实例大约需要 8GB 左右的可用空间考虑到后续可能要建表空间、导数据、打补丁建议预留 20GB 以上。还有一个细节是 /tmp 目录。Oracle 安装过程会在 /tmp 下创建大量临时文件如果 /tmp 空间不足配置脚本会直接失败。最小化安装的系统 /tmp 通常不会单独分区而是使用根分区的一部分所以最简单的方法就是在分区规划阶段给根分区多分点空间。2.2 预安装包帮你解决了哪些事RPM 安装方式最核心的组件是oracle-database-preinstall-19c这个预安装包。它的作用相当于一个自动化的“环境配置管家”安装后会自动帮你完成以下事情创建操作系统用户oracle和用户组oinstall、dba创建目录/opt/oracle以及后续软件安装所需的子目录结构自动配置内核参数包括共享内存、信号量、文件句柄限制等自动写入资源限制配置包括nofile、nproc、stack、memlock等参数自动安装 Oracle 运行所需的全部依赖包自动设置 SELinux 为 Permissive 模式熟悉手工安装流程的朋友看到这里应该知道这些步骤如果全部手动做至少需要半小时到一个小时而且任何一个参数写错都可能导致后续安装失败。预安装包把这些全部自动化这就是“快”的最根本原因。2.3 手动检查与微调项虽然预安装包很强大但有两件事我建议你在安装前还是手动确认一下。第一件事是确认系统时间是否正确。数据库对时间非常敏感如果系统时间和实际时间偏差过大不仅后续可能出现奇怪的报错而且将来做数据归档、日志分析时也会被坑到。用date命令看一眼如果时间不对先通过yum install -y ntpdate ntpdate同步一下。第二件事是关闭防火墙的 1521 端口限制或者干脆在测试环境里直接关闭防火墙。Oracle 默认监听端口就是 1521如果防火墙开着但没放行这个端口数据库装好之后其他机器无论如何都连不上而你自己在服务器本机用 sqlplus 登录却是正常的这种问题排查起来非常迷惑。测试环境我一般直接执行systemctl stop firewalld systemctl disable firewalld。生产环境当然不建议这么粗暴但至少要把 1521 端口放进白名单。3. 核心实操RPM 安装软件包加一键建库全记录3.1 下载并安装预安装包我在实际操作中一般使用一台 CentOS 7.9 最小化安装的虚拟机作为演示环境。系统装好后第一步是确认 yum 源可用然后上传或下载两个 RPM 包。第一个是oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm第二个是oracle-database-ee-19c-1.0-1.x86_64.rpm。这两个包都可以从 Oracle 官网免费下载只是需要注册一个 Oracle 账号如果你不想注册也可以在一些可靠的镜像站点找到。安装预安装包的命令如下yum localinstall -y oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm这一步执行完后系统会自动拉取并安装几十个依赖包。如果网络状况好几分钟就能完成。安装结束后可以检查一下oracle用户是否创建成功以及内核参数文件是否已经写入id oracle cat /etc/sysctl.conf | grep -E fs.file-max|kernel.shmmax正常情况下输出里应该能看到oracle用户存在并且 sysctl.conf 里已经有大量 Oracle 相关参数。这一步的作用是让系统达到 Oracle 运行的最低环境要求。在安装数据库软件包之前这个环境必须已就绪否则后面安装数据库包时预检查脚本会直接提示缺少条件。3.2 安装数据库软件包环境准备好后紧接着安装数据库软件包yum localinstall -y oracle-database-ee-19c-1.0-1.x86_64.rpm这个包体积比较大大约 2GB 左右安装过程会持续一段时间。安装完成后你会看到系统里生成了/etc/init.d/oracledb_ORCLCDB-19c这个服务脚本同时/opt/oracle/product/19c/dbhome_1这个 ORACLE_HOME 目录已经创建完毕。这里我重点解释一下这个 RPM 包到底做了什么。它本质上是把 Oracle 数据库软件的二进制文件解压到指定目录然后生成一个配置文件模板和一个建库脚本。所以严格来说执行完这一步只代表了“数据库软件”安装完成还没有真正的数据库实例。接下来还需要修改配置参数并执行一键建库命令。3.3 修改关键配置参数在执行一键建库前需要修改一个配置文件它的路径是vim /etc/sysconfig/oracledb_ORCLCDB-19c.conf文件内容大致如下ORACLE_SIDORCLCDB LISTENER_PORT1521 CHARACTERSETAL32UTF8 DB_MEMORY1024MB这几个参数每个都直接决定了数据库实例的基本属性下面具体说说怎么设置。ORACLE_SID是数据库实例名默认是ORCLCDB一般不需要改熟悉 Oracle 的人都知道这个名字的含义。LISTENER_PORT是监听端口默认 1521除非你的机器上已经有一个程序占用了 1521否则不要动它。CHARACTERSET是字符集默认AL32UTF8如果你确定你的业务主要面向中文且历史系统用的是 GBK可以改成ZHS16GBK。这个参数非常关键因为数据库建成之后再改字符集极其麻烦所以在一开始就要根据实际场景想清楚。DB_MEMORY表示数据库可用内存大小单位为 MB。如果你给虚拟机分配了 4GB 内存建议设置成 2048MB如果只有 2GB 内存就保持 1024MB。这里我特别提醒一句这个值不要设置成超过物理内存的一半以上否则数据库启动时极易出现 OOM 或被系统杀掉进程的情况。3.4 执行一键配置建库加监听参数修改保存后就可以执行一键配置命令了/etc/init.d/oracledb_ORCLCDB-19c configure这个命令会做两件事第一创建一个名为ORCLCDB的数据库实例第二创建并启动监听服务。执行过程中会在屏幕上输出大量日志日志内容类似于 DBCA 的输出。正常情况下整个过程大约需要 10 到 20 分钟具体时间取决于机器性能。在执行之前务必确认/opt/oracle目录有足够的磁盘空间同时确认系统和数据库内存参数没有明显冲突。如果配置过程中途报错不要慌先查看日志。日志位置通常在/opt/oracle/cfgtoollogs/dbca/目录下以ORCLCDB开头命名。日志里会明确写出失败的原因最常见的无非就是内存不足、/tmp 空间不够、端口被占用这几类。执行成功之后数据库就已经在运行了。可以用下面的命令检查监听和数据库进程状态ps -ef | grep ora_ lsnrctl status看到ora_pmon_ORCLCDB进程存在并且监听状态是READY说明数据库已经正常启动。3.5 设置环境变量和首次登录数据库建好之后还需要设置环境变量否则每次登录都要写全路径。切换到oracle用户编辑.bash_profile加入以下内容export ORACLE_BASE/opt/oracle export ORACLE_HOME/opt/oracle/product/19c/dbhome_1 export ORACLE_SIDORCLCDB export PATH$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH$ORACLE_HOME/lib然后执行source ~/.bash_profile使配置生效。此时你就可以用 sqlplus 登录数据库了sqlplus / as sysdba这里需要注意19C 默认使用操作系统认证也就是说只要你是oracle系统用户就可以直接以sysdba身份登录不需要密码。但为了后续远程连接和业务系统访问建议第一时间为sys和system用户设置密码alter user sys identified by 你的密码; alter user system identified by 你的密码;到这里一个可用的 Oracle 19C 单实例数据库就搭建完成了。从执行第一条命令到数据库可用整个过程大约 20 分钟。4. 常见问题与排查技巧实录4.1 配置脚本执行失败的三个高频原因我把平时遇到最多的失败原因整理成了一张速查表如果你在执行/etc/init.d/oracledb_ORCLCDB-19c configure时遇到问题可以按这张表快速定位故障现象根因处理方法日志提示ORA-27102: out of memory系统内存不足或DB_MEMORY设置过大用free -m查看可用内存调小DB_MEMORY后重新执行日志提示ORA-12545或监听无法启动1521 端口被占用用 netstat -tlnp日志提示No space left on device根分区或/opt分区空间不够清理无用文件或重新规划磁盘后从头安装有一个小技巧我想单独强调如果配置脚本失败直接重新执行configure命令往往不会成功因为上一次失败会留下残存的目录和配置文件。稳妥的做法是先把上一次创建的不完整目录清理掉再重新执行。具体来说可以执行rm -rf /opt/oracle/oradata/ORCLCDB rm -rf /opt/oracle/cfgtoollogs/dbca/ORCLCDB /etc/init.d/oracledb_ORCLCDB-19c configure清理之后重新执行成功率会显著提高。4.2 数据库装好了但本地登不进去这种情况通常有三类表现。第一类执行sqlplus / as sysdba后提示SP2-0310这说明环境变量没生效检查.bash_profile中的ORACLE_HOME和ORACLE_SID是否写对然后重新执行source。第二类执行登录后卡在界面没反应大概率是监听没有启动或者lsnrctl进程异常可以先用lsnrctl start启动监听。第三类提示ORA-12514: TNS listener does not currently know of service这说明数据库服务名与监听配置不匹配一般重启监听就好lsnrctl stop lsnrctl start以上问题中环境变量配置错误出现频率最高其次是监听未启动。这两种问题都不是数据库本身损坏所以不要着急重装。4.3 内存和 swap 的优化建议Oracle 19C 对内存的管理方式和 11g 不一样它默认使用自动内存管理也就是由MEMORY_TARGET参数决定数据库进程可以使用的内存总量。在 RPM 安装方式下这个值由配置文件里的DB_MEMORY决定。如果机器物理内存不大我建议额外创建一块 swap 空间作为兜底尤其是当你的虚拟机上还需要跑其他中间件时。下面是临时创建 4GB swap 的常用做法dd if/dev/zero of/swapfile bs1M count4096 chmod 600 /swapfile mkswap /swapfile swapon /swapfile echo /swapfile swap swap defaults 0 0 /etc/fstab有了 swap即使某个瞬时内存峰值偏高系统也不会直接杀掉 Oracle 进程能有效避免很多莫名其妙的故障。4.4 重启后数据库自动启动设置数据库装好之后系统重启时默认不会自动启动数据库。为了省去每次手动启动的麻烦可以执行以下命令把服务设为开机自启systemctl enable oracledb_ORCLCDB-19c作为对照如果是在 CentOS 6 风格的 init 脚本环境里则使用chkconfig oracledb_ORCLCDB-19c on。设置完自启之后重启系统后数据库和监听都会自动起来不需要任何人工干预。这里要提醒一句如果你的数据库属于测试环境而且重启时系统会自动执行一些初始化操作建议你在确认数据库完全正常后再去做其他操作避免在数据库尚未启动完成时就依赖数据库的服务报错。5. 扩展与个人经验从快速安装到生产可用5.1 建库后的基础检查清单很多人看到 sqlplus 能登录就以为万事大吉了实际上数据库刚装完还有一些基础配置需要确认。我习惯按下面这个清单检查一遍-- 1. 检查实例状态确认数据库处于 READ WRITE 模式 select name, open_mode from v$database; -- 2. 检查 PDB 状态19C 默认会创建一个名为 ORCLPDB1 的可插拔数据库 show pdbs; -- 3. 检查告警日志是否有 ORA- 错误 select * from v$alert_log where message_text like %ORA-%;执行完这三条 SQL如果没有任何异常输出基本可以确认这个数据库实例是健康可用的。另外别忘了检查时区select dbtimezone, sessiontimezone from dual;如果时区不是预期的东八区可以通过以下方式修改时区修改后需要重启数据库才生效。不过建议在创建数据库前就考虑好时区省得后面重启。5.2 PDB 的登录和管理方式19C 默认开启了多租户架构安装过程中自动创建的ORCLCDB是容器数据库里面还有一个可插拔数据库ORCLPDB1。很多初学者会把这两个概念搞混。具体来说你直接用sqlplus / as sysdba登录的是容器数据库 CDB平时开发用的业务表空间和数据应该建在 PDB 里。登录 PDB 的方式如下sqlplus syslocalhost:1521/orclpdb1 as sysdba连接之后可以用show con_name确认当前所在容器。如果要在 PDB 里创建业务用户必须先确保当前会话处于 PDB 中再执行创建用户和表空间的操作。这个细节非常重要因为如果在 CDB 里创建了业务用户后续连接 PDB 时看不到这个用户会造成很大的困惑。5.3 快速安装方式的适用范围我在不同环境下用 RPM 方式安装过 19C包括 CentOS 7、RHEL 7也尝试过在 OpenEuler 上折腾。结论是CentOS 7 和 RHEL 7 上体验最好基本无脑安装OpenEuler 需要手动处理一些依赖还要额外下载兼容包不建议新手尝试。如果你手头是 RHEL 8 或 9又需要跑正式业务我更建议直接用 Oracle Linux 8 加对应的 19C RPM 方案或者考虑云平台上的数据库服务省时省力。从生产部署的角度看RPM 方式装的单实例 19C 完全可以承担中小型业务。后续如果要做 Oracle Data Guard 或者 RAC这个基础环境也是可以直接扩展的。不过要注意RAC 对共享存储、网络心跳、集群软件的要求很高和单实例安装完全是两个量级的复杂度真到那一步再逐项搭就好。5.4 一些个人使用心得最后分享几个我实际踩过的坑。第一个是关于字符集。如果你一开始不确定要哪种字符集建议直接选AL32UTF8比ZHS16GBK的通用性和兼容性更好现在新业务都推荐 UTF8后面遇到真实场景再调整成本最低。第二个是关于备份。数据库装好以后强烈建议立刻做一次冷备份也就是把/opt/oracle/oradata/ORCLCDB目录完整打包留底。这个备份可以在数据库出问题的时候快速回滚到初始健康状态比重新执行一遍安装流程快得多省心得多。第三个是关于补丁。很多人安装完成就认为万事大吉其实 19C 从发布到现在已经有很多小版本更新。如果你用于生产建议后续找时间安装最新的 Release Update 补丁。不过补丁安装不是必需的测试环境可以先不管。第四个是关于登录方式。平时用 sqlplus 登录时尽量使用sqlplus / as sysdba这种操作系统认证方式不要频繁使用包含密码的明文连接串尤其在多人共用的服务器上防止密码泄露。远程连接时再使用账号密码加服务名的方式逻辑清晰管理方便。6. 写在最后RPM 方式安装 Oracle 19C是我目前见过真正意义上能称为“最简单快速”的部署路径。它把原本需要手工完成的环境配置、依赖安装、建库建监听全部自动化最适合想快速上手 Oracle 的初学者也适合需要在短时间内搭建多套环境的工程师。我个人在实际操作中的体会是这套流程最大的价值不是省掉的那几十分钟而是把容易出错的人工步骤降到最少。系统环境、用户权限、目录规划这些底层工作全部由预安装包接管剩下的几个参数只要想清楚基本一次就能成功。如果你正要装 19C直接照着上面的流程走遇到问题就看日志找根因大概率能顺顺利利把数据库跑起来。
返回列表