前两天有个朋友找我帮忙装 Oracle 19c,一上来就说网上的教程看得头晕,要么是复制粘贴的机器翻译,要么是版本对不上号。我笑了,这活儿我干了十几年。当年装 Oracle 9i 时,光环境变量就能折腾一整天。现在 19c 虽然界面友好多了,但坑还是不少。于是我把安装过程拆开来细说一遍,保证你按步骤走,不会出幺蛾子。

先说准备工作,别一上来就双击 setup。Oracle 对操作系统版本、内核参数、依赖包都有要求。如果你是 CentOS 7 或 RHEL 7,记得先检查内核版本,最好在 3.10.0‑957 以上。然后一次性装好依赖包,像 binutils、compat‑libcap1、gcc、glibc‑devel 等,用 yum install 就行。最坑的是 libnsl 包,19c 必须装,但默认源里可能没有,需要手动下载。还有个细节:swap 分区至少要有 4 GB,否则安装过程中会报内存不足。我见过太多人在这上面浪费时间,其实提前跑一遍 Oracle 官方文档里的预检查脚本就能省事。
接着是用户和组的配置。Oracle 不让用 root 安装,必须新建一个 oracle 用户,同时创建 oinstall 和 dba 两个组。这里有个容易踩的坑:用户的 umask 必须设为 022,否则安装时文件权限会乱套。环境变量别偷懒只写在 .bashprofile 里,ORACLEBASE、ORACLEHOME、ORACLESID 这三个必须配好。ORACLEBASE 我习惯放在 /u01/app/oracle,ORACLEHOME 是 /u01/app/oracle/product/19.0.0/dbhome1。很多人把 HOME 和 BASE 搞混,结果启动监听时路径找不到,折腾半天。
然后是内核参数调整。Oracle 对共享内存、信号量、文件句柄这些有硬性要求。编辑 /etc/sysctl.conf,把 kernel.shmall、kernel.shmmax、kernel.sem、fs.file‑max 这些值写进去。shmmax 最好设成物理内存的一半,但别超过 4 GB,否则老版本内核会报错。再改 /etc/security/limits.conf,把 oracle 用户的 nofile、nproc、stack 限制放开。改完记得重启或用 sysctl -p 加载。这一步建议使用官方脚本一键执行,网上有人整理好的模板比自己手敲更靠谱。
安装介质下载也是个坑。Oracle 官网现在下载要注册账号,而且 19c 的安装包大约 2.7 GB。别图省事去第三方网站,我见过有人下载的包被植入挖矿程序。最好从官网或阿里云镜像站获取。下载完两个 zip 包后,用 md5sum 核对哈希值。解压时注意,两个包必须解压到同一个目录,别分开放。我习惯先建个 /tmp/oracleinstall 目录,把包都扔进去,然后用 unzip -q 解压。解压后会看到 database 文件夹,里面有 runInstaller 脚本。
运行安装界面时,很多人直接点“下一步”到底,结果装完后发现少了组件。19c 的安装器是图形化界面,但如果你用的远程 SSH 没开 X11 转发,会报错。这时可以改用静默安装,写一个响应文件。我建议新手先用图形界面装一次,熟悉选项。关键步骤有两个:一是选择安装类型,选“创建和配置数据库”;二是选择字符集,一定要选 AL32UTF8,否则以后导入数据会乱码。内存配置那块,如果服务器内存小于 8 GB,记得把“启用自动内存管理”去掉,手动设成 4 GB,否则装完系统会卡死。
安装过程中最烦的是执行 root 脚本。安装器会提示你用 root 用户跑两个脚本:orainstRoot.sh 和 root.sh。很多人直接切到 root 跑完就完事,结果 oracle 用户的环境变量没有生效。正确做法是先切到 root,source 一下 oracle 用户的 .bashprofile,再执行脚本。root.sh 运行时会自动配置 /etc/oratab 文件,但如果你有多个数据库实例,可能需要手动修改。另外,脚本执行完后会输出监听端口号,默认是 1521,记下来备用。
装完数据库别急着测试连接,先检查监听是否启动,用 lsnrctl status 查看状态。如果没启动,用 lsnrctl start 启动。然后检查实例状态,用 sqlplus / as sysdba 登录,执行 ,显示 OPEN 就对了。常见问题是:第一次登录时,SYS 用户密码是你在安装时设置的,别用默认的 oracle 去尝试。19c 默认开启了密码过期策略,建议立刻修改密码并把过期时间设为无限,否则 90 天后就进不去数据库了。
聊聊配置优化。很多人装完就不管,结果生产环境跑了几个月就出问题。19c 有几个关键参数要调:MEMORYTARGET 别用默认值,根据物理内存设到 60%‑80%;合理分配 SGATARGET 和 PGAAGGREGATE_TARGET;把 PROCESSES 参数调到 300 以上,否则并发一高就报 ORA‑00020。归档日志路径别放默认的闪回区,单独挂个 100 GB 的磁盘。建议装完后直接跑一次 Oracle 的配置顾问脚本,它会自动生成优化建议。
装 Oracle 就像搭积木,每一步都不难,但漏一步就可能前功尽弃。我见过最离谱的情况是,有人装完数据库后发现 /var/log/messages 里全是 错误,查了两天才发现是 ASLR 没关。所以别嫌准备工作烦,把这些细节都处理干净,数据库才能跑得稳当。下次遇到报错,别急着搜百度,先检查环境变量和内核参数,八成问题都在那里。


