Oracle 19c 安装教程:Windows 与 Linux 环境准备及避坑指南
2026/9/20 11:58:33 网站建设 项目流程

1. 为什么还要写一份 Oracle 19c 的安装教程

Oracle 19c 是很多企业生产环境里跑得最稳的一版数据库,版本号 19.3.0.0,长期支持到 2027 年往上。虽然现在云数据库满天飞,但本地部署的需求一点没少——开发自测、内网隔离环境、老系统迁移、教学实验,都绕不开自己装一套。我前后在 Windows Server 和 CentOS 7.9 上装过不下二十次,踩过的坑从“先决条件检查失败”到“监听起不来”再到“EM Express 打不开”,基本能凑一本错题集。

这篇东西就是把这些年攒下来的实操经验一次性倒出来。Windows 和 Linux 两条线都覆盖,重点放在安装前的环境准备安装后的验证上,因为这两块才是真正卡人的地方。中间那些“下一步下一步”的截图式步骤,网上到处都是,我就不重复了,只挑关键决策点和容易翻车的地方讲。

适合谁看?如果你是第一次装 Oracle 的开发者、运维,或者之前装过但总在某个环节卡住,这篇能帮你省下至少一个通宵。如果你已经是老手,也可以看看我在参数计算和排查思路上的整理,说不定有能直接抄的。

提示:Oracle 19c 的安装介质分 Windows 和 Linux 两个平台,下载时注意选对版本。Linux 下还要区分是单实例还是 RAC,这篇只讲单实例,RAC 的复杂度完全是另一个量级。

2. 安装前的整体思路与环境规划

2.1 先想清楚装在哪、给谁用

装 Oracle 之前,第一件事不是下载安装包,而是想清楚这套库的用途。用途决定了你选 Windows 还是 Linux,也决定了资源怎么分。

  • 纯开发自测:Windows 最省事,图形化安装一路点下去,装完就能用 SQL Developer 连。缺点是 Windows 上 Oracle 的服务会吃掉不少内存,笔记本上跑建议至少 8GB 内存,最好 16GB。
  • 模拟生产环境:必须上 Linux,CentOS 7.9 是主流选择,和大多数企业内网环境一致。好处是资源占用可控,坏处是安装过程全是命令行,对新手不太友好。
  • 教学或实验:建议用虚拟机,VMware 或 VirtualBox 都行,装完可以随时快照回滚。虚拟机配置建议 4 核 CPU、8GB 内存、100GB 磁盘起步,磁盘类型选厚置备,别用精简置备,否则后期扩容麻烦。

我个人的习惯是:Windows 上装一套用于日常开发,Linux 虚拟机里装一套用于测试和演练。两套环境的安装介质是分开的,Windows 是.zip压缩包,Linux 是.zip也是压缩包,但里面的安装程序完全不同。

2.2 版本号里的门道

Oracle 19c 的版本号格式是19.x.x.x,比如19.3.0.0是基础版,后面还有19.25.0.0.241015这样的补丁版本。基础版安装介质在官网可以下载,补丁版本需要支持账号才能获取。

这里有个坑:基础版装完之后,很多新特性是没有的,比如某些安全补丁和性能优化。如果只是学习,基础版够用;如果是生产环境,一定要打补丁到最新。补丁的安装方式有两种:OPatch 和 datapatch,后面会细说。

注意:Oracle 官网下载需要登录账号,注册是免费的。下载页面里选“Database 19c”然后根据平台选对应的 zip 包。Linux 下还要额外下载“Oracle Database 19c Grid Infrastructure”吗?单实例不需要,只有 RAC 才需要 Grid。

2.3 资源规划的核心参数

不管哪个平台,下面这几个参数必须提前算好,否则装到一半报错再回头改,非常折腾。

