☰
Windows Server 2019上Oracle 11g与19c安装部署全攻略
2026/10/11 21:28:35 网站建设 项目流程

简介:面向Windows Server 2019环境下的数据库运维与部署需求,这份PDF图文指南系统讲解了Oracle 11g与19c的完整安装部署流程。内容涵盖操作系统基础搭建、磁盘分区管理、Oracle服务端安装、客户端安装,以及NIC网络聚合配置与Oracle 19c Client数据源连接详解,尤其对部分客户端无法连接数据库的常见问题给出排查思路。资源共1个文件,为PDF格式,包体大小5.13MB,图文步骤清晰,适合有Windows Server基础的DBA、系统工程师及需要快速搭建Oracle测试环境的运维人员。目前已有1853人学习,借助此资料可减少踩坑,按步骤完成从系统配置到数据库可用的全过程,并掌握网络聚合与客户端连接调优的关键细节。

1. 为什么在Windows Server 2019上装Oracle 11g和19c?先想清楚再动手

Windows Server 2019是不少企业当前的主力服务器系统,Oracle数据库却常常停在11g或者刚准备上19c。老业务绑死了11g,新系统却要求19c,同一台Windows Server上怎么安排?我见过太多项目倒在第一步:11g安装包双击下去,预检直接报“操作系统版本不支持”;19c总算支持了,却因为缺运行库、没配监听器而反复翻车。这篇文章就从“选版本”讲到“建库后验证”,把两个版本在Windows Server 2019上的完整安装路径、参数和常见坑拆开讲。适合两类人:必须把现有11g迁到新系统的运维,以及准备部署19c的新项目负责人,照着做能少走弯路。

2. 环境准备与安装包选型:从Windows Server 2019到Oracle版本匹配

2.1 Windows Server 2019版本差异与Oracle支持矩阵

Windows Server 2019分为Standard和Datacenter两个大版本,安装时还会遇到“桌面体验”和“Server Core”两种模式。Oracle的图形安装程序必须依赖桌面体验,如果你图省事装了Server Core,后面还得补一堆GUI组件,反而更麻烦。我一般直接在安装界面选择“桌面体验”选项,版本上Standard足够支撑Oracle单机,除非你要用HCI/存储副本等Datacenter特性,否则不用多花钱。

Oracle对Windows Server 2019的支持情况要分清楚:19c是原生支持Windows Server 2016和2019的,而11g官方认证只到Windows Server 2008 R2和2012 R2。也就是说,在2019上装11g属于“官方未支持但能跑”的灰色地带,你必须承担潜在兼容性风险;19c则干净很多。如果你是被老系统绑住不得不装11g,可以先做虚拟机快照,再按第3章的方法绕过版本检查。如果新项目选型,别犹豫,直接用19c。

硬件上,11g和19c的最小内存要求都是1GB,但Windows Server 2019本身至少占1.5GB,再加上Oracle的进程,4GB只能说是能开机,8GB才比较舒服。磁盘方面,11g完整安装大约占用5GB,19c至少7GB,我把这些都放在C盘之外,单独划一个D盘空间,避免系统盘写满导致数据库异常。还有一个细节:Oracle安装目录不能放在中文或带空格的路径下,比如D:\数据库\oracle这种名字会让OUI在生成快捷方式时崩掉,尽量用D:\app\oracle这种纯英文路径。

另外如果你用虚拟机,不要从模板克隆系统来装Oracle。克隆出来的Windows注册表里包含原机器的SID和网卡配置,安装时Oracle的监听器可能会绑定旧主机名,导致服务起不来。我一般新建虚拟机,装好系统打快照再继续,这样每一步都能回退,心里有底。

2.2 安装包获取与校验:11g、19c分别该下哪些文件

Oracle官网的下载页面把数据库安装介质放在“Database”栏目下,你注册一个Oracle账号就能下载,不要随便在第三方网盘找压缩包,很多被改过。11g for Windows x64在官网会拆成两个zip文件,结构类似V17530-01_1of2.zip和V17530-01_2of2.zip,两个包必须都下载,解压到同一个目录后,安装程序才能合入完整的database目录。19c for Windows x64只有一个zip包,体积在2GB左右,解压后就是database目录。

