☰
Windows Server 2019 安装 Oracle 11g 与 19c 实战指南
2026/10/13 12:01:32 网站建设 项目流程

简介:这份图文教程面向需要在 Windows Server 2019 上部署 Oracle 数据库的运维与开发人员,覆盖从系统环境搭建到客户端连接的全流程。内容包含 Windows Server 2019 系统安装与磁盘分区、Oracle 11g 服务端部署及 pacs 数据库创建、11g 与 10g 客户端安装、PLSQL 连接配置,并补充了 NIC 网络聚合配置说明,以及 Oracle 19c Client 数据源连接详解,针对部分场景下客户端无法连接数据库的问题给出排查思路。资源包为 1 个 PDF 文件,约 5.13MB,图文并茂,按安装顺序编排,便于对照操作。目前已有 1854 人学习,适合初、中级数据库运维人员作为部署参考手册,也可供需要快速搭建 Oracle 测试环境的技术人员查阅。

1. Windows Server 2019 上装 Oracle:为什么 11g 和 19c 是两套完全不同的打法

在 Windows Server 2019 上部署 Oracle 数据库,很多人第一反应是“下一步下一步就完了”,结果装到一半发现 11g 的安装程序直接闪退,或者 19c 装完监听起不来。这个标题背后其实藏着两条完全不同的技术路线:Oracle 11g 是十年前的老架构,安装包对新一代操作系统的兼容性全靠手动补丁和兼容模式硬撑;Oracle 19c 是长期支持版本,原生支持 Windows Server 2019,但安装前的环境检查项比 11g 严格得多。这篇文章面向的是需要在 Windows Server 2019 上落地 Oracle 的运维和开发人员,不管你是要复现一套老系统的运行环境,还是给新项目搭一套稳定的 19c 实例,下面这些步骤和参数都是我反复装过多次之后沉淀下来的。我会把两套安装流程拆开讲,重点放在那些安装向导不会告诉你的前置条件和踩坑点上。

2. 装之前先把地基打好:系统层的前置条件与检查清单

2.1 硬件与操作系统的硬性门槛

Oracle 11g 和 19c 对 Windows Server 2019 的要求差异很大。11g 官方只认证到 Windows Server 2012 R2,在 2019 上属于“能跑但不保证”,所以硬件资源要给足余量。19c 则明确支持 Windows Server 2019,资源要求反而更清晰。

项目Oracle 11g 最低要求Oracle 19c 最低要求我的建议配置
CPU2 核2 核4 核以上
内存2 GB2 GB8 GB 以上
系统盘20 GB20 GB50 GB
数据盘按数据量按数据量单独挂载,NTFS
虚拟内存物理内存 1 倍物理内存 1 倍固定 16 GB

内存这块有个血泪经验:11g 在 2019 上如果内存低于 4 GB,安装程序会在“先决条件检查”阶段直接卡死,不是报错,是界面无响应。所以哪怕测试环境,也建议给到 8 GB。

2.2 系统配置的四个必改项

装 Oracle 之前,Windows Server 2019 默认配置有几处必须改,否则后面一定翻车。

第一步,关闭 Windows Defender 实时保护。Oracle 安装程序会释放大量临时文件,实时扫描会导致安装极慢甚至文件锁死。在 PowerShell 里执行:

# 临时关闭实时保护(重启后恢复,安装完再开) Set-MpPreference -DisableRealtimeMonitoring $true # 确认状态 Get-MpPreference | Select-Object DisableRealtimeMonitoring

第二步,设置固定的虚拟内存。Oracle 实例启动时需要连续的内存页,动态虚拟内存会导致 ORA-27102 错误。在“系统属性 → 高级 → 性能 → 虚拟内存”里,把初始大小和最大值设为相同值,建议 16384 MB。

第三步,修改主机名。Oracle 的监听器和实例名强绑定主机名,如果主机名带下划线或中文,监听器一定起不来。用hostname确认,只保留字母、数字和短横线。

第四步,创建 Oracle 专用用户和组。不要用 Administrator 直接装,权限太大会导致后续很多文件权限混乱。

# 创建 ORA_DBA 组 net localgroup ORA_DBA /add # 创建 oracle 用户并加入组 net user oracle P@ssw0rd123 /add net localgroup ORA_DBA oracle /add # 把 oracle 加入管理员组(安装时需要提权) net localgroup Administrators oracle /add

