
简介面向 Windows 平台部署企业级数据库的 DBA、运维人员与开发者的 Oracle Database 19c 完整安装介质覆盖开发测试、中小型业务及大规模生产环境解决从安装到初始化配置的一站式需求。该版本突出高性能、高可用与云就绪能力包含容器数据库与可插拔数据库、自动诊断调优、透明数据加密、动态数据屏蔽以及 RAC、Active Data Guard、In-Memory 等先进特性适合承担核心业务数据服务也便于后续向云端迁移或混合云管理。压缩包内共 2000 个文件以 jar、xml、dll、exe 为主分别对应 Java 组件、配置模板、动态链接库与安装执行程序另含 properties、html、gif、txt、bat 等辅助文件用于环境配置、说明文档和辅助脚本整包约 809MB属于较完整的 Windows 64 位安装版本。目前已有 88 人学习下载。借助该介质使用者可以完成数据库实例创建、监听与网络配置、安全策略设置和组件选装并利用包内自带的诊断与调整工具进行部署验证减少从官网逐个获取安装文件的等待成本。1. 这个 zip 到底是谁gsm 是网格独立介质不是数据库本体把 Oracle Database 19c 的 Windows x64 安装包 WINDOWS.X64-193000-gsm.zip 下载回来解压后双击 setup结果安装向导里写的全是 Grid Infrastructure、Oracle Restart、ASM 这些词你大概率会愣一下我要装的是数据库啊这不是错觉。文件里的 gsm 是 Grid Standalone Media 的缩写对应的是 Oracle 19c 在 Windows 单机上的网格独立介质它装出来的是 Oracle Restart 与 ASM 存储体系而不是那个能直接跑业务库的 Database Home。很多人拿到这个包当数据库软件装装到一半才意识到下错了。这个包真正解决的是单机环境里想让数据库实例具备开机自启、崩溃自动拉起、用 ASM 管理数据文件的能力同时保留未来向 RAC 演进的空间。如果你只是想在 Windows 上跑一个普通单实例库不需要 ASM 也不需要自动重启去下载 WINDOWS.X64-193000-db_home.zip 就够了。本文按 gsm 这条线讲清楚下载校验、Oracle Restart 静默安装、建库选型与常见踩坑照着做能把环境一次搭稳。2. 下载与解压前的三件事介质区分、校验和系统清单2.1 db_home 和 gsm 两个 zip什么样的机器该用哪个Oracle 在 Windows x64 上把 19c 的交付拆成两个独立 zip文件名分别是 db_home 和 gsm。db_home 是纯数据库软件介质安装向导里就是 Database 组件gsm 则是 Grid Standalone Media里面装的是 Oracle Restart 的网格基础设施。两个包不是同一个东西的两种叫法也绝对不能互相替代。gsm 包解压后你会看到 gridSetup.bat数据库介质里则是 setup.exe从入口脚本就能一眼分辨。选哪个取决于你的目标。如果现在的诉求是搭一个单实例开发库或生产小库数据文件直接落在 NTFS 文件系统上不折腾 ASM也不想维护多一层网格服务那就用 db_home 包十分钟能把库建起来。反过来如果你要求数据库实例随 Windows 开机自动启动、进程异常退出后能被自动拉起或者打算用 ASM 统一管理多套库的数据文件甚至未来要把这套环境扩成两节点的 RAC那就必须先装 gsm 包。常见做法是先把 Oracle Restart 装好再在同一个 Oracle Home 体系下建库。装完 gsm 包之后你得到的不是数据库实例而是一层高可用服务和存储管理框架。这层框架装完后续用 DBCA 建库时可以把数据文件放进 ASM 磁盘组实例注册和启动交给 Oracle Restart 管理。很多人在 Windows 上折腾 19c 失败根因就是把这两个包搞混了。2.2 先校验再解压用 SHA256 对着官网数字核对gsm.zip 有几个 GB 大小从官网下载走 HTTP 传输中间任何一段网络抖动都可能导致压缩包损坏。建议解压前先做一次完整性校验。Oracle 官方下载页会同时给出对应文件的 SHA256 校验和下载完用 PowerShell 算一遍本地哈希两边一致再解压。Get-FileHash -Path D:\downloads\WINDOWS.X64-193000-gsm.zip -Algorithm SHA256算出来的结果是一串 64 位十六进制字符串。去官网下载页找到同文件名的校验值逐字符对比注意 PowerShell 默认输出大写字母官网页面可能是小写对比前统一大小写。这一步花不了一分钟却能省掉后面解压到一半报错、安装器读文件失败这类玄学问题。没装 PowerShell 或者想用更直观的方式也可以用压缩软件自带的测试压缩包功能。7-Zip 打开 zip 后选择「测试」能完整跑完就说明文件头与 CRC 都没问题。但注意测试通过只代表压缩包结构完整不代表它一定是你想要的那个版本。版本号认准文件名里的 193000它对应 19.3.0.0.0是 19c 的初版发布编号。19c 后续版本升级靠 Release Update 补丁完成官网不会因为 19.4、19.5 发布而更新这个 zip 的名字。校验完之后解压不要直接双击 zip 里的 setup 去装。安装器在过程中会反复读取整个 Oracle Home 目录下的文件压缩包挂载在深层路径或网盘同步目录里时很容易出现读取文件失败的偶发问题。把 zip 全部解压到本地磁盘再安装是最稳妥的路径。2.3 解压目录、主机名和内存翻车的三个前置因素解压目录是第一个坎。路径里不能有中文、空格、括号也不要放在桌面上。常见做法是在 C 盘根目录建一个纯英文目录比如 C:\oracle\193000把 gsm.zip 解压到这里。Oracle 的安装器在 Windows 上对路径里的非 ASCII 字符处理非常脆弱中文目录名轻则让预检告警重则直接导致 setup 闪退。这个坑后面专门展开说。主机名是第二个容易忽视的点。装网格组件前在 cmd 里执行 hostname 看当前机器名。主机名不要超过 15 个字符不要带下划线不要带中文。Windows 的 NetBIOS 名和 DNS 解析在网格组件里有一套独立的处理逻辑主机名带下划线会让监听和群集相关的解析流程出问题报错还不直观。如果现有机器名不规范先改名重启再开始安装别抱着侥幸心理。内存和虚拟化是第三个要点。物理内存按 8GB 起步规划比较稳4GB 的小机器也能装完但建库和跑 ASM 时交换内存频繁回滚和建库操作能卡到让人想放弃。如果跑在 VMware 或 Hyper-V 虚拟机里确保虚拟机开启了 VT-x 嵌套虚拟化磁盘控制器用 SCSI 而不是 IDE。Windows Server 2019 和 2022 是 19c 最省心的宿主Windows 10 Enterprise LTSC 2019 也有人跑通但开发机上的杀毒软件和系统更新策略容易干扰安装过程装的时候最好临时关掉实时防护。3. 装 Oracle Restart从响应文件到静默安装的完整路径3.1 管理员权限、解压目录和网格用户组gsm 包的安装入口是 gridSetup.bat。开始之前把安装账号提权到本地管理员。Oracle 在 Windows 上安装网格组件时会往系统服务、注册表、本地用户组写入信息普通管理员账号如果 UAC 拉得高安装器在执行系统级操作时会被拦下来报错还不一定指向权限问题。最省事的方式是用 Administrator 账号登录右键 cmd 选择「以管理员身份运行」再执行安装脚本。网格组件在 Windows 上安装时会创建一组以 ORA_ 开头的本地用户组用来隔离数据库管理权限和 ASM 管理权限。常见的有 ORA_DBA、ORA_OPER、ORA_ASM 这类名字具体到你机器上叫什么以安装器自动创建结果为准。如果提前手动建了同名的组确认组里已经加进了当前安装账号如果没建安装器会自己创建不用干预。注意这些组只在单机环境有意义不要试图拿它们对应到域账号体系里。解压目录在安装前再确认一遍C:\oracle\193000 下应该能直接看到 gridSetup.bat。如果解压过程出现文件覆盖或杀毒软件拦截的提示不要继续先把目录清空重新解压。网格安装对 Oracle Home 目录的完整性要求很高缺一个文件后面全是怪问题。3.2 写一份 grid.rsp把 8 个关键参数一次定对静默安装网格组件比图形界面更可控也方便以后在别的机器上复现。Oracle 的静默安装靠响应文件驱动文件格式是 keyvalue用文本编辑器写好执行安装时通过 -responseFile 参数指向它。oracle.install.optionCRS_CONFIG ORACLE_BASEC:\app\oracle ORACLE_HOMEC:\app\oracle\grid\193000 INVENTORY_LOCATIONC:\app\oraInventory oracle.install.asm.OSDBAORA_DBA oracle.install.asm.OSOPERORA_OPER oracle.install.asm.OSASMORA_ASM oracle.install.asm.SYSASMPasswordYourStrongPwd_2024 oracle.install.asm.diskGroup.nameDATA oracle.install.asm.diskGroup.redundancyEXTERNAL oracle.install.asm.diskGroup.AUSize1048576 oracle.install.asm.diskGroup.disks//./PHYSICALDRIVE1 oracle.install.asm.diskGroup.diskDiscoveryString//./* oracle.install.crs.config.autoStartClusterTRUE最关键的一行是 oracle.install.optionCRS_CONFIG它告诉安装器这是 Config 模式装完直接配置 Oracle Restart。如果填 CRS_SWONLY就只装软件不配置服务那后面还得靠 ASMCA 和 srvctl 手工补配置不建议新手走这条路。ORACLE_BASE 和 ORACLE_HOME 要分开Oracle 官方推荐的结构是 BASE 在 C:\app\oracleHOME 在 C:\app\oracle\grid\193000这样后续打补丁时 Home 目录可以整目录替换不用动 Base 下的配置和日志。SYSASMPassword 是 ASM 实例的管理员密码要满足 Oracle 的密码复杂度要求至少 8 位包含大小写字母和数字不能和用户名相同。这个密码如果丢了后面连 ASM 实例都进不去到时候只能靠操作系统认证兜底非常被动。磁盘组参数决定 ASM 的初始存储池。DATA 是主数据盘组redundancyEXTERNAL 表示不做镜像依赖底层存储保证可靠性如果只有一块物理盘别选 NORMAL 或 HIGHASM 会因为你没有足够的故障组直接报错。diskGroup.disks 填 Windows 物理磁盘路径格式是 //./PHYSICALDRIVE1数字对应系统里第几块物理盘可以在磁盘管理里确认。diskDiscoveryString 用 //./* 表示搜索本机所有候选磁盘。3.3 跑 gridSetup.bat 和安装收尾的 bat 脚本响应文件准备好后用管理员 cmd 执行静默安装。命令里 -waitforcompletion 是必须的没有它安装器会在后台跑你根本不知道什么时候结束-ignorePrereq 建议先不加让预检把问题暴露出来预检全过再加也不迟。cd /d C:\oracle\193000\grid gridSetup.bat -silent -responseFile C:\oracle\config\grid.rsp -waitforcompletion执行后终端会持续输出安装进度。预检失败会直接终止去 C:\oracle\193000\grid\cfgtoollogs\gridSetup 目录下找以 installActions 开头的日志文件里面会写明具体哪一项不满足。最常见的预检失败就是内存不足、临时目录不可写、主机名解析异常其中主机名解析问题在 Windows 上很隐蔽预检报的可能是 PRVF-0002 这类 cluster 名称解析错误实际是因为本机 hosts 文件里没有把主机名映射到 127.0.0.1。安装过程走到最后一步向导会提示需要运行一个配置脚本来完成最后的服务注册Windows 上一般是 orainstRoot.bat位置在 ORACLE_HOME 下。这一步不能跳过。用管理员 cmd 进入该目录执行批处理脚本会注册 Windows 服务并设置权限。执行完不会有太多回显看到类似 Setting the Oracle service 的输出就对了。装完先别急着建库用 srvctl 确认网格服务已经处于运行状态。crsctl check has srvctl status has srvctl status asm -acrsctl check has 如果返回 CRS-4638: Oracle High Availability Services is online说明 HAS 正常。srvctl status asm -a 能看到 ASM 实例的当前状态和磁盘组挂载情况。如果 ASM 没有自动启动执行 srvctl start asm 手动拉起再检查 DATA 磁盘组是否已经挂载。到这里Oracle Restart 这一层就算立住了。4. 建库与存储ASM 磁盘组或 NTFS两种打法的取舍4.1 ASM 还是文件系统单实例环境下的决策表网格组件装完数据库实体还没有。下一步是用 DBCA 建库但在建之前要把存储选型定下来。Windows 上 19c 单实例有两条主流路径数据文件放在 ASM 磁盘组里或者直接放在 NTFS 文件系统上。这两条路不是随便选的先看一张决策表。考虑维度ASM 磁盘组NTFS 文件系统安装复杂度需要先配磁盘组和 ASM 实例无需额外配置开机自启依赖 Oracle Restart 管理依赖 Windows 服务或手动脚本备份恢复RMAN 直接读写路径稳定文件级复制方便向 RAC 演进数据文件路径无需迁移需要迁移到共享存储排错难度ASM 报错不直观日志多一层普通文件权限问题好查如果你的核心诉求是未来要扩成 RAC或者希望数据文件路径不依赖 Windows 盘符选 ASM 是一次到位的选择。gsm 包存在的意义就在这里它让你在一台 Windows 机器上先把 ASM 存储体系建起来等到哪天要加节点数据文件不用移动。反过来如果这就是一个短周期项目库或者团队里没人熟悉 ASM那不要为了技术上的高级感去选它NTFS 上建库省掉磁盘组维护不说备份时拿文件复制就能兜底。这里要纠正一个常见预期装了 gsm 包不等于一定要用 ASM。Oracle Restart 和 ASM 是两个独立能力gsm 同时带来了两者但你可以只启用 Oracle Restart 的自动拉起能力数据文件继续放在 NTFS 上。不过这样装有点浪费既然网格层已经落地把 ASM 用上是性价比更高的选择。4.2 用 DBCA 静默建库最小参数与回滚办法存储选型定下来后建库推荐走 DBCA 静默模式。图形界面建库本身不难但 Windows 上图形界面的数据库配置助理偶尔会卡在某个组件配置上错误提示跳来跳去反而不如静默命令好控制。DBCA 的命令行参数和 Linux 上基本一致在 Windows 的 cmd 里执行 dbca.bat。dbca.bat -silent -createDatabase ^ -templateName General_Purpose.dbc ^ -gdbName ORCL ^ -sid ORCL ^ -sysPassword YourSysPwd_2024 ^ -systemPassword YourSystemPwd_2024 ^ -datafileDestination DATA ^ -storageType ASM ^ -recoveryAreaDestination FRA ^ -characterSet AL32UTF8 ^ -emConfiguration NONE ^ -totalMemory 2048这段命令的核心在存储相关的三个参数。-storageType ASM 告诉 DBCA 数据文件要放到磁盘组里-datafileDestination DATA 指向安装网格时创建的 DATA 磁盘组。注意 DATA 前面是一个加号不是路径分隔符这是 Oracle 对 ASM 磁盘组的统一表达方式。如果你选择 NTFS把 -storageType 改成 FS-datafileDestination 填一个本地目录例如 C:\app\oracle\oradata其它参数不变。-emConfiguration NONE 是我每次必带的参数。默认建库会尝试配置 Enterprise Manager 相关组件在静默模式下这一步经常因为端口或内部账号问题卡住关掉就干净了。totalMemory 2048 表示给实例分配 2GB 内存这是 SGA 和 PGA 的合计目标值不是硬性限制机器只有 8GB 内存时别给超过 3072Windows 系统本身还要预留。如果建库中途失败DBCA 会把日志写到 %ORACLE_BASE%\cfgtoollogs\dbca\ORCL 目录下先看这个目录里的日志比盲目重跑靠谱。失败后不需要卸载重装把没建完的库清掉修正参数重新执行即可。清理命令是 drop database但得先起一个空实例来执行它操作繁琐实际操作中用 dbca -silent -deleteDatabase -sourceDB ORCL 更直接这个命令会帮你把残留服务一并清掉。4.3 这包离 RAC 还有多远别拿单节点清单去套集群搜索热词里经常出现 19c RAC 安装步骤这里有必要把边界说清。gsm 包是 Grid Standalone Media装完是 Oracle Restart 单节点高可用体系不是 RAC。RAC 安装需要额外的集群介质需要共享存储、多网卡、DNS 解析 SCAN 名称、至少两个节点做互信这些和 gsm 包完全是两套清单。gsm 包的价值在于它能让你以单节点的形态先熟悉网格组件的工作方式srvctl 怎么管理资源、ASM 磁盘组怎么维护、日志去哪看。等到真正上 RAC 时这些经验百分之百用得上。但别拿单节点的安装流程去套网上搜到的 RAC 文档更别把单节点的数据文件目录结构直接搬到共享存储上两套环境的配置入口差异很大。Oracle 19c 的版本演进也值得注意。你现在拿到的是 19.3.0.0.0后续的 19.4 到 19.2x 都是以 Release Update 补丁形式发布的不需要重新下载大 zip 重装。初期版本有一些已知问题生产环境建议装完后第一时间打上最新的 RU 补丁。补丁从官网的补丁下载页面获取打完用 opatch lsinventory 确认补丁号已生效。5. 常见问题与避坑五次失败后总结的五个必踩点5.1 解压路径带空格或中文安装器一闪而过现象双击 gridSetup.bat 后一个黑窗口闪一下就没了或者安装向导界面冒出乱码字符还没到选择安装类型就退出。这个问题出现频率极高特别是从网盘下载回来直接解压到「下载」文件夹或桌面的人路径里隐含的中文用户名就够让安装器罢工。原因Oracle 安装器在扫描 Oracle Home 路径时对非 ASCII 字符和空格的处理逻辑有缺陷。路径里一旦出现中文、空格、全角括号预检阶段的路径检查直接判定失败静默模式下表现为进程退出图形界面模式下表现为初始化窗口直接关闭。解决在 C 盘根目录建纯英文目录比如 C:\oracle\193000把解压和安装都放在这个路径下。已经解压到中文路径的不要试图移动目录后继续装Oracle Home 目录一旦被安装器写入过信息移动后路径记录会全部失效。正确做法是删掉整个目录重新解压最多浪费十分钟比一路踩坑到最后再翻车强得多。5.2 INS-30131临时目录权限和 Windows 防火墙背锅现象预检阶段报 INS-30131提示无法访问临时目录或无法创建 staging 目录安装直接中断。有些机器上这个报错还会附带权限不足、访问被拒绝之类字眼但实际却与真正的问题无关。原因安装器运行时会把临时文件写到 %TEMP% 目录Windows 上如果 TEMP 变量指向了用户目录下的某个位置而该目录被安全策略或清理软件设置了写保护安装器就会卡在这里。另一个高频原因是防火墙或安全软件把安装器当可疑进程拦截导致安装器对本地目录的写入被静默阻断。解决打开系统环境变量把 TEMP 和 TMP 都改成 C:\Temp确认目录存在且 Everyone 有写权限然后重新登录再执行安装。防火墙方面在 Windows Defender 防火墙的允许应用列表里把 gridSetup.bat 和后续的 dbca.bat 加入白名单。如果装的是虚拟机宿主机的安全软件有时也会拦截虚拟机的网络写操作排查时别忽略这一层。5.3 ORA-29701HAS 没起来一切集群命令都白搭现象装完网格组件后执行 srvctl status database 或 crsctl check has报 ORA-29701 无法连接到 Cluster Synchronization Service或者 crsctl 显示 HAS 处于 OFFLINE 状态。此时你会发现连 sqlplus 里以 SYSASM 登录都变得困难。原因安装最后阶段的配置脚本没有成功执行或者被安全软件拦截。Windows 上 Oracle Restart 依赖一组以 Oracle 开头的系统服务安装收尾的 bat 脚本负责注册和启动这些服务它没跑完HAS 进程就起不来。解决以管理员身份重新执行 ORACLE_HOME 下的 orainstRoot.bat 脚本执行完去服务管理器检查自动启动的服务里是否出现了 OracleOHService 等条目把启动类型改为自动并手动启动。服务起来后依次执行 crsctl start has、srvctl start asm再查状态。如果服务管理器里压根没有 Oracle 相关的服务条目说明脚本确实没执行成功回到安装日志目录查找最后的报错这类问题多半指向权限或路径。5.4 DBSNMP 配置失败EM 组件让静默安装卡住的经典场景现象DBCA 静默建库时进度走到一半停住日志里反复出现 DBSNMP 账号锁定、无法配置 Enterprise Manager 之类错误或者卡在 Creating and starting Oracle instance 之后再无进展。原因DBCA 默认会创建并配置 DBSNMP 和 Enterprise Manager 相关组件这个过程需要访问外网或本地的 OMS 服务。静默模式下网络受限、密码策略不合规、端口被占用都会让这一步挂起。Windows 上这个组件配置的失败率比 Linux 高得多属于玄学频发区。解决建库命令里显式加上 -emConfiguration NONE这是最省心的处理方式。如果已经建到一半卡住CtrlC 终止后别直接重跑先清理残留实例再执行带 NONE 参数的全新建库命令。库建好之后如果需要监控后续再单独配 Agent不要在建库这个环节给安装流程增加不确定因素。5.5 1521 端口被占用监听和本地服务的端口战争现象监听启动失败lsnrctl status 报 TNS-12560 或 TNS-01153日志里能明确看到 bind 错误。用 netstat 检查时发现 1521 端口已经被另一个进程占住。原因机器上以前装过 Oracle Express、其它版本的数据库或者某个开发的本地服务它们默认也监听 1521。Windows 上这种情况很常见尤其开发机上残留服务多新装的监听端口和旧服务撞车后谁后启动谁失败。解决先执行 netstat -ano | findstr 1521看端口归属的 PID再去服务管理器里对照这个 PID 找到具体进程。确定是旧数据库服务后把旧服务停止并设为手动启动然后重启新监听。如果旧服务不能停可以修改新环境的 listener.ora把端口从 1521 改成 1526改完重启监听再执行 tnsping 验证。注意修改端口后tnsnames.ora 里的连接串也要同步改这个问题很容易被忽略。6. 装完不是结束用 srvctl 和日志做一次 15 分钟体检环境装完别急着导数据。先花 15 分钟做一次体检确认网格层和数据库层都处于健康状态。体检从三条命令开始。验证命令预期输出失败时看什么crsctl check hasCRS-4638: Oracle High Availability Services is onlineWindows 服务列表里的 OracleOHServicesrvctl status database -d ORCLDatabase is running实例对应的 alert 日志asmcmd ls DATA能看到数据文件目录ASM 实例状态和磁盘组挂载情况体检通过后日常维护记住两个动作。所有启停操作都走 srvctlsrvctl stop database -d ORCL、srvctl start database -d ORCL不要直接在服务管理器里把 OracleService 停掉那样会绕过 Oracle Restart 的资源管理逻辑导致下次开机后资源状态不一致。日志方面实例的 alert 日志在 %ORACLE_BASE%\diag\rdbms\ORCL\ORCL\trace\alert_ORCL.log遇到问题先看这里路径别记错。给新装的环境补一个定期任务每周用 RMAN 做一次全备备份文件默认可以放在 ASM 的 FRA 磁盘组里前提是你按照前面的参数建了 FRA 磁盘组。如果建库时没建 FRA先动手空间会紧张去 ASMCA 里补一个再配置快速恢复区就行。回想我第一次拿到 gsm.zip 时也是把它当成数据库本体在装折腾到深夜才反应过来包选错了。如果能把这份文件名的理解前置十分钟后续所有步骤都会顺畅得多。你现在已经知道了这个包是什么、怎么装、坑在哪剩下的就是动手把环境搭起来。希望帮到你。本文还有配套的精品资源点击获取