下载后建议校验SHA256,因为Oracle官网提供校验码,第三方下载源经常给出莫名其妙的坏包。Windows下直接用certutil算:

certutil -hashfile "D:\oracle_download\V17530-01_1of2.zip" SHA256

把输出的哈希值和官网或者Oracle文档里公布的校验值比对,确认一致再解压。如果是同事拷给你的包,更要先校验,我遇到过因为压缩包中间一个字节错误导致安装到30%时报错“找不到文件”的情况,那才叫欲哭无泪。

解压安装包时,路径里别有括号和中文。D:\oracle\11g没问题,但D:\Program Files (x86)\oracle这种在静默安装解析response路径时很容易出错。还要记得,安装之前右键setup.exe,选择“以管理员身份运行”,Windows Server 2019默认开UAC,如果你不提升权限,安装过程中写入C:\Program Files\Oracle\Inventory这一步会被拒绝。

2.3 系统预配置:静态IP、主机名、防火墙、共享目录

Oracle安装前的Windows系统配置,决定了后面能不能远程连接。第一件事是把IP设置成静态。如果你让DHCP分配地址,服务器重启后IP变了,监听器还是按启动时的地址注册,客户端连接串自然找不到机器。在“网络和共享中心”里改IPv4为手动,我再顺手把主机名和IP写进hosts文件,保证本地解析:

192.168.10.10 oracle-db01

主机名不能带下划线,长度不要超过15个字符。Oracle监听器对主机名处理有个隐性限制,太长的主机名会导致ORA-12514这类解析错误。修改主机名可以在系统属性里点“更改”,也可以用PowerShell:

Rename-Computer -NewName "oracle-db01" -Restart

第二件事是防火墙。Windows Server 2019的防火墙在默认配置文件下拒绝入站连接,即使安装时Oracle自动创建了服务,1521端口入站规则也不一定放行。我一般装好系统后立刻加一条:

netsh advfirewall firewall add rule name="Oracle Listener 1521" dir=in action=allow protocol=TCP localport=1521

如果要用EM Express的5500端口,也一并放行。我碰到过好几次本地sqlplus能连、远程客户端死活连不上的情况,最后排查都是防火墙规则缺失,这种基础问题最坑。

第三件事是管理好共享目录和临时目录。Oracle安装时会把日志写到%TEMP%,如果TEMP目录在系统盘且空间不足,安装程序会莫名其妙失败。我习惯在D盘创建一个D:\oracle_temp,把系统环境变量TEMP和TMP指过去。装完Oracle后再改回默认,或者继续留着也没问题。这些都做完,再做一次快照,就可以进入安装环节了。

3. Oracle 11g在Windows Server 2019上的安装部署:兼容性补齐与图文步骤还原

3.1 11g安装前的兼容性说明与准备

Oracle 11g在Windows Server 2019上最大的障碍就是版本预检。Oracle安装程序里带了一个CVU(Cluster Verification Utility)组件,它会读取当前Windows版本号,如果不在支持列表里,直接弹窗“操作系统版本不支持”。为了绕过去,有两个常见做法:一是把setup.exe设置为“以兼容模式运行”,下拉列表选“Windows Server 2012 R2”,这个方法有时能进入安装界面,但很多时候预检还是过不去;二是修改安装包里的refhost.xml,把Windows Server 2019的版本信息加进去。

修改refhost.xml是最直接有效的办法。这个文件在安装包解压后的stage\cvu\sun目录下,用记事本打开,找到一堆类似这样的代码结构:

<OPERATING_SYSTEM> <VERSION VALUE="6.2"/> <SERVICE_PACK VALUE=""/> <NAME VALUE="Windows Server 2012 R2"/> </OPERATING_SYSTEM>

你可以复制一行,把名称改成Windows Server 2019,版本值改成10.0。注意这里只是让CVU“以为”支持这个系统,实际运行能力依赖Oracle补丁,所以最好使用11.2.0.4版本,并同步从Oracle官网下载对应的Windows补丁包。修改完保存,先备份原文件,再运行setup.exe。