这里有个细节:oracle 用户的密码要符合 Windows 复杂度要求,否则net user会直接失败。另外,安装完成后建议把 oracle 从 Administrators 组移除,只保留 ORA_DBA 组权限,这是最小权限原则。

2.3 目录规划与权限设置

Oracle 的目录结构建议统一规划,不要用默认路径。我一般这样分:

  • 软件安装目录:D:\app\oracle\product\19.0.0\dbhome_1
  • 数据库文件目录:E:\oradata
  • 快速恢复区:F:\fast_recovery_area
  • 归档日志目录:F:\archivelog

创建完目录后,把所有权给 oracle 用户:

# 创建目录 mkdir D:\app\oracle\product\19.0.0\dbhome_1 mkdir E:\oradata mkdir F:\fast_recovery_area mkdir F:\archivelog # 授予 oracle 用户完全控制权限 icacls "D:\app" /grant oracle:(OI)(CI)F /T icacls "E:\oradata" /grant oracle:(OI)(CI)F /T icacls "F:\fast_recovery_area" /grant oracle:(OI)(CI)F /T icacls "F:\archivelog" /grant oracle:(OI)(CI)F /T

(OI)(CI)F的含义是:对象继承、容器继承、完全控制。/T表示递归应用到子目录。这一步不做,安装到“创建数据库”阶段会报 ORA-01031 权限不足。

3. Oracle 11g 在 Windows Server 2019 上的安装实战

3.1 兼容模式与安装程序启动参数

11g 的安装程序setup.exe在 Windows Server 2019 上直接双击大概率闪退,因为它的清单文件不识别新系统版本。必须用兼容模式启动。

右键setup.exe→ 属性 → 兼容性 → 勾选“以兼容模式运行这个程序”,选择 Windows 7 或 Windows Server 2008 R2。同时勾选“以管理员身份运行”。

如果还是闪退,用命令行带参数启动:

# 进入安装包目录 cd D:\software\oracle11g\database # 以兼容模式静默启动,跳过先决条件检查中的操作系统版本校验 setup.exe -ignorePrereq -J-Doracle.install.db.OSDBA_GROUP=ORA_DBA

-ignorePrereq是 11g 安装程序的一个隐藏参数,作用是跳过所有先决条件检查。但注意,它只是跳过检查,不解决实际问题。所以内存、虚拟内存、权限这些必须提前手动配好,否则跳过检查后会在安装中途报更底层的错误。

3.2 安装向导中的关键选择

启动安装程序后,前面几步按默认走,到“配置类型”这一步选“创建和配置数据库”,不要选“仅安装数据库软件”。因为 11g 的 DBCA 在 2019 上单独启动更容易出问题,不如让安装程序一次性做完。

到“数据库版本”选“企业版”,字符集选“使用 Unicode (AL32UTF8)”。如果业务系统有特殊字符集要求,比如 ZHS16GBK,在这里就要改,装完再改字符集非常麻烦。

“管理选项”这一步,如果只是单机部署,不要勾选“配置 Enterprise Manager”。11g 的 EM 基于 Java,在 2019 上需要额外装旧版 JRE,而且经常起不来。用 SQLPlus 和后续的客户端工具管理就够了。

“数据库标识”里,全局数据库名和 SID 建议保持一致,比如都用orcl11g。这样监听器配置和连接字符串都简单。

“口令管理”页面,一定要点进去解锁 SCOTT 和 HR 示例用户,或者至少给 SYS 和 SYSTEM 设置符合复杂度要求的密码。11g 默认密码有效期 180 天,生产环境记得改 PROFILE。

3.3 安装后的监听器配置与验证

11g 安装完成后,监听器可能没有自动注册服务。用管理员身份打开命令提示符:

# 查看监听器状态 lsnrctl status # 如果监听器没起来,手动启动 lsnrctl start # 查看服务是否注册 lsnrctl services

如果lsnrctl services里看不到orcl11g的服务,说明实例没有向监听器注册。登录 SQLPlus:

-- 以 sysdba 身份登录 sqlplus / as sysdba -- 查看实例状态 select status from v$instance; -- 手动注册服务 alter system register; -- 再次查看监听器服务列表 exit lsnrctl services