参数Windows 建议值Linux 建议值说明
内存8GB 以上4GB 以上Linux 下 SGA 和 PGA 加起来别超过物理内存的 80%
交换分区物理内存 1.5 倍物理内存 1.5 倍Linux 下 swap 不够会导致先决条件检查失败
磁盘60GB 以上60GB 以上实际安装完约 10GB,但归档日志和临时文件会涨
/tmp 空间不适用至少 1GBLinux 下 /tmp 太小会直接报错
内核参数不适用shmmax 等后面会给出具体计算方式

Linux 下的内核参数计算有个简单公式:shmmax至少设为物理内存的一半,shmall设为shmmax / 4096。比如 8GB 内存,shmmax = 4294967296shmall = 1048576。这些参数写在/etc/sysctl.conf里,用sysctl -p生效。

3. Windows 环境下的完整安装流程

3.1 安装前的系统准备

Windows 上装 Oracle 19c,第一步是确认系统版本。官方支持 Windows 10、Windows Server 2016/2019,Windows 11 也能装但没在官方列表里,实测没问题。家庭版可以装,但有些企业级功能用不了,建议用专业版或服务器版。

接下来是几个必须做的准备工作:

  1. 关闭杀毒软件和防火墙:安装过程中会写注册表、创建服务,杀毒软件很容易误拦。装完再开。
  2. 设置虚拟内存:如果物理内存小于 16GB,建议把虚拟内存设到 16GB 以上,否则安装时可能报内存不足。
  3. 创建安装目录:不要装在C:\Program Files下,路径里不要有空格和中文。我一般用C:\app\oracle
  4. 以管理员身份运行安装程序:右键setup.exe,选“以管理员身份运行”,否则创建服务会失败。

还有一个容易被忽略的点:Windows 的计算机名不要带下划线或特殊字符,纯字母数字最好。Oracle 的监听器配置对主机名很敏感,带特殊字符会导致监听起不来。

3.2 图形化安装的关键步骤

Windows 下的安装是图形界面,大部分步骤直接下一步就行,但有几个地方必须停下来想清楚。

第一步:配置选项。选“创建并配置单实例数据库”,不要选“仅安装数据库软件”。后者只装软件不建库,适合后续用 DBCA 单独建库的场景,但新手容易搞混。

第二步:系统类。选“桌面类”还是“服务器类”?桌面类会自动分配较小的内存参数,适合开发机;服务器类让你手动指定内存和字符集,适合生产。我一般选服务器类,因为可以自己控制 SGA 大小。

第三步:字符集。这是最容易埋雷的地方。默认是AL32UTF8,如果你要存中文,必须选这个。如果选了WE8ISO8859P1之类的,后面存中文会乱码,改起来非常麻烦。记住:字符集在创建数据库时确定,后期修改几乎等于重建

第四步:口令。Oracle 12c 之后有个“口令复杂度”要求,如果设得太简单会报错。建议用大小写字母加数字加特殊符号的组合,比如Oracle_19c。如果不想被复杂度限制,可以在安装前设置环境变量oracle_install_ignore_prereqs,但不推荐。

第五步:先决条件检查。这一步会检查内存、磁盘、系统版本等。如果报错,不要急着点“忽略”,先看错误信息。常见的错误有:

  • 内存不足:关掉一些程序,或者调大虚拟内存。
  • 磁盘空间不足:清理磁盘,或者换安装路径。
  • 操作系统版本不支持:Windows 11 会报这个,点“忽略”即可。

安装过程大约 20 到 40 分钟,取决于机器性能。装完后会自动创建数据库实例,默认实例名是orcl

3.3 安装后的验证与配置

装完不代表能用,必须做几项验证。

验证监听器:打开命令提示符,输入lsnrctl status。如果看到LISTENER的状态是READY,说明监听正常。如果报TNS-12541,说明监听没起来,用lsnrctl start启动。

验证数据库实例:输入sqlplus / as sysdba,如果能进入 SQL 提示符,说明实例正常。再输入select status from v$instance;,返回OPEN就对了。

