
1. 为什么还要写 Oracle 19c 的安装教程Oracle 19c 是 Oracle 数据库 12c 之后的一个长期支持版本官方版本号写作 19.3.0.0后续通过 RU 补丁可以打到 19.25 这样的版本。很多企业的核心业务系统、ERP、报表平台至今仍跑在 19c 上原因很直接它是 19c 系列里被官方标注为 Long Term Support 的版本稳定、生态成熟、踩坑资料多。你如果正在做数据迁移、搭建测试环境、准备 OCP 考试或者单纯想在自己机器上跑一套完整的 Oracle 环境19c 基本是绕不开的一站。这篇内容我打算把 Windows 和 Linux 两个环境的完整安装流程都讲一遍。Windows 适合本地开发、单机测试、教学演示图形化安装向导对新手友好Linux我以 CentOS 7.9 为例适合模拟生产环境因为绝大多数企业的 Oracle 都部署在 Linux 服务器上。两套流程我都会给出可复现的步骤、参数计算过程以及我自己踩过的坑。适合谁看有基本计算机操作能力、想入门 Oracle 的开发者需要快速搭一套测试库的运维准备数据库相关认证的考生。不需要你事先精通 Linux但至少要会用 cd、ls 这类基础命令。全文会涉及 CentOS 7.9 下载、VMware 虚拟机安装、Linux 常用命令、内核参数配置、监听配置等内容我会尽量把每一步的“为什么”讲清楚而不是让你照着敲完还不知道在干嘛。2. 安装前的整体规划与方案选型2.1 两个环境到底该怎么选很多人一上来就问“我该装 Windows 还是 Linux”其实这取决于你的目的。如果你只是想学 SQL、练 PL/SQL、跑个小 demoWindows 版装完就能用省去大量系统配置。如果你要模拟生产、学 RMAN 备份、学 Data Guard、学 ASM那必须上 Linux因为 Windows 上很多高级特性要么不支持要么和生产的差异太大。我的建议是新手先用 Windows 把数据库跑起来熟悉 SQL*Plus、监听、实例这些概念等有感觉了再在 VMware 里装一台 CentOS 7.9走一遍 Linux 安装。这样学习曲线是平滑的不会一上来就被内核参数、依赖包、权限问题劝退。2.2 硬件与系统的最低要求Oracle 19c 对资源的要求不算低尤其是 Linux 环境。下面这张表是我实测下来比较稳妥的配置低于这个值安装过程会各种报错。项目Windows 环境Linux 环境CentOS 7.9CPU双核 2.0GHz 以上双核 2.0GHz 以上内存最低 4GB建议 8GB最低 4GB建议 8GB磁盘40GB 以上空闲40GB 以上空闲建议单独挂载 /u01交换分区系统自动管理内存 8GB 时建议 8GB swap系统版本Windows 10/11 64 位CentOS 7.9 64 位这里有个细节Linux 下 Oracle 官方推荐 swap 大小和内存挂钩。内存 1-2GB 时 swap 取内存的 1.5 倍2-16GB 时 swap 等于内存大小超过 16GB 时 swap 取 16GB 即可。我一般直接给 8GB swap省心。2.3 安装介质与依赖准备你需要提前下载好这些东西别装到一半才发现缺文件Oracle Database 19c 安装包。Windows 是WINDOWS.X64_193000_db_home.zipLinux 是LINUX.X64_193000_db_home.zip。注意 19c 的 Linux 版是 zip 格式不是早年那种两个 zip 解压合并的套路了。CentOS 7.9 镜像用于 VMware 虚拟机安装。VMware Workstation或同类虚拟化软件用于跑 Linux 虚拟机。Xshell 或同类终端工具方便远程连 Linux。一个趁手的文本编辑器改配置文件用。提示Oracle 官网下载需要登录账号安装包体积在 2.5GB 到 3GB 之间提前下好别等到装的时候现下。3. Windows 环境完整安装实操3.1 解压与启动安装向导Windows 版的安装相对直白。把WINDOWS.X64_193000_db_home.zip解压到一个路径不含中文和空格的目录比如D:\oracle19c\db_home。这一点非常重要Oracle 的安装程序对中文路径和空格极其敏感路径里带个空格都可能导致后面建库失败。解压完成后进入目录双击setup.exe。如果系统弹 UAC 提示选“是”。安装向导启动后第一步会让你选配置类型通常选“创建并配置单实例数据库”这样装完直接有一个可用的库省事。3.2 系统类与安装用户的选择向导里会让你选“桌面类”还是“服务器类”。桌面类会自动帮你把内存、字符集这些参数配好适合本地学习服务器类给你完全的控制权适合模拟生产。我一般选服务器类因为能自己指定 SID、字符集、内存分配学到的更多。接下来是安装用户。Windows 下有两种用当前 Windows 用户或者新建一个专用的 Oracle 用户。生产环境肯定用专用用户但本地测试用当前用户也没问题省去权限配置的麻烦。如果你选专用用户记得这个用户要有“作为服务登录”的权限否则后面实例起不来。3.3 全局数据库名与 SID 的设定这一步是核心。全局数据库名Global Database Name和 SID 的关系要搞清楚SID 是实例名全局数据库名通常是SID.域名的形式。比如 SID 叫orcl域名用默认的全局库名就是orcl。如果你要建多个库SID 不能重复。字符集我强烈建议选AL32UTF8。虽然有些老系统还在用ZHS16GBK但新项目一律 UTF8避免以后中文乱码、迁移麻烦。选字符集的时候向导里有个“使用 Unicode”的选项勾上就是 AL32UTF8。内存分配这块向导会根据你的物理内存给个推荐值。8GB 内存的机器SGA 给 2GB 左右、PGA 给 1GB 左右比较合适。别把内存全给数据库操作系统自己也要用。3.4 监听与口令设置监听配置保持默认即可端口 1521监听名 LISTENER。口令这里有个坑Oracle 12c 之后口令里如果包含特殊字符在某些客户端连接时会出问题。我一般用大小写字母加数字的组合长度 8 位以上既满足复杂度要求又不容易出幺蛾子。安装向导最后会给你一个摘要页把前面所有配置列出来。一定要仔细核对尤其是路径、SID、字符集这三项一旦点“安装”就没法回头改了。确认无误后点安装剩下的就是等Windows 下大概 20 到 40 分钟取决于机器性能。3.5 安装后验证与常见收尾装完之后用 SQL*Plus 验证一下。打开命令提示符执行sqlplus / as sysdba如果能进到SQL提示符说明实例正常。再执行select instance_name, status from v$instance;看到OPEN状态就成功了。如果报ORA-12560: TNS:protocol adapter error多半是监听没起来去服务里看OracleOraDB19Home1TNSListener这个服务是不是在运行。Windows 下还有个常见问题装完之后系统变慢。这是因为 Oracle 的服务默认是自动启动的占了不少内存。如果你只是偶尔用可以把服务改成手动启动用的时候再开。4. Linux 环境CentOS 7.9完整安装实操4.1 虚拟机创建与系统安装先在 VMware 里新建虚拟机选 CentOS 7.9 的 ISO 镜像。内存给 8GB磁盘给 60GB网络模式选 NAT 或桥接都行。安装 CentOS 的时候软件选择里勾“GNOME 桌面”或者“最小安装”都可以我习惯最小安装然后按需装包系统更干净。分区这块我建议手动分/boot给 1GBswap给 8GB/给 20GB剩下的全部给/u01。为什么单独给/u01因为 Oracle 的软件和数据库文件默认都放这儿单独挂载方便以后扩容也符合生产规范。系统装完后先做几件基础事改主机名、配静态 IP、关防火墙和 SELinux。这几步不做后面监听和远程连接会各种不通。hostnamectl set-hostname oracle19c systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config注意生产环境不要直接关防火墙要按需放行 1521 端口。这里关掉只是为了实验环境省事。4.2 依赖包安装与内核参数配置Oracle 在 Linux 上跑需要一堆依赖包。用 yum 一次性装齐yum install -y binutils compat-libcap1 compat-libstdc-33 gcc gcc-c glibc glibc-devel ksh libaio libaio-devel libgcc libstdc libstdc-devel libXi libXtst make sysstat unixODBC unixODBC-devel装完依赖改内核参数。编辑/etc/sysctl.conf加上这些fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 2097152 kernel.shmmax 4294967296 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 1048576这里重点说kernel.shmmax。它决定单个共享内存段的最大值一般设成物理内存的一半或更大。8GB 内存的机器设成 42949672964GB是安全的。kernel.shmall是共享内存总页数用 shmmax 除以页大小通常 4096 字节得到4GB/40961048576但官方推荐值给的是 2097152留了余量。改完执行sysctl -p生效。然后改/etc/security/limits.conf加用户资源限制oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 327684.3 创建用户组与 Oracle 用户Oracle 安装需要几个用户组oinstall安装组、dba数据库管理组、oper操作组。创建命令groupadd oinstall groupadd dba groupadd oper useradd -g oinstall -G dba,oper oracle passwd oracle给 oracle 用户设个密码然后创建安装目录并授权mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1 mkdir -p /u01/app/oraInventory chown -R oracle:oinstall /u01 chmod -R 775 /u01目录结构这块dbhome_1是 Oracle 主目录ORACLE_HOMEoraInventory是清单目录。这两个路径后面配置环境变量要用到别搞混。4.4 配置 oracle 用户环境变量切换到 oracle 用户编辑~/.bash_profile加上export ORACLE_BASE/u01/app/oracle export ORACLE_HOME/u01/app/oracle/product/19.3.0/dbhome_1 export ORACLE_SIDorcl export PATH$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH$ORACLE_HOME/lib:/lib:/usr/lib export NLS_LANGAMERICAN_AMERICA.AL32UTF8NLS_LANG这个变量很关键它决定客户端显示的语言和字符集。设成AMERICAN_AMERICA.AL32UTF8能避免很多中文乱码问题。改完执行source ~/.bash_profile生效。4.5 解压安装包并静默安装把LINUX.X64_193000_db_home.zip上传到/u01/app/oracle/product/19.3.0/dbhome_1目录下用 oracle 用户解压cd $ORACLE_HOME unzip LINUX.X64_193000_db_home.zip解压完目录里会多出一个runInstaller。Linux 下可以用图形界面装也可以用静默模式。图形界面需要配 X11 转发比较麻烦我一般用静默安装写一个响应文件。先准备响应文件db_install.rsp关键参数如下oracle.install.optionINSTALL_DB_SWONLY UNIX_GROUP_NAMEoinstall INVENTORY_LOCATION/u01/app/oraInventory ORACLE_HOME/u01/app/oracle/product/19.3.0/dbhome_1 ORACLE_BASE/u01/app/oracle oracle.install.db.InstallEditionEE oracle.install.db.OSDBA_GROUPdba oracle.install.db.OSOPER_GROUPoper oracle.install.db.OSBACKUPDBA_GROUPdba oracle.install.db.OSDGDBA_GROUPdba oracle.install.db.OSKMDBA_GROUPdba oracle.install.db.OSRACDBA_GROUPdba然后执行./runInstaller -silent -responseFile /home/oracle/db_install.rsp -ignorePrereq-ignorePrereq是忽略预检查实验环境可以用生产环境不建议。安装过程大概 15 到 30 分钟。装到 80% 左右会提示你用 root 执行两个脚本/u01/app/oraInventory/orainstRoot.sh /u01/app/oracle/product/19.3.0/dbhome_1/root.sh开另一个终端用 root 执行完回到安装终端按回车继续。4.6 建库与监听配置软件装完后用dbca建库。静默建库命令dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbName orcl -sid orcl \ -responseFile NO_VALUE \ -characterSet AL32UTF8 \ -sysPassword YourPassword \ -systemPassword YourPassword \ -createAsContainerDatabase false \ -totalMemory 2048 \ -emConfiguration NONE这里-createAsContainerDatabase false表示建的是传统非 CDB 库适合大多数传统应用。如果你要玩多租户改成 true。-totalMemory 2048是给实例分配 2GB 内存。建库完成后配监听。用netca静默配置netca -silent -responseFile /home/oracle/netca.rsp然后启动监听lsnrctl start验证一下lsnrctl status sqlplus / as sysdba能进 SQL*Plus 并看到实例 OPENLinux 环境就算装好了。5. 常见问题与排查技巧实录5.1 安装阶段高频报错速查下面这张表是我这些年装 Oracle 遇到最多的报错整理出来方便你对照排查。报错信息常见原因解决方法ORA-12560监听未启动或实例未起检查 lsnrctl status启动监听和实例ORA-01034实例未启动sqlplus / as sysdba 后 startupORA-27102共享内存不足调大 kernel.shmmax 和 shmallORA-00845/dev/shm 太小挂载时加大 tmpfs 或调小 memory_targetINS-08109响应文件参数错误检查 rsp 文件路径和参数拼写依赖包缺失未装 compat-libstdc 等用 yum 补齐依赖5.2 几个容易被忽略的坑第一个坑是/dev/shm。CentOS 7 默认/dev/shm是内存的一半如果你给数据库分配的内存超过这个值启动实例时会报 ORA-00845。解决办法是在/etc/fstab里加一行tmpfs /dev/shm tmpfs defaults,size4G 0 0然后重新挂载。第二个坑是主机名解析。Oracle 安装时会解析主机名如果/etc/hosts里没配好安装会卡住或者监听起不来。确保/etc/hosts里有127.0.0.1 主机名这一行。第三个坑是文件句柄数。oracle 用户的 nofile 如果没设够建库到一半会报“too many open files”。前面 limits.conf 里设的 65536 就是干这个用的改完要重新登录 oracle 用户才生效。5.3 安装后的性能与维护建议装完只是开始。我一般会做几件事把归档模式打开生产必须配一个定时备份脚本把memory_target或sga_target根据实际负载调优。测试环境可以偷懒但生产环境这些一步都不能少。还有个小技巧Oracle 19c 的 RU 补丁建议打上。19.3.0.0 是基础版打到 19.25 这样的版本能修掉不少已知问题。打补丁用opatch流程是先解压补丁包停实例和监听执行opatch apply再起监听和实例最后跑datapatch。这个过程比装库还容易出错建议先在测试环境练手。6. 双环境安装的经验总结与延伸Windows 和 Linux 两套装下来我的体会是Windows 胜在快和省事适合快速验证想法Linux 胜在贴近生产学到的技能直接能用在工作里。如果你时间有限我建议先花两小时把 Windows 版跑通建立信心再花半天啃 Linux 版。Linux 安装里最耗时的不是敲命令而是排查环境问题。依赖包、内核参数、权限、主机名解析任何一项没配好都会卡住。我的做法是写一个初始化脚本把系统配置部分全部自动化下次装新机器直接跑脚本省去重复劳动。最后分享一个实用技巧装完之后用sqlplus连一下执行select * from v$version;确认版本号。如果显示的是 19.3.0.0.0说明基础版装对了如果后面还有补丁号说明 RU 也打上了。这个命令比看安装日志快得多是我每次装完必做的第一件事。