系统层面还要做两件事:关闭360或Windows Defender的实时扫描,安装程序写文件时会频繁被扫描拦截。另外确认C:\Program Files\Oracle\Inventory这个目录可写,有时系统组策略会锁掉Program Files的写权限,导致安装过程卡在“创建产品清单”。你可以先手动创建这个目录并赋予当前用户完全控制权限。

准备完成后,在桌面上右键setup.exe“以管理员身份运行”,如果运气好会直接进入Oracle Universal Installer界面。如果还是弹版本错误,那就回到refhost.xml,检查你改的节点是否正确——这个问题容易出在有多条<OPERATING_SYSTEM>记录,你改的那条不是CVU默认读取的主机条目。

3.2 安装Oracle Database 11g的详细步骤(含关键截图点说明)

启动安装程序后,界面步骤比较多,我按最常选的“创建和配置数据库(服务器类)”写一遍。第一步,取消“安全更新”的勾选,不要填邮箱。第二步,选“创建和配置数据库”,然后选“服务器类”而非“桌面类”,因为桌面类封装了部分数据库管理特性,不适合生产。第三步,实例名称默认orcl,可以改成业务名,但记住后面连接时要匹配。

第四步是安装选项,选择“高级安装”或者保持默认“典型安装”都可以。典型安装让你少点几页,但无法控制字符集和目录;我一般选“高级安装”,这样能把Oracle基目录指定到D盘。在“Oracle基目录”填D:\app\oracle,软件位置会自动生成D:\app\oracle\product\11.2.0\dbhome_1。如果你的服务器C盘空间不够,这里一定要改,不要默认。

第五步选“企业版”或“标准版”。大部分业务选企业版,它包含分区、Oracle Data Guard等高级功能。第六步数据库配置选“一般用途/事务处理”,然后设置全局数据库名和SID,建议相同。第七步是字符集,国内业务一般选ZHS16GBK,如果你要存储全球多语言字符,选AL32UTF8,但注意UTF8下某些中文函数和长度计算方式不同,生产切换要提前测试。

第八步设置管理口令,也就是SYS和SYSTEM的密码。11g要求密码不少于8位、包含大小写字母和数字,我通常设成Orac1e_2025#这种格式。如果设置太简单,DBCA到一半会弹密码复杂度不够,又要回头改。第九步选择“文件系统”存储,单机不需要ASM。指定数据文件存放位置D:\oradata和闪回区位置D:\oracle_flash_recovery。

到这一步后,Oracle开始复制文件。进度条走满后会自动打开Database Configuration Assistant,创建数据库日志会输出在屏幕上。整个过程约20分钟,期间不要强行关闭窗口。建库完成后,安装向导会显示数据库名称、端口等摘要,这时候最好截图存档,后面做运维文档时非常有用。

3.3 监听器配置与Net Manager设置

安装完成后,监听器不一定处于正常监听状态。我见过太多项目安装时一路“下一步”,最后连接时才发现监听服务没起来。检查之前先手动启动一次:

lsnrctl start

如果提示“TNS-12560”,监听器配置文件多半有问题。这时打开D:\app\oracle\product\11.2.0\dbhome_1\network\admin\listener.ora,里面应该有一行HOST=,确保它指向当前主机名或固定IP,而不是localhost。常见内容:

LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle-db01)(PORT = 1521)) ) )

改完重启监听器:

lsnrctl stop lsnrctl start lsnrctl status

状态输出里能看到Instance "orcl", status READY就对了。如果status里没有这个实例,需要手动注册。在SQL*Plus里执行:

alter system register;

这条命令让实例立刻向监听器注册,比干等轮询快。客户端连接串则配置在tnsnames.ora里,格式如下:

ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.10)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )

这里特别容易出现一个翻车点:有人把SERVICE_NAME写成实例名orcl,但实际全局数据库名如果带域名,比如orcl.example.com,连接时报ORA-12514。最保险的方法是在lsnrctl services输出里查看服务名,然后原样填写。

4. Oracle 19c在Windows Server 2019上的安装部署:新特性与静默安装

4.1 19c的安装架构与静默安装优势

