简介:这份图文教程面向需要在 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 最低要求 | 我的建议配置 |
|---|---|---|---|
| CPU | 2 核 | 2 核 | 4 核以上 |
| 内存 | 2 GB | 2 GB | 8 GB 以上 |
| 系统盘 | 20 GB | 20 GB | 50 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 servicesalter 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=TRUEmemoryLimit=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 OracleServiceORCL19c 的服务名类似,把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;备份文件默认在快速恢复区。确认备份完成后,再改任何参数都有后悔药。这个习惯帮我省过至少三次重装的时间。希望帮到你。
本文还有配套的精品资源,点击获取