简介这份图文教程面向需要在 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 Pssw0rd123 /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_GROUPORA_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.typeGENERAL_PURPOSE oracle.install.db.config.starterdb.globalDBNameorcl19c oracle.install.db.config.starterdb.SIDorcl19c oracle.install.db.config.starterdb.characterSetAL32UTF8 oracle.install.db.config.starterdb.memoryOptiontrue oracle.install.db.config.starterdb.memoryLimit8192 oracle.install.db.config.starterdb.installExampleSchemasfalse oracle.install.db.config.starterdb.enableArchivetrue oracle.install.db.config.starterdb.archiveLogFileSize1024 oracle.install.db.config.starterdb.controlDBDataFileTRUEmemoryLimit8192表示给 Oracle 实例 8 GB 内存。enableArchivetrue开启归档模式。installExampleSchemasfalse不装示例用户生产环境减少攻击面。静默安装命令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 containerorcl19c_pdb1; -- 在 PDB 里创建用户 create user appuser identified by Pssw0rd; grant connect, resource to appuser;连接字符串也要区分CDB 用orcl19cPDB 用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里显式指定 IPLISTENER (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 命令行默认代码页是 936GBK而数据库字符集是 AL32UTF8。解决在命令行里先执行chcp 65001切到 UTF-8再设置 NLS_LANGset NLS_LANGSIMPLIFIED 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 processes500 scopespfile; alter system set sessions555 scopespfile;scopespfile表示只改参数文件重启后生效。sessions一般是processes的 1.1 倍加 5。最后说一个省时间的习惯装完第一件事不是急着连应用而是用 RMAN 做一次全库备份。我见过太多人装完直接上生产数据结果参数调错想回退发现没有备份。RMAN 备份命令rman target / RMAN backup database plus archivelog; RMAN exit;备份文件默认在快速恢复区。确认备份完成后再改任何参数都有后悔药。这个习惯帮我省过至少三次重装的时间。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?