Oracle 19c是Oracle 12c时代的长期支持版本,也是官方明确支持Windows Server 2019的版本。和11g最大的体验差异在于:19c支持完全静默安装,用response文件就能把软件装完、把库建好,整个过程不需要盯着图形界面一步步点,非常适合批量部署和自动化脚本。另外19c在Windows上安装时,产品清单目录、Oracle基目录、Oracle主目录的划分比11g更清晰,很少出现目录错乱。

19c的安装架构分为两步:一是安装数据库软件,二是创建数据库。对应两个工具:OUI(Oracle Universal Installer)和DBCA(Database Configuration Assistant)。静默安装时,OUI会读取db_install.rsp,DBCA会读取dbca.rsp,你可以选择让OUI装完软件后自动调用DBCA建库,也可以只装软件、稍后用命令行建库。我强烈建议新项目选择“只装软件”再分开建库,这样如果建库失败,不用重新安装软件,排查也容易。

19c另一个优点是服务管理更规范。安装后Windows服务列表里会生成OracleServiceORCL和OracleOraDB19Home1TNSListener,默认都是自动启动,但实际可能因为系统策略变成手动,后面第5章我会专门讲开机自启的问题。在环境变量方面,19c默认把ORACLE_HOME放在<Oracle基目录>\product\19.0.0\dbhome_1,命令行的sqlplus就在这个目录的bin下。

4.2 静默安装response文件配置与执行命令

静默安装要用到response文件。在解压后的database\response目录里,有db_install.rsp、dbca.rsp、netca.rsp三个模板。先把整个response目录复制到安装包外,比如D:\oracle19c_response,因为安装包内文件只读,后续修改保存不方便。然后用文本编辑器编辑db_install.rsp,核心参数如下:

oracle.install.option=INSTALL_DB_SWONLY ORACLE_BASE=D:\app\oracle ORACLE_HOME=D:\app\oracle\product\19.0.0\dbhome_1 oracle.install.db.InstallEdition=EE oracle.install.db.OSDBA_GROUP=ORA_DBA oracle.install.db.OSOPER_GROUP=ORA_OPER oracle.install.db.OSBACKUPDBA_GROUP=ORA_BACKUPDBA oracle.install.db.OSDGDBA_GROUP=ORA_DGDBA oracle.install.db.OSKMDBA_GROUP=ORA_KMDBA oracle.install.db.OSRACDBA_GROUP=ORA_RACDBA oracle.install.db.CLUSTER_INSTALL=false oracle.install.db.ConfigureGatherer=false

这里oracle.install.option=INSTALL_DB_SWONLY表示只安装软件,不建库。如果你想一步到位,改成INSTALL_DB_AND_CONFIG,还要额外配置oracle.install.db.config.starterdb.type=GENERAL_PURPOSE、globalDBName=orcl、SID=orcl、memoryLimit=2048等。密码行我用的是oracle.install.db.config.starterdb.password.ALL=Orac1e_2024#,正式环境一定要换成强密码。

配置好后,用管理员命令提示符进入解压目录,执行静默安装:

cd /d D:\oracle19c\database setup.exe -silent -responseFile D:\oracle19c_response\db_install.rsp -waitforcompletion

-waitforcompletion参数会让命令行一直等到安装结束,返回码0代表成功。日志默认写到%TEMP%\OraInstall_*目录下,如果中途报错,打开日志文件夹里的installActions*.log,搜索SEVERE关键词,基本都是明确的失败原因。常见的失败包括:密码复杂度不符合要求、INVENTORY目录无权限、内存设置超过物理机实际可用内存。遇到错误不用慌,改完rsp重新执行,安装是幂等的。

4.3 数据库实例创建与服务自启动

软件装完后,如果没有建库,现在要用DBCA静默建库。先编辑dbca.rsp:

gdbName=orcl sid=orcl databaseType=GENERAL_PURPOSE createAsContainerDatabase=false emConfiguration=LOCAL datafileDestination=D:\oradata recoveryAreaDestination=D:\oracle_flash_recovery characterSet=ZHS16GBK memoryPercentage=40 sampleSchema=false

memoryPercentage表示数据库可以占物理内存的百分比,40比较保守,如果物理内存大可以设60。createAsContainerDatabase=false是决定是否用CDB/PDB架构,19c默认推荐true,但如果你需要兼容一些旧应用,用false更简单,登录后直接是ORCL实例。字符集按业务来,国内多用ZHS16GBK,涉及多语言选AL32UTF8。

