ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Windows平台Oracle 12c静默安装与避坑指南

Windows平台Oracle 12c静默安装与避坑指南 简介面向Windows平台的Oracle 12c数据库补丁/安装资源专为DBA、系统运维及数据库开发者在Windows Server上部署、升级或修复Oracle Database 12c实例而准备可有效应对版本兼容、组件缺失及补丁更新等常见问题。压缩包共收录2000个文件体积约780MB文件构成以475个msb消息文件、413个dll动态链接库、315个sql脚本、198个plb PL/SQL编译单元、176个exe可执行程序为主体同时包含jar、xml、bat、msg等辅助资源覆盖Oracle运行库、命令行管理工具、ASM与ACFS存储组件及自动化配置脚本能够支撑从安装启动到日常维护的完整链路。该资源已有1433人学习使用从文件构成看ASM与ACFS存储组件相关工具及自动化配置脚本一应俱全便于按需取用。读者通过这份资源可直接获得一套完整的Windows版Oracle 12c介质摆脱逐个搜索文件的低效过程适用于离线环境搭建、补丁批量升级、实例克隆恢复和故障日志排查等实际工作场景尤其适合需要快速搭建测试库或进行版本对照的学习型用户。1. 这一串文件名其实是 Windows 上装 Oracle 12c 的“入场券”第一次看到“windows 12c p33174380_122010_MSWIN-x86-64.zip”这个文件名很容易误以为是某个 Windows 新系统或驱动包。它其实是 Oracle Database 12c Release 2 的 Windows 安装介质版本是 12.2.0.1面向 64 位 Windows交付方式是单个超大 zip。你会拿到它多半不是因为有闲工夫研究数据库而是要在一台 Windows 服务器上给旧系统、ERP 或测试环境把数据库跑起来。这篇文章不聊“该不该用 12c”只讲怎么把这个 zip 变成能连能查的真数据库文件从哪来、解压注意什么、响应文件怎么写、哪些坑会让你浪费一下午。2. 文件名拆解p33174380、122010、MSWIN、x86-64 各是什么2.1 p33174380 是补丁编号不是版本号Oracle 在交付补丁集、升级包甚至完整安装介质时文件名都长这副模样p 开头是补丁 ID体现的是 Oracle 补丁体系里的一次“交付批次”而不是数据库版本。你可以把它理解为这个 zip 在 Oracle 内部系统的“流水号”后续在 My Oracle Support 的补丁下载里搜索、核对、下载都靠这串编号。因为看到 p 开头就按补丁去搜是很多人下载时绕弯路的主要原因。实际运维里完整安装介质也走这条通道时文件名里还是会带 p 编号它和“这个数据库是 12.1 还是 12.2”完全无关。知道这一点后面下载时才能分辨出你有没有拿对文件。2.2 122010 是 12.2.0.1 的短记号Oracle 数据库用四段版本号表示大版本、小版本、更新级别和补丁级别12.2.0.1展开就是 12c 的第二个发行版补丁级别为 1。文件名里的 122010 正是这四段数字压扁后的写法。常见场景里大家更习惯叫它“12c R2”。这里有个容易混淆的地方Oracle 12c 还分 12.1.0.2 和 12.2.0.1两者在 Windows 上的安装方式基本一样文件名里的编号不同。如果你拿到的 zip 里写的是 122010 而不是 12102说明你手上是 12.2.0.1安装完成后 sqlplus 里看到的版本也是 12.2.0.1两个版本在后面的 DBCA 建库参数上几乎没有差异不用重新找文件。2.3 MSWIN 和 x86-64别把 x86 当成 32 位MSWIN 是 Oracle 对 Microsoft Windows 平台的固定代号不是某个神秘系统也不是 MS-DOS。x86-64 指 AMD64/Intel 64 通用 64 位指令集注意它不是 32 位。Oracle 还有对应的 32 位 Windows 版本平台字段是 win32 或 x86 而不是 x86-64。一定要确认你所在的操作系统是 64 位。Windows 10/11 或 Windows Server 上右键“此电脑”属性一眼就能看到系统类型。如果你拿的是 MSWIN-x86-64 文件却想在 32 位系统上装开局就是一个不可逆的错误。这种事在虚拟机模板复用的时候经常发生模板本身是 64 位但安装包在传输过程中被换成了 32 位版本装上以后服务能起后面跑 SQL 必崩。2.4 下载渠道edelivery 与 MOS 补丁下载的区别没有 Oracle 账号的人第一反应是搜“oracle 12c r2 下载”搜索结果里真正靠谱的只有两类第一类是 Oracle Software Delivery Cloud也就是官方软件交付云。用 Oracle 账号登录后选 Oracle Database、版本 12.2.0.1、平台 Microsoft Windows x64勾选许可协议就能拿到 zip。这个渠道不需要你有付费支持合同是做实验、学习、开发环境最正规的来源。第二类是 My Oracle Support 的补丁下载。搜索 p33174380通常会直接命中标题里这个同名文件。企业环境里运维拿到的介质多半是从这里下载的因为网络更可控下载工具支持断点续传。两个渠道拿到的安装介质基本一致文件名可能略有差别不影响后续安装。这里要重点提醒不要从第三方网盘、博客里的转存链接下载 Oracle 安装包。文件名可以一模一样但里面被重新压进多余目录、塞进其他程序的风险不小。数据库安装包本身需要最高权限运行一旦被动过手脚后果不只是安装失败能衡量的。下载这件事来源比速度重要得多。2.5 解压前先做哈希校验certutil 和 Get-FileHash几 GB 的 zip 在下载过程中损坏的概率比想象中高。下载完成后不要急着解压先校验。如果是图形界面下载页面上一般会给 SHA-256 或 MD5 值Windows 命令行下用自带工具就能算certutil -hashfile D:\download\p33174380_122010_MSWIN-x86-64.zip SHA256或者用 PowerShellGet-FileHash -Path D:\download\p33174380_122010_MSWIN-x86-64.zip -Algorithm SHA256把输出内容和下载页面上写的哈希值比对一致再解压。如果下载渠道只给了文件大小至少确认 zip 大小和页面标注一致差一个字节都要重下。这段说明一下参数certutil 是 Windows 自带的校验工具SHA256 参数指定算法Get-FileHash 是 PowerShell 里的对应命令结果更直观推荐用它。哈希一致只能说明文件没被改过、没下损坏不能证明文件一定安全但如果哈希都对不上后面安装一定出问题。2.6 磁盘空间与解压目录规划解压前还要想清楚两件事磁盘和路径。zip 解压后通常会膨胀到原大小的两倍左右数据库安装完成后 Oracle Home 又要占一份空间。一台只跑 Oracle 12c 的机器系统盘或数据盘留出 20-25GB 是稳妥的。如果空间不够解压到一半报磁盘满整个 zip 又得重来。解压目录要满足三条NTFS 文件系统、不含中文、不含空格。比如D:\oracle\install没问题D:\下载\oracle 12c就一定有问题。Oracle 安装器底层是 Java对中文路径和空格路径的支持一直不怎么样等报错再搬目录耗时又闹心。数据库文件将来也不要放在解压目录里解压目录是临时介质不是数据库数据目录。3. 解压与安装准备把 zip 变成可以落地的 Oracle Home3.1 解压工具怎么选内置解压器、7-Zip 还是 tarWindows 资源管理器自带的“全部解压缩”在几 GB 大文件上又慢又不稳长路径解压到一半失败是常事。我一般用 7-Zip右键解压到指定目录即可如果你不喜欢装额外软件Windows 10 1803 之后自带的 tar 命令也能直接处理 zip 文件tar -xf D:\download\p33174380_122010_MSWIN-x86-64.zip -C D:\oracle\install参数含义-xf表示解压文件-C指定解压目标目录。注意 Windows 的 tar 是 bsdtar对 zip 的兼容性没问题但建议等它跑完再看有没有报错不要中途关窗口。解压完成后先别急着装看一眼目录里有什么。常见的 Oracle 12c Windows 交付解压后会出现一个database子目录setup.exe就在里面也有部分交付直接展开成类似dbhome_1的目录里面就是安装程序需要的目录结构。判断标准只有一个找到setup.exe找不到说明介质不完整继续装下去没有意义。3.2 操作系统和硬件底线Windows 10 能装但别拿它生产Oracle 12.2 官方支持的 Windows 版本是 Windows Server 2012、2012 R2、2016以及后续的 Server 版本。Windows 10 专业版不在官方支持列表里但实践中大量开发机都在跑性能没有问题只是出了问题别指望 Oracle 支持给你答复心里有数就好。硬件方面官方下限是 4GB 内存这是“能装”而不是“好用”。2GB 内存的虚拟机装 12c 会非常痛苦DBCA 建库步骤可能十几分钟没动静让人误以为卡死。我给虚拟机部署的建议是 8GB 起步CPU 给 2 核以上磁盘用 SSD。另外页面文件不要手动关掉Windows 的虚拟内存是数据库进程的最后兜底关了容易在内存不足时让 Oracle 直接崩。3.3 ORACLE_BASE 与 ORACLE_HOME目录规划决定你以后好不好过Oracle 安装时会让你填两个路径ORACLE_BASE 和 ORACLE_HOME。很多人被这两个词绕晕其实很简单。ORACLE_BASE 是 Oracle 软件的根目录比如C:\app\oracle放数据文件、管理文件、日志都从它下面展开。ORACLE_HOME 是数据库软件实际安装的位置规范习惯是ORACLE_BASE\product\12.2.0\dbhome_1例如C:\app\oracle\product\12.2.0\dbhome_1。为什么这么分因为同一台机器上可以装多个 Oracle Home将来升级补丁、切换版本时目录规范能省很多事。安装时不要图省事把 ORACLE_HOME 直接设在盘符根目录也不要放在桌面上。Oracle Home 下面有几十个子目录放根目录会把磁盘空间结构搅得没法看放桌面则会引发各种权限问题。3.4 用哪个 Windows 用户运行服务Oracle 12c 在 Windows 上是以 Windows 服务的方式常驻运行的安装程序会要求你指定一个 Windows 用户。常见做法是创建一个专用本地用户名字可以用oracle密码单独设置安装时填入这个用户的密码。不建议直接使用 Administrator 或你当前的登录账户。原因很现实这个密码如果变了、账号被域策略禁用了Oracle 服务就会启动失败而专门建一个账户权限范围可控将来离职交接也不影响数据库运行。安装界面里对“这个账户是否作为服务登录”的权限会做检测。如果收到“远程过程调用失败”或“账户权限不足”的错误去本机“本地安全策略 - 用户权限分配 - 作为服务登录”里把该用户加进去再重试安装。3.5 先决条件检查哪些必须过哪些可以放安装到一半会弹出先决条件检查。常见的失败项包括物理内存不足、页面文件大小不够、Windows 版本不在支持列表。内存不足和页面文件问题建议解决因为装完也跑不顺。Windows 10 上最容易出现版本支持警告这一项在实验环境可以直接忽略勾上“忽略”继续即可。但有两种情况不要硬过一是当前系统是 32 位而安装包是 x86-64二是你选择的安装目录所在的磁盘是 FAT32。这两种属于硬伤过了安装后面也会一塌糊涂。另外安全检查类软件也会干扰。解压目录和 ORACLE_HOME 目录如果被杀软实时扫描安装时间会翻倍甚至卡在某个文件上不动。通常做法是安装期间把这两个目录加进杀软排除列表装完再恢复扫描。4. 静默安装与响应文件一条命令把 Oracle 12c 装上 Windows4.1 为什么建议留一份响应文件图形界面安装 Oracle 12c 并不难点鼠标十分钟能完成。但如果要在多台虚拟机重复部署或者想把“这次装了什么参数”留下来给以后排查用我强烈建议走静默安装。把参数写进响应文件命令跑完就是一个可复现的部署记录下次换台机器只要把主机名、路径改掉再跑一遍非常省事。4.2 能跑通的最小 db_install.rspOracle 安装介质里自带响应文件模板一般位于解压目录的database\response\db_install.rsp。不过我建议直接用一个精简的可控版本避免被模板里几百行注释干扰。下面这份是我常用的最小配置oracle.install.responseFileVersion/oracle/install/rspfmt_dbinstall_response_schema_v12_2_0 oracle.install.optionINSTALL_DB_SWONLY ORACLE_HOSTNAMEWIN-DB-01 ORACLE_BASED:/app/oracle ORACLE_HOMED:/app/oracle/product/12.2.0/dbhome_1 oracle.install.db.InstallEditionEE ORACLE_HOME_NAMEOraDb1220_home1 SECURITY_UPDATES_VIA_MYORACLESUPPORTfalse DECLINE_SECURITY_UPDATEStrue oracle.installer.autoupdates.optionSKIP_UPDATES逐项说明oracle.install.responseFileVersion指定响应文件模板版本12.2.0 就写这个值oracle.install.optionINSTALL_DB_SWONLY表示只装数据库软件不建库建库放到后面用 DBCA 单独做ORACLE_HOSTNAME写机器名可以用主机名或 IPORACLE_BASE和ORACLE_HOME就是上一章规划的目录oracle.install.db.InstallEditionEE选择企业版个人学习可以改成 SE 省空间SECURITY_UPDATES_VIA_MYORACLESUPPORTfalse和DECLINE_SECURITY_UPDATEStrue这两条非常关键静默模式如果不把这些设为 false安装器会去连 Oracle 支持服务器拿更新拿不到就直接失败还会卡在账号密码输入上。这里有个 Windows 上的血泪经验响应文件里路径的分隔符最好用正斜杠D:/app/oracle不要用反斜杠。响应文件底层的 Java 解析对反斜杠转义很敏感写少了报错写多了也报错正斜杠能省掉一半问题。4.3 执行静默安装并判断结果写好响应文件后在管理员命令行窗口执行cd /d D:\oracle\install\database setup.exe -silent -responseFile D:\oracle\install\response\db_install.rsp -waitforcompletion echo %ERRORLEVEL%第一行切到解压出来的安装程序目录确保调用的是这个介质的setup.exe。第二行中-silent指定静默模式-responseFile指向响应文件-waitforcompletion让命令窗口在这里等待直到安装结束才返回这样后面第echo %ERRORLEVEL%才能拿到安装结果。退出码是 0 表示成功非 0 要去日志里找原因。使用-waitforcompletion我建议一定加上。不加的话命令会立即返回你以为安装成功了其实装到一半被杀软踢出去判断失真。4.4 用 netca 和 dbca 补齐监听器和数据库软件装完只是第一步还没有监听器也没有实例。先用 netca 创建监听netca -silent -responseFile D:\oracle\install\response\netca.rspnetca 一般会按默认配置生成一个名为 LISTENER、端口 1521 的本地监听器。如果你只有一台机器、一个实例默认配置就够了。生产环境有多实例、多端口需求再基于模板改端口和监听名。监听器有了再用 DBCA 创建数据库实例。这是整个安装里最耗时的一步也是参数最多的一步dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbname ORCL12C -sid ORCL12C -sysPassword Ora_DB_12345 -systemPassword Ora_DB_12345 -datafileDestination D:/app/oracle/oradata -recoveryAreaDestination D:/app/oracle/flash_recovery_area -characterSet AL32UTF8 -nationalCharacterSet AL16UTF16 -totalMemory 4096命令较长实际执行时写在一行即可。每个参数都是关键-templateName General_Purpose.dbc用 Oracle 自带的通用模板适合大多数业务-gdbname和-sid保持一致实例名也叫 ORCL12C-sysPassword和-systemPassword的密码必须有大小写字母和数字12c 的 DBCA 会验证密码策略太简单的直接失败-datafileDestination指定数据文件位置不要和 ORACLE_HOME 放一起-recoveryAreaDestination指定快速恢复区-characterSet AL32UTF8保证中文能正常存储-totalMemory给实例分配 4GB 内存机器只有 8GB 内存时这是安全值要保守一点就填 2048。DBCA 建库一般要 15 到 30 分钟具体看机器性能。这段时间不要强行关窗口让它跑完。如果失败直接在命令行看到错误码下一步去日志定位。4.5 安装日志怎么找你不知道后悔药在哪安装过程产生的日志是最重要的排查依据。常见位置有两个%ORACLE_HOME%\cfgtoollogs\下面按组件分类的日志以及系统安装目录下的InstallActions开头的日志文件后者一般会生成在C:\Users\当前用户\AppData\Local\Temp或者 Oracle Inventory 的 logs 目录下。看到日志里出现FATAL字样通常代表安装失败出现WARNING不一定失败但值得放大看。我自己排错的习惯是一路看最后几十行绝大多数失败原因集中在路径不对、权限不够、响应文件格式错了这三类里。5. 避坑Windows 上装 Oracle 12c 的 5 个经典翻车点5.1 双击 setup.exe 没反应进程一闪而过现象解压完成后双击setup.exe鼠标转一圈然后什么也没发生任务管理器里进程一闪而过。原因要么 zip 没解压完整要么路径里有中文或空格要么系统缺少 Visual C 运行库。Oracle 12c 的安装程序依赖 VC 2013 运行库干净系统不一定自带。解决先按第二章的校验逻辑确认 zip 完整再把整个解压目录移到纯英文短路径比如D:\ora122然后安装微软 VC 2013 的 x86 和 x64 两个版本重启后再试。如果还没反应用管理员身份打开 cmd切到database目录手动运行setup.exe这样即使闪退也能看到命令行里输出的报错。5.2 安装中段报 INS-30131初始化失败现象开始装没多久屏幕上弹INS-30131 Failed to access the temporary location安装直接终止。原因安装账户对系统 TEMP 或用户 TEMP 目录没有写权限或者 TEMP 变量被组策略指向了不存在的路径。解决系统环境变量里把 TEMP 和 TMP 改成C:\Windows\Temp给当前用户赋完全控制权限也可以新建C:\OracleTemp并指向它。改完注销重进再跑安装。5.3 DBCA 建库时密码策略校验不过现象DBCA 跑到快结束时报密码不符合要求反复重试都是在同一处停下。原因Oracle 12c 的默认密码策略要求 sys 和 system 密码同时包含大写字母、小写字母和数字纯字母或纯数字都会被拒。解决直接用类似Ora_DB_12345这种带大小写和数字的密码。有些教程会让你先乱填一个简单密码建完库再关掉密码策略我不建议这么干测试库倒是可以生产库密码策略开着是应该的。5.4 远程连接不上有监听器但 telnet 1521 不通现象本机sqlplus能登录但用开发工具或另一台机器连接时超时telnet 目标IP 1521也不通。原因Windows 防火墙拦住了 1521 入站端口。很多人遇到这个问题第一反应是找“windows 关闭端口号”的办法甚至直接把系统防火墙整个关掉这是拿安全换方便。解决只放行需要的端口用管理员 cmd 执行netsh advfirewall firewall add rule nameOracle_1521 dirin actionallow protocolTCP localport1521这条命令会新增一条入站规则名字叫 Oracle_1521允许 TCP 协议访问本机 1521 端口。执行后从另一台机器重试。还要注意一点如果 listener.ora 里没有固定监听端口连接用的数据端口可能落在动态范围只放行 1521 不够。所以监听器配置里最好固定端口别用默认动态分配。5.5 重装时“12c 删除不干净”第二次建库一堆怪问题现象卸载后再装目录明明删了服务列表里还是能看到 Oracle 开头的服务第二次装完 DBCA 建库时提示某些路径已存在或密码文件冲突。原因Windows 上卸载 Oracle 不会自动清完注册表、服务和密码文件。手动删目录更会留下半截注册项第二次安装看到残留直接踩到旧环境的地雷。解决卸载要走 Oracle 自己的解安装工具在%ORACLE_HOME%\deinstall\deinstall.bat启动按提示填 Oracle 主目录和 SIDdeinstall 跑完后再检查服务列表把残留的 Oracle 服务用sc delete 服务名清掉注册表里HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE下对应版本残留键也要手动清理这步务必先备份注册表。下次安装前再把解压目录、ORACLE_BASE 剩余目录全部删除给系统一个干净状态。5.6 安装完成却没有 OracleServiceXXX 服务现象软件装完也没报错但服务列表里找不到任何 OracleService 开头的服务实例根本起不来。原因很可能只装了软件没建库或者 DBCA 建库失败时服务没来得及注册。软件安装和实例创建是两个独立步骤光装软件不会有数据库服务。解决如果数据库已经在某台机器上建好只是服务丢了可以用 oradim 手工重建 Windows 服务oradim -new -sid ORCL12C -startmode auto -pfile D:/app/oracle/admin/ORCL12C/pfile/initORCL12C.ora-new表示创建新服务-sid指定实例名-startmode auto让服务开机自启-pfile指向实例参数文件。执行完了再用oradim -startup -sid ORCL12C启动测试。大多数情况下还是建议重新跑一遍 DBCA 建库而不是手工补服务因为 DBCA 还会一并处理数据字典和密码文件。6. 装完后的第一件事三行命令验证再固定监听端口6.1 sqlplus 最小验证安装和建库都成功后第一件事是用本地操作系统认证登录数据库sqlplus / as sysdba SQL select banner from v$version; SQL select name, open_mode from v$database;v$version是数据库版本视图能正常返回版本号说明实例进程活着v$database的open_mode显示READ WRITE才说明数据库是真正开放的。如果这里报ORA-01034或ORA-12560说明实例没有启动或者ORACLE_SID环境变量没设对。Windows 上记得先设置ORACLE_SIDORCL12C。6.2 lsnrctl 查看监听状态接下来确认监听器正常lsnrctl status看到Listener Parameter File、Services Summary并且下面出现ORCL12C实例、状态是READY说明监听器已经把实例注册上了。如果实例状态是UNKNOWN通常是静态注册也能用但要注意修改 SID 后要重载监听器。用tnsping ORCL12C再跑一次能出现类似OK (30 msec)的输出说明从网络层面到监听器层面都通了这时候再用开发工具远程连一下基本不会再翻车。6.3 把监听端口固定下来很多环境里远程监控总在切换 IP或者本地有两个实例共用一台机器。默认动态端口注册会让连接不稳定我一般会在 listener.ora 里把监听器和实例的关系固定。listener.ora位于%ORACLE_HOME%\network\admin修改后加入静态注册SID_LIST_LISTENER (SID_LIST (SID_DESC (GLOBAL_DBNAME ORCL12C) (ORACLE_HOME D:/app/oracle/product/12.2.0/dbhome_1) (SID_NAME ORCL12C) ) )这段配置的含义是告诉监听器端口 1521 上实例名 ORCL12C 的数据库由哪个 Oracle Home 提供。修改后用lsnrctl reload生效。6.4 留一份部署记录每次装完 Oracle 12c我都会把响应文件、SID、密码、端口、ORACLE_HOME、服务启动方式记在一个 Markdown 文件里和安装介质放在一起。最难的往往不是安装本身而是三个月后没人记得当年装了什么参数服务器出问题就像面对一个黑匣子只能猜。这份记录就是后悔药。复盘下来上面这些坑我基本都踩过一遍把它们写出来希望帮你也少绕一次。本文还有配套的精品资源点击获取
返回列表