验证网络连接:用sqlplus system/Oracle_19c@localhost:1521/orcl连接,如果能连上,说明监听和实例都正常。

配置 EM Express:Oracle 19c 的网页版管理工具叫 EM Express,默认端口是 5500。用exec dbms_xdb_config.sethttpport(5500);设置端口,然后浏览器访问https://localhost:5500/em。注意是 HTTPS,不是 HTTP。

实操心得:Windows 下 Oracle 的服务默认是自动启动的,开机后要等一两分钟才能连。如果不想让它开机自启,可以把OracleServiceORCLOracleOraDB19Home1TNSListener改成手动启动,用的时候再开。

4. Linux 环境下的完整安装流程

4.1 CentOS 7.9 的系统准备

Linux 下装 Oracle 19c,我一般用 CentOS 7.9,因为它的内核版本和 Oracle 的兼容性最好。Ubuntu 也能装,但有些依赖包名字不一样,新手容易卡住。

第一步:安装依赖包。用 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

这些包缺一不可,尤其是compat-libstdc++-33,CentOS 7 默认没有,必须手动装。

第二步:创建用户和组

groupadd oinstall groupadd dba useradd -g oinstall -G dba oracle passwd oracle

oinstall是安装组,dba是数据库管理组。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

目录结构建议按 OFA 标准来,/u01放软件,/u02放数据文件。如果只有一块盘,都放/u01也行。

第四步:修改内核参数。编辑/etc/sysctl.conf,加入:

fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 1048576 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

然后sysctl -p生效。注意shmmaxshmall要根据实际内存调整,上面是 8GB 内存的配置。

第五步:修改用户限制。编辑/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 32768

这些限制不设的话,安装时可能报“无法创建进程”或“文件句柄不足”。

4.2 静默安装还是图形化安装

Linux 下有两种安装方式:图形化和静默。图形化需要 X11 转发,如果你在 Windows 上用 Xshell 或 MobaXterm 连 Linux,可以开 X11 转发,然后运行./runInstaller。静默安装则是用响应文件,全程命令行,适合脚本化部署。

我一般推荐先图形化装一遍,熟悉流程后再用静默。图形化安装的步骤和 Windows 类似,但有几个 Linux 特有的点:

  • 先决条件检查:Linux 下检查更严格,/tmp空间、swap 大小、内核参数都会查。如果报错,按提示改,改完点“再次检查”。
  • 安装类型:选“仅安装数据库软件”,因为 Linux 下建库用 DBCA 更灵活。装完软件后再用dbca建库。
  • 操作系统组oinstalldba要选对,否则后面权限有问题。

静默安装的响应文件在安装介质的response目录下,db_install.rsp是装软件的,dbca.rsp是建库的。改几个关键参数就行:

oracle.install.option=INSTALL_DB_SWONLY UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/u01/app/oraInventory ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1 ORACLE_BASE=/u01/app/oracle oracle.install.db.InstallEdition=EE oracle.install.db.OSDBA_GROUP=dba oracle.install.db.OSOPER_GROUP=dba

然后运行:

./runInstaller -silent -responseFile /path/to/db_install.rsp -ignorePrereq

-ignorePrereq是忽略先决条件检查,不建议一开始就用,先让检查跑一遍,把该改的改掉。

4.3 用 DBCA 建库的关键参数

软件装完后,用dbca建库。图形化dbca和 Windows 下类似,静默模式用响应文件。

建库时几个关键参数:

  • 数据库名:全局数据库名,比如orcl。SID 和它保持一致。
  • 字符集:必须选AL32UTF8,和 Windows 下一样。
  • 内存分配:选“典型”还是“自定义”?典型会自动分配,自定义可以手动设 SGA 和 PGA。我一般选自定义,SGA 设 2GB,PGA 设 1GB,8GB 内存的机器够用。
  • 归档模式:生产环境必须开归档,开发环境可以不开。开归档后要设db_recovery_file_dest_size,默认 4GB 可能不够。