alter system register会强制 PMON 进程向监听器重新注册。如果还是不行,检查listener.ora里的SID_LIST_LISTENER是否包含该实例。

4. Oracle 19c 的安装部署:从静默安装到容器数据库选型

4.1 19c 安装包的选择与解压

19c 在 Windows 上的安装包是一个 ZIP 文件,解压后直接运行setup.exe。注意不要用 Windows 自带的解压工具,它对大文件支持不好,容易解压出损坏的文件。用 7-Zip 或 WinRAR。

解压路径不要有空格和中文。我一般解压到D:\software\oracle19c。

19c 的安装程序原生支持 Windows Server 2019,不需要兼容模式。但需要以管理员身份运行,否则会在“创建目录”阶段报权限错误。

4.2 图形化安装的关键步骤

启动setup.exe后,第一步选“创建并配置单实例数据库”。19c 支持容器数据库(CDB)和可插拔数据库(PDB),如果业务系统没有多租户需求,建议选“非容器数据库”,也就是传统架构,管理起来更简单。

“数据库安装选项”选“桌面类”还是“服务器类”?桌面类会自动配好所有参数,适合快速验证;服务器类需要手动指定内存、字符集、归档模式等。生产环境一定选服务器类。

“数据库配置”里,内存分配建议:如果服务器 16 GB 内存,给 SGA 和 PGA 各 4 GB,总共 8 GB 给 Oracle,剩下留给系统。字符集选 AL32UTF8。

“管理选项”里,19c 的 Enterprise Manager Express 是基于 HTTP 的,比 11g 的 Java 版稳定得多,可以勾选。端口默认 5500,如果被占用改成 5501。

“恢复选项”里,如果要做归档模式,勾选“启用归档”,并指定快速恢复区路径F:\fast_recovery_area。归档日志上限根据磁盘空间设,一般给 100 GB。

4.3 静默安装的响应文件写法

批量部署时,图形界面效率太低。19c 支持响应文件静默安装。先运行一次图形安装,在D:\app\oracle\product\19.0.0\dbhome_1\assistants\dbca下会生成模板响应文件,复制出来改。

关键参数:

# 响应文件关键段 oracle.install.db.config.starterdb.type=GENERAL_PURPOSE oracle.install.db.config.starterdb.globalDBName=orcl19c oracle.install.db.config.starterdb.SID=orcl19c oracle.install.db.config.starterdb.characterSet=AL32UTF8 oracle.install.db.config.starterdb.memoryOption=true oracle.install.db.config.starterdb.memoryLimit=8192 oracle.install.db.config.starterdb.installExampleSchemas=false oracle.install.db.config.starterdb.enableArchive=true oracle.install.db.config.starterdb.archiveLogFileSize=1024 oracle.install.db.config.starterdb.controlDBDataFile=TRUE

memoryLimit=8192表示给 Oracle 实例 8 GB 内存。enableArchive=true开启归档模式。installExampleSchemas=false不装示例用户,生产环境减少攻击面。

静默安装命令:

setup.exe -silent -responseFile D:\software\oracle19c\response\db_install.rsp -ignorePrereq

-ignorePrereq在 19c 里同样可用,但 19c 的先决条件检查比 11g 准确得多,除非确实有无法满足的项,否则不建议跳过。

4.4 容器数据库与可插拔数据库的取舍

19c 默认创建 CDB,里面包含一个 PDB。如果业务系统是传统的单库应用,用 PDB 反而增加复杂度。我的做法是:安装时选非 CDB 模式,或者装完 CDB 后把 PDB 当普通数据库用,不启用多租户特性。

如果确实需要 CDB,连接方式要注意:sqlplus / as sysdba默认连的是 CDB 根容器,要操作 PDB 需要先切换:

-- 查看当前容器 show con_name; -- 查看所有 PDB select name, open_mode from v$pdbs; -- 切换到 PDB alter session set container=orcl19c_pdb1; -- 在 PDB 里创建用户 create user appuser identified by "P@ssw0rd"; grant connect, resource to appuser;

连接字符串也要区分:CDB 用orcl19c,PDB 用orcl19c_pdb1。监听器会自动识别服务名。

5. 避坑与排查:那些安装向导不会告诉你的翻车现场

5.1 安装程序闪退或卡在 2% 不动