然后依次执行两条命令:

netca -silent -responseFile D:\oracle19c_response\netca.rsp dbca -silent -createDatabase -responseFile D:\oracle19c_response\dbca.rsp

第一条命令生成监听器,第二条创建数据库。很多人会忽略netca,直接跑dbca,结果数据库起来后发现没有监听服务,所以顺序不能乱。建库过程一般10到15分钟,结束后服务里能看到OracleServiceORCL和OracleOraDB19Home1TNSListener。

把这两个服务设成自动启动,避免重启后掉链子:

sc config OracleServiceORCL start= auto sc config OracleOraDB19Home1TNSListener start= auto

然后验证监听注册:

lsnrctl status

如果输出里没有Instance "orcl", status READY,进入sqlplus执行alter system register;,再重新查看。建库完成后,把D:\app\oracle\product\19.0.0\dbhome_1\bin加入系统PATH,这样在任何目录下输入sqlplus都能直接进入。

5. 安装部署避坑记录:11g和19c各自最常翻车的5个问题

5.1 11g在Server 2019上安装程序报错“操作系统版本不支持”

现象:双击setup.exe,还没看到Oracle Universal Installer界面,就弹出红色警告框,提示当前操作系统版本不受支持,安装终止。

原因:11g的CVU组件里没有Windows Server 2019的系统版本定义,无法通过预检。这和“能不能跑”是两回事,预检只是暴力拦了一道。

解决:修改安装包stage\cvu\sun\refhost.xml,先备份,再增加一条操作系统记录,版本号写成10.0,名称写成“Windows Server 2019”。改完重新运行setup.exe。这里要注意,11.2.0.4的CVU和早期补丁的校验逻辑有差异,如果还报错,可以尝试把VALUE改成6.3(对应Server 2012 R2)再试。绕过预检后,尽量给Oracle打上最新的PSU补丁,避免运行时出现内存访问异常。

5.2 11g安装完成后监听服务无法启动

现象:安装顺利完成,但lsnrctl start报TNS-12560: Protocol adapter error,Windows服务列表里监听服务起一下又停。

原因:listener.ora里的HOST字段指向了旧的主机名或localhost,还有可能是1521端口被别的程序占用。这类问题在从虚拟机模板克隆出来、或者系统改了主机名之后尤其常见。

解决:先查端口占用:

netstat -ano | findstr :1521

如果有其他进程占用,把该进程关掉或者改监听端口。然后检查listener.ora,把HOST改成当前主机名。改完执行lsnrctl stop再lsnrctl start。如果还是失败,最直接的办法是删除listener.ora和sqlnet.ora,然后用netca重新生成监听:

netca -silent -responseFile D:\oracle_response\netca.rsp

这个方法能解决90%的玄学监听问题,生成的配置干净,不会残留旧主机名。

5.3 19c安装时缺少VC++运行库导致严重错误

现象:执行19c的setup.exe时,安装界面一闪而过,或者弹出“应用程序无法启动,因为缺少VC++运行库”,安装日志里出现PRVF-0002错误。

原因:Oracle 19c的Windows安装程序依赖Visual C++ Redistributable for Visual Studio 2017。Windows Server 2019原版系统没有预装这个运行库,如果管理员不知道,就会在安装预检阶段卡住。

解决:去微软官网下载“Visual C++ Redistributable for Visual Studio 2015-2022”(x64版本),安装后重启系统,再运行Oracle安装程序。装完可以用下面的命令查版本号确认高于14.16:

reg query "HKLM\SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x64" /v Version

注意,64位系统必须装x64运行库,x86可以同时装,但Oracle 19c只用x64。

5.4 19c静默安装后没有生成监听器

现象:静默安装数据库软件和建库都成功了,但lsnrctl status提示“No listener”,Windows服务列表里也没有TNSListener服务。

原因:你的db_install.rsp里写的是INSTALL_DB_SWONLY,只装软件不配置监听;而后面的静默建库命令dbca本身不会自动创建监听器,需要先执行netca。很多人把netca当成可选项,跳过不跑,结果就少了监听器。