建库过程大约 15 到 30 分钟。建完后,用sqlplus / as sysdba验证。

4.4 安装后的环境变量与开机自启

Linux 下装完 Oracle,必须配置环境变量,否则每次都要手动 source。

编辑oracle用户的.bash_profile,加入:

export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1 export ORACLE_SID=orcl export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

NLS_LANG很重要,设错了会导致中文乱码。AL32UTF8和数据库字符集保持一致。

开机自启用systemdrc.local。CentOS 7 推荐用systemd,创建/etc/systemd/system/oracle.service,内容参考官方模板。简单点的话,在/etc/rc.d/rc.local里加:

su - oracle -c "lsnrctl start" su - oracle -c "dbstart"

别忘了给rc.local加执行权限。

注意:dbstart需要先修改oratab文件,把orcl:/u01/app/oracle/product/19.3.0/dbhome_1:N最后的N改成Y,否则dbstart不会启动实例。

5. 常见问题与排查技巧实录

5.1 先决条件检查失败的几种典型情况

先决条件检查是安装过程中最容易卡住的地方,Windows 和 Linux 都会遇到。下面整理了几种最常见的报错和解决方法。

报错信息原因解决方法
内存不足物理内存或虚拟内存不够关掉其他程序,调大虚拟内存或 swap
/tmp 空间不足Linux 下 /tmp 小于 1GB清理 /tmp 或重新挂载更大的空间
内核参数不满足shmmax 等参数太小按公式重新计算并修改 sysctl.conf
操作系统版本不支持Windows 11 或 CentOS 8点“忽略”继续,或换支持的版本
缺少依赖包Linux 下缺 compat-libstdc++用 yum 安装缺失的包
主机名解析失败/etc/hosts 没配在 /etc/hosts 里加上主机名和 IP

Linux 下还有一个隐蔽的坑:SELinux 没关。SELinux 会阻止 Oracle 写某些目录,导致安装失败。安装前先setenforce 0临时关闭,或者改/etc/selinux/config永久关闭。

5.2 监听器起不来的排查思路

监听器是 Oracle 网络连接的核心,起不来的原因很多,但排查思路是固定的。

第一步:看日志。监听器的日志在$ORACLE_HOME/network/log/listener.log,里面会写具体错误。

第二步:检查 listener.ora。文件在$ORACLE_HOME/network/admin下,确认HOST写的是主机名还是 IP。如果写主机名,/etc/hosts里必须有对应的解析。

第三步:检查端口占用。用netstat -tlnp | grep 1521看 1521 端口是不是被别的程序占了。如果被占,改listener.ora里的端口。

第四步:检查权限。监听器是以oracle用户运行的,如果$ORACLE_HOME的权限不对,会起不来。用chown -R oracle:oinstall $ORACLE_HOME修复。

Windows 下监听器起不来,常见原因是服务没启动。打开“服务”管理器,找到OracleOraDB19Home1TNSListener,手动启动。如果启动报错,看 Windows 事件查看器里的应用程序日志。

5.3 中文乱码的根因与解决

中文乱码是 Oracle 使用中最常见的问题之一,根因是客户端和服务器端的字符集不一致

服务器端字符集在建库时确定,用select value from nls_database_parameters where parameter='NLS_CHARACTERSET';查看。如果是AL32UTF8,说明服务器端没问题。

客户端字符集由NLS_LANG环境变量控制。Windows 下在注册表HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDB19Home1里,Linux 下在.bash_profile里。必须设成AMERICAN_AMERICA.AL32UTF8,和服务器端一致。

如果已经出现乱码,先确认是存储乱码还是显示乱码。存储乱码是数据写进去的时候就错了,很难恢复;显示乱码是客户端字符集不对,改NLS_LANG就能解决。

实操心得:用 SQL Developer 或 Navicat 连接时,也要注意客户端的字符集设置。SQL Developer 在“工具-首选项-环境-编码”里设成 UTF-8,Navicat 在连接属性里设成 UTF-8。