现象:11g 安装程序双击后进程一闪而过,或者进度条卡在 2% 超过 30 分钟。

原因:Windows Server 2019 的 UAC 和 Defender 拦截了安装程序的临时文件释放。另外,11g 安装程序依赖的旧版 Visual C++ 运行库在 2019 上默认没有。

解决:先装 Visual C++ 2010 和 2013 运行库,关闭 Defender 实时保护,用兼容模式启动。如果卡在 2%,打开任务管理器看javaw.exe是否在跑,如果在跑就继续等,11g 在慢磁盘上释放文件确实要十几分钟。

5.2 监听器起不来,报 TNS-12560

现象:lsnrctl start报 TNS-12560: TNS:protocol adapter error。

原因:主机名解析有问题。Windows Server 2019 默认优先用 IPv6,而 Oracle 监听器默认只绑 IPv4。

解决:在listener.ora里显式指定 IP:

LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)) ) )

把HOST改成服务器的实际 IPv4 地址,不要用主机名。改完lsnrctl stop再lsnrctl start。

5.3 创建数据库时报 ORA-27102 内存不足

现象:DBCA 创建数据库到 80% 左右报 ORA-27102: out of memory。

原因:Windows 的虚拟内存设置是动态的,Oracle 申请连续内存页时失败。

解决:把虚拟内存设为固定值,初始大小和最大值都设成物理内存的 1.5 倍。另外检查%SystemRoot%\Temp目录所在磁盘剩余空间,至少留 10 GB。

5.4 19c 安装后 SQLPlus 中文乱码

现象:SQLPlus 里查询中文显示问号或方块。

原因:Windows 命令行默认代码页是 936(GBK),而数据库字符集是 AL32UTF8。

解决:在命令行里先执行chcp 65001切到 UTF-8,再设置 NLS_LANG:

set NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8 sqlplus / as sysdba

注意NLS_LANG的格式是语言_地域.字符集,中间是下划线,不是点。写错了会报 ORA-12705。

5.5 安装完成后服务自动启动导致服务器卡顿

现象:服务器重启后,Oracle 服务自动启动,内存被占满,其他应用响应缓慢。

原因:Oracle 服务默认启动类型是“自动”,而且 11g 的OracleServiceORCL和OracleOraDb11g_home1TNSListener会一起启动。

解决:把服务启动类型改成“手动”,需要时用脚本按顺序启动:

# 先启动监听器 net start OracleOraDb11g_home1TNSListener # 再启动实例 net start OracleServiceORCL

19c 的服务名类似,把11g换成19c即可。顺序不能反,否则实例注册不到监听器。

6. 装完之后:验证、调优与一个省时间的习惯

装完只是开始,验证数据库真正可用需要做几件事。先用 SQLPlus 以 sysdba 登录,跑几个关键查询:

-- 确认实例状态和启动时间 select instance_name, status, startup_time from v$instance; -- 确认数据文件路径 select name from v$datafile; -- 确认归档模式 archive log list; -- 确认字符集 select parameter, value from nls_database_parameters where parameter like '%CHARACTERSET%';

如果归档模式没开,用以下命令开启(需要重启实例):

shutdown immediate; startup mount; alter database archivelog; alter database open; archive log list;

调优方面,Windows 上的 Oracle 有两个参数我每次都会改。一个是db_block_size,默认 8 KB,如果数据仓库场景可以设 16 KB,但要在建库时指定,装完改不了。另一个是processes和sessions,默认 150 和 248,稍微大点的应用就不够:

-- 查看当前值 show parameter processes; show parameter sessions; -- 修改(需要重启) alter system set processes=500 scope=spfile; alter system set sessions=555 scope=spfile;

scope=spfile表示只改参数文件,重启后生效。sessions一般是processes的 1.1 倍加 5。

最后说一个省时间的习惯:装完第一件事不是急着连应用,而是用 RMAN 做一次全库备份。我见过太多人装完直接上生产数据,结果参数调错想回退,发现没有备份。RMAN 备份命令:

rman target / RMAN> backup database plus archivelog; RMAN> exit;

备份文件默认在快速恢复区。确认备份完成后,再改任何参数都有后悔药。这个习惯帮我省过至少三次重装的时间。希望帮到你。

本文还有配套的精品资源,点击获取

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

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

立即咨询