解决:在dbca之前,必须执行netca。如果netca.rsp不存在,可以写个最简版本:

[GENERAL] RESPONSEFILE_VERSION="19.0.0" CREATE_TYPE="CUSTOM" LISTENER_NAME=LISTENER LISTENER_PROTOCOLS=TCP LISTENER_TCP_PORT=1521

然后执行:

netca -silent -responseFile D:\oracle19c_response\netca.rsp

执行成功后,服务列表里出现监听服务,再启动监听即可。

5.5 安装后Oracle服务不能开机自启或登录后自动关闭

现象:服务器重启后,本地sqlplus连接报ORA-01034和ORA-27101,去“服务”里看OracleServiceORCL处于停止状态,手动启动后一切正常。

原因:Oracle服务偶发被设置为“手动”或“自动(延迟启动)”,延迟启动在系统启动阶段磁盘和网络尚未就绪时容易失败;还有一种情况是数据库实例依赖的OracleOraDB19Home1TNSListener没启动,导致实例无人持有,但通常数据库服务独立于监听器。更常见的原因是系统关机时Oracle服务被强制终止,残留的锁导致重启后无法自动拉起。

解决:用管理员身份把服务设为自动:

sc config OracleServiceORCL start= auto sc config OracleOraDB19Home1TNSListener start= auto

然后打开“服务”管理器,右键这两个服务,选择“重新启动”。如果重启服务器后仍然失败,查看事件查看器里Oracle服务的错误日志。还有一个我常用的土办法:在任务计划程序里创建一个“系统启动时”触发脚本,延迟30秒执行net start OracleServiceORCL,兜底确保数据库能起来。虽然有点糙,但在早期版本上很有效。

6. 验证安装成果与日常维护:从不到300MB的pfile到一键健康检查

6.1 用SQL*Plus和lsnrctl验证整个链路

安装部署完成后,不要急着交付,先做一次链路验证。在命令行执行sqlplus / as sysdba,能进入就说明操作系统认证正常。然后执行:

select name, open_mode from v$database; alter system register;

检查open_mode是READ WRITE,再退出执行lsnrctl status确认实例状态为READY。我习惯把这三个检查写进一个check.bat,每次巡检双击运行,比一个个敲命令快很多。

6.2 一键健康检查脚本与日志分析技巧

下面这个脚本是我常用的最小化健康检查清单:

@echo off echo === Oracle Service === sc query OracleServiceORCL | findstr STATE echo === Listener === lsnrctl status | findstr "Instance Service" echo === Database === sqlplus -S / as sysdba @check.sql

check.sql里至少包含这几条SQL:

select name, open_mode from v$database; select round((used_space*8)/1024,2) used_gb, round((tablespace_size*8)/1024,2) total_gb from dba_tablespaces; select count(*) from v$instance;

日志分析注意看diag\rdbms\orcl\orcl\trace下的alert_orcl.log,过滤ORA-关键字:

findstr /C:"ORA-" D:\app\oracle\diag\rdbms\orcl\orcl\trace\alert_orcl.log

看到ORA-00600或ORA-07445不代表一定会宕机,但要重视,它们通常是内部错误触发的信号,需要结合trc文件分析。

6.3 用Windows任务计划程序固定维护窗口

最后分享一个我坚持到现在的习惯:给Oracle数据库设置固定的维护窗口。新建一个每周日凌晨的任务,执行备份和临时文件清理,命令类似:

$ts = Get-Date -Format "yyyyMMddHHmm" expdp system/oracle@orcl full=y directory=DATA_PUMP_DIR dumpfile=full_$ts.dmp logfile=full_$ts.log Get-ChildItem "D:\app\oracle\admin\orcl\dpdump" -Filter "*.dmp" | Where-Object LastWriteTime -lt (Get-Date).AddDays(-7) | Remove-Item

备份文件会越来越多,必须加清理策略,否则哪天磁盘满了,整个库都受影响。我见过一个生产环境里alert_orcl.log增长到40GB导致C盘塞满的案例,就是因为没有人定期校验日志大小。希望这套从11g到19c的落地路径能帮到你,少走我踩过的那些弯路。

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

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

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

立即咨询