5.4 补丁安装的注意事项

Oracle 19c 的基础版是 19.3.0.0,生产环境建议打补丁到最新。补丁安装分两步:OPatch 打软件补丁,datapatch 打数据库补丁。

OPatch 打补丁

$ORACLE_HOME/OPatch/opatch apply /path/to/patch

打之前先opatch lspatches看当前补丁列表,打完再opatch lspatches确认。

datapatch 打数据库补丁

cd $ORACLE_HOME/OPatch ./datapatch -verbose

这一步必须在数据库启动状态下运行,而且要先关掉所有应用连接。

补丁安装最容易出的问题是OPatch 版本太旧。Oracle 19c 基础版自带的 OPatch 可能不支持新补丁,需要先下载最新 OPatch 替换。替换前备份原来的 OPatch 目录。

6. 双环境对比与选型建议

6.1 Windows 和 Linux 的差异对比

装过两套环境后,我把主要差异整理成表,方便你根据场景选。

对比项WindowsLinux
安装方式图形化,简单图形化或静默,稍复杂
资源占用较高,服务多较低,可控
稳定性一般,适合开发高,适合生产
字符集设置注册表环境变量
开机自启服务自动需配置 systemd 或 rc.local
补丁安装图形化或命令行命令行
远程连接需配置监听和防火墙需配置监听和防火墙
学习成本

如果只是学习 SQL 和 PL/SQL,Windows 足够。如果要模拟生产、做性能测试、学 RAC,必须上 Linux。

6.2 虚拟机安装的额外注意事项

很多人用 VMware 装 Linux 虚拟机来跑 Oracle,这里有几个坑要避开。

磁盘类型:选厚置备,不要选精简置备。精简置备的磁盘会随着使用逐渐膨胀,但 Oracle 的数据文件是预分配的,精简置备会导致性能下降。

内存分配:虚拟机内存不要超过物理内存的 70%,否则宿主机和虚拟机都会卡。8GB 物理内存的机器,虚拟机最多给 4GB。

网络模式:选 NAT 或桥接。NAT 模式下虚拟机可以上网,但宿主机访问虚拟机需要端口转发。桥接模式下虚拟机和宿主机在同一网段,访问方便。

快照:装 Oracle 之前先打一个快照,装完再打一个。这样装坏了可以快速回滚,不用重装系统。

共享文件夹:如果要在宿主机和虚拟机之间传安装包,用共享文件夹比 SCP 方便。但注意共享文件夹的权限,oracle用户可能读不了。

6.3 安装介质下载与校验

Oracle 19c 的安装介质在官网下载,Linux 下是LINUX.X64_193000_db_home.zip,Windows 下是WINDOWS.X64_193000_db_home.zip。下载后一定要校验 MD5 或 SHA256,否则安装到一半报“介质损坏”很麻烦。

Linux 下用sha256sum校验,Windows 下用certutil -hashfile校验。官网会提供校验值,对比一下就行。

提示:下载页面里有个“See All”按钮,点开才能看到所有平台的下载链接。别只下第一个,那个可能是 Exadata 版本。

7. 装完之后还能做点什么

装完 Oracle 19c 只是开始,后面还有一堆可以折腾的。比如配置 RMAN 备份、开归档模式、调优 SGA、建表空间和用户、配 Data Guard。这些内容每一个都能单独写一篇,这里就不展开了。

我个人在实际操作中的体会是:安装本身不难,难的是环境准备和问题排查。把先决条件检查当回事,把日志看仔细,大部分问题都能自己解决。另外,装之前一定要打快照或备份,装坏了重来的成本太高。

最后再分享一个小技巧:如果你在 Linux 下用静默安装,可以把响应文件里的密码用oracle_install_ignore_prereqs跳过复杂度检查,但生产环境千万别这么干。开发环境图省事可以,生产环境必须用强密码。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询