当前位置: 首页 > news >正文

Oracle 21c Windows环境彻底卸载与全新安装实战指南

1. 项目缘起:为什么Oracle 21c的卸载与安装值得单独成文?

如果你在Windows上折腾过Oracle数据库,尤其是从旧版本升级到21c,或者仅仅是重装,大概率都经历过那种“明明卸载了,新版本却死活装不上”的窘境。这不像安装一个普通软件,点几下“下一步”就能搞定。Oracle在Windows上的部署,更像是在系统里“安家落户”,它会把自己的服务、注册表、环境变量、文件目录深深地嵌入到操作系统的各个角落。一个不彻底的卸载,留下的“历史遗迹”足以让后续的安装过程崩溃。

我最近就因为一个测试环境的需要,在Windows Server 2019上反复折腾Oracle 21c。从21.3到21.8,从企业版到快捷版,踩遍了几乎所有的坑。网上教程很多,但要么是版本老旧,要么步骤跳跃,对于关键的风险点语焉不详。比如,直接删除Oracle主目录会导致什么后果?哪些服务必须手动清理?注册表里哪些键值动了会出问题?这些细节,没踩过坑的人不会写,而踩过坑的人又未必有精力系统总结。

所以,这篇内容就是基于我最近几次“血泪史”的完整复盘。它不仅仅是一个按部就班的操作手册,更是一份“避坑指南”和“原理剖析”。我会带你搞清楚Oracle安装器在背后都做了些什么,这样当它出错时,你才知道该从哪里下手解决。无论你是DBA新手,还是需要临时搭建Oracle环境的开发者,跟着这篇内容走,都能在Windows上干净利落地完成Oracle 21c的卸载与全新安装。

2. 卸载:一场比安装更考验耐心的“外科手术”

很多人认为卸载就是运行一下安装程序里的“卸载”选项,或者从控制面板里删除。对于Oracle,这仅仅是开始,甚至可能只是个错误的开始。一个彻底的卸载,需要你以“外科手术”般的精度,清理掉它在系统里留下的所有痕迹。

2.1 第一步:停止并删除所有Oracle相关服务

这是卸载前必须做的,否则文件可能被占用导致无法删除。不要依赖安装程序的自动停止功能,手动操作最可靠。

打开具有管理员权限的命令提示符(CMD)或PowerShell,依次执行以下命令:

net stop OracleOraDB21Home1TNSListener net stop OracleServiceORCL net stop OracleVssWriterORCL

这里的服务名可能因你的实例名和主目录名而异。OracleServiceORCL中的ORCL就是你的数据库实例名(SID)。OracleOraDB21Home1TNSListener中的OraDB21Home1是你的Oracle主目录名。你可以通过运行services.msc打开服务管理器,查找所有以“Oracle”开头的服务来确认。

停止服务后,我们使用sc命令来删除它们。删除服务需要其确切的内部服务名称,通常与显示名一致或类似。

sc delete OracleOraDB21Home1TNSListener sc delete OracleServiceORCL sc delete OracleVssWriterORCL

注意sc delete命令执行成功通常只返回一个简单的[SC] DeleteService SUCCESS提示,没有其他输出是正常的。如果提示“指定的服务未安装”,说明该服务可能已被其他方式删除,可忽略。

2.2 第二步:使用Oracle Universal Installer (OUI) 进行程序化卸载

这是官方推荐的卸载入口。找到你的Oracle安装目录,通常位于{ORACLE_BASE}\product\21.x.x\dbhome_1\deinstall下。运行其中的deinstall.bat批处理文件。

这个工具会引导你完成一个交互式的卸载过程,它会尝试自动查找并删除Oracle主目录、清单目录等。在运行前,请确保你备份了任何重要的数据库文件(如数据文件、控制文件、重做日志),因为此过程会删除数据库。

运行后,它会问你一系列问题,比如要删除的数据库列表、主目录路径等。如果你不确定,对于测试环境,可以按照其检测到的默认值进行。这个工具比单纯删除文件要聪明,它会处理一些依赖关系。

2.3 第三步:手动清理“顽固”残留文件

即使运行了deinstall.bat,一些目录和文件可能因为权限问题或工具本身的限制而残留。我们需要手动检查并清理。

  1. 删除Oracle安装目录:导航到你的ORACLE_BASE(例如C:\app\<你的用户名>)和ORACLE_HOME(例如C:\app\<你的用户名>\product\21.x.x\dbhome_1),删除整个文件夹。如果遇到“文件正在使用”的错误,重启电脑后再试,或者使用UnlockerProcess Explorer等工具查看哪个进程锁定了文件。
  2. 删除清单目录:默认位于C:\Program Files\Oracle\Inventory。这个目录记录了所有Oracle产品的安装信息,必须删除,否则新安装会读到旧的错误信息。
  3. 删除数据文件目录:如果你将数据文件存放在默认的C:\app\<你的用户名>\oradata或自定义位置,请一并删除,除非你想保留数据(但重装后通常需要重新导入)。

2.4 第四步:深度清扫注册表(高风险操作,务必谨慎)

这是最需要小心的一步。错误的注册表操作可能导致系统不稳定。强烈建议在修改前备份注册表或创建系统还原点。

  1. Win + R,输入regedit打开注册表编辑器。
  2. 删除以下键值(如果存在):
    • HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE: 删除整个ORACLE键。这里存放了全局的Oracle配置。
    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services: 删除所有以OracleOraOracleDBConsole开头的键。这与我们之前用sc delete删除的服务对应,但注册表里可能还有残留。
    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application: 删除所有以Oracle开头的键。这些是Oracle事件日志的注册项。
    • HKEY_CURRENT_USER\Software\Oracle: 删除整个ORACLE键(如果存在)。这里存放当前用户的Oracle配置。
    • HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INIHKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI: 删除其中与Oracle相关的驱动程序和数据源条目。

实操心得:在注册表中搜索“Oracle”是一个方法,但可能会搜到大量无关条目。我更推荐按照上述路径精准定位删除。对于Services下的项,如果不确定某个以Ora开头的服务是否属于Oracle,可以双击查看其ImagePath值,如果路径指向之前的Oracle安装目录,则可以安全删除。

2.5 第五步:清理环境变量

Oracle安装时会修改系统环境变量,如PATHORACLE_HOMEORACLE_SIDTNS_ADMIN等。

  1. 右键点击“此电脑” -> “属性” -> “高级系统设置” -> “环境变量”。
  2. 在“系统变量”中,查找并删除ORACLE_HOMEORACLE_SIDTNS_ADMIN等变量。
  3. 编辑PATH变量,删除其中所有指向旧Oracle安装目录的路径(例如C:\app\...\dbhome_1\bin)。

完成以上五步,你的系统才算从Oracle的“基因”层面被基本清理干净,为全新安装扫清了道路。

3. 安装前夜:容易被忽略的关键准备工作

很多人卸载完就急着运行安装程序,结果在安装中途报错,不得不回头重来。安装前的准备工作,决定了安装过程的顺利程度。

3.1 系统账户与权限:避免“权限不足”的噩梦

Oracle安装和运行最好在具有管理员权限的账户下进行,但这还不够。

  • 关闭用户账户控制(UAC):虽然不强制,但UAC有时会干扰安装程序向系统目录写入文件或修改注册表。对于服务器环境,建议在安装前将其调至最低或关闭。在控制面板的“用户账户”设置中可以调整。
  • 使用英文用户名:Oracle安装路径和某些配置对中文字符支持不友好,可能导致不可预见的错误。建议用于安装的操作系统用户账户名(尤其是用户目录C:\Users\<用户名>)使用纯英文。如果你的当前账户是中文,可以新建一个英文管理员账户进行安装。
  • 安装目录权限:确保你计划安装Oracle的磁盘分区(如C盘)有足够的写入权限。如果你打算安装到非系统盘(如D盘),确保该盘是NTFS格式,并且你的账户对该盘根目录有完全控制权。

3.2 软件依赖与系统组件:补齐运行环境

Oracle 21c for Windows依赖于一些特定的系统组件。

  • .NET Framework:Oracle Universal Installer和某些Oracle工具需要特定版本的.NET Framework(如4.7.2或更高)。Windows Server 2019/2022及Windows 10/11通常已内置,但最好通过“启用或关闭Windows功能”检查确认。
  • Visual C++ Redistributable:需要2013、2017等版本的运行库。Oracle安装包通常会自带并自动安装,但如果你的系统缺少或版本冲突,可能引发问题。可以提前从微软官网下载并安装最新的VC++运行库合集。
  • Windows PowerShell:确保PowerShell版本在5.1及以上。Oracle的配置助手可能会用到。

3.3 安装包与版本选择:从源头规避问题

  • 获取安装包:从Oracle官网下载“Oracle Database 21c for Microsoft Windows x64”的安装包。通常是一个压缩文件,解压后包含setup.exe。确保下载的版本(21.3.0, 21.8.0等)与你预期的保持一致。
  • 解压路径:将安装包解压到一个路径不含空格和中文的目录,例如D:\Install\Oracle21c。直接放在根目录或浅层英文路径下是最安全的选择。
  • 防病毒软件/防火墙:在安装过程中,暂时禁用实时防病毒扫描和防火墙。它们有时会拦截安装程序修改系统文件或创建服务,导致安装失败。安装完成后再重新启用。

3.4 规划安装结构:理解Oracle的目录逻辑

在点击“安装”之前,心里要对Oracle的目录结构有数,这有助于后续管理和故障排查。

  • ORACLE_BASE:这是所有Oracle软件产品的顶级目录。例如C:\app\<username>。它下面会有product(存放软件)、admin(存放管理文件)、oradata(存放数据库文件,可自定义位置)等子目录。
  • ORACLE_HOME:特定Oracle数据库软件的安装目录。位于ORACLE_BASE\product\21.x.x\dbhome_1。这是binnetworksqlplus等核心可执行文件和配置文件的所在地。
  • 数据文件位置:默认在ORACLE_BASE\oradata\<数据库名>强烈建议将数据文件(包括控制文件、重做日志、数据文件)放在一个独立的、空间充足的、性能较好的磁盘分区上,而不是系统盘。例如D:\oradata\ORCL。这在安装时的“数据库文件位置”步骤中可以指定。

做好这些准备,就像战前检查装备和地图,能极大提升安装一次成功的概率。

4. 安装实战:详解OUI的每一个关键步骤与选择

运行解压目录下的setup.exe,以管理员身份启动Oracle Universal Installer (OUI)。界面可能稍显陈旧,但步骤清晰。

4.1 配置安全更新与软件更新

第一个界面是关于安全更新和My Oracle Support(MOS)凭证的。对于个人学习或测试环境,可以直接取消勾选“我希望通过My Oracle Support接收安全更新”,这样就不会要求输入MOS账号。点击“下一步”时可能会有一个警告,选择“是”确认跳过即可。这个步骤不影响数据库核心功能的安装。

4.2 安装选项:创建数据库还是仅安装软件?

这里有三个选项:

  1. 创建和配置数据库(默认):一站式服务,安装软件后立即启动一个向导来创建一个新的数据库。这是最常用的选择,适合新手和大多数场景。
  2. 仅安装数据库软件:只安装Oracle二进制文件和工具,不创建数据库。之后你需要手动通过DBCA(Database Configuration Assistant)创建数据库。适合高级用户或需要特定定制时。
  3. 升级现有数据库:从较低版本(如19c, 12c)升级到21c。这需要复杂的前置检查和准备工作,不在本文讨论范围。

对于全新安装,我们选择“创建和配置数据库”

4.3 系统类:桌面类 vs 服务器类

这个选择决定了安装程序的自动化程度和配置粒度。

  • 桌面类:简化安装,适用于笔记本电脑或台式机。使用Windows内置的“Windows内置账户”进行数据库身份验证,管理简单。但某些高级配置选项不可用。
  • 服务器类:标准安装,适用于服务器环境。提供更全面的配置选项,包括选择数据库类型、配置存储、管理选项等。对于任何严肃的用途(开发、测试、生产),请务必选择“服务器类”

4.4 Oracle主目录与清单目录

  • Oracle主目录用户:选择“使用Windows内置账户”。在服务器类安装中,你也可以选择“创建新Windows用户”,但使用内置账户(如虚拟账户NT SERVICE\ORACLESERVICEORCL)是更现代和推荐的方式,权限由系统管理,更安全。
  • 软件位置
    • Oracle基目录:输入你规划的ORACLE_BASE,例如C:\app\oracle。注意,这个路径会用于存放所有Oracle相关文件。
    • 软件位置:OUI会自动在基目录下生成ORACLE_HOME路径,例如C:\app\oracle\product\21.x.x\dbhome_1。通常无需修改。
  • 清单目录:保持默认的C:\Program Files\Oracle\Inventory即可。这是OUI管理所有Oracle产品安装记录的地方。

4.5 数据库配置:定义你的数据库实例

这是核心步骤,决定了数据库的“身份”和能力。

  1. 全局数据库名与SID
    • 全局数据库名:通常格式为<数据库名>.<域名>,例如orcl.example.com。在单机测试环境中,域名部分可以忽略,直接写成orcl
    • SID(系统标识符):这是数据库实例的唯一标识,在同一台机器上必须唯一。通常与全局数据库名的第一部分相同,例如ORCL。SID将被用于服务名(OracleServiceORCL)和许多连接字符串中。
  2. 配置类型
    • 单实例数据库:最常见的类型,一个数据库实例管理一套数据库文件。
    • RAC(真正应用集群)数据库:多实例共享一套存储,用于高可用和负载均衡。需要额外的集群软件和存储配置。 选择“单实例数据库”。
  3. 存储类型
    • 文件系统:数据库文件(控制文件、数据文件、重做日志)存放在操作系统的普通目录中。对于Windows环境,这是最简单直接的选择
    • 自动存储管理(ASM):Oracle提供的专门卷管理器和文件系统,能简化存储管理并提升性能,但配置更复杂。通常用于Linux/Unix环境或大型生产系统。 选择“文件系统”。
  4. 数据库文件位置这是性能和管理的关键。不要使用默认的ORACLE_BASE\oradata强烈建议指定一个独立的、非系统盘的路径,例如D:\oradata。这样可以将IO压力从系统盘分离,也便于备份和迁移。OUI会自动在此路径下创建以全局数据库名命名的子目录(如D:\oradata\ORCL)来存放文件。
  5. 快速恢复区(Fast Recovery Area):用于存放备份和恢复相关文件(归档日志、RMAN备份等)。可以启用并指定一个与数据文件不同的位置,例如E:\fast_recovery_area。大小根据你的备份策略设定,测试环境可以设几个GB。
  6. 数据库字符集:务必重视!一旦创建,后期更改非常麻烦且有风险。
    • 默认值:OUI会根据操作系统区域设置推荐一个。对于中文Windows,通常是ZHS16GBKAL32UTF8
    • AL32UTF8(Unicode UTF-8):这是当前最推荐的选择,除非你有非常特殊的兼容性要求。UTF-8字符集支持全球所有语言字符,是国际化和未来兼容性的标准。对于需要处理多语言或不确定未来需求的环境,选它没错。
    • ZHS16GBK:传统的中文字符集,对于纯中文环境且遗留系统兼容性要求高时可选。但它不支持某些特殊符号和生僻字。

4.6 管理选项与数据库凭据

  • 企业管理器(EM)Express:这是一个轻量级的基于Web的数据库管理工具。建议勾选“配置企业管理器(EM)数据库Express”)。它会自动配置,你可以通过https://<主机名>:5500/em来访问。比古老的OEM(Oracle Enterprise Manager)简洁易用。
  • 数据库管理口令:这里设置的是数据库内置管理账户(SYS,SYSTEM,PDBADMIN等)的密码。Oracle 21c强制要求使用符合复杂度的口令。务必设置一个强密码并牢记。你可以选择“所有账户使用同一管理口令”以简化。

4.7 先决条件检查与安装概要

OUI会运行一个先决条件检查,验证系统环境(物理内存、虚拟内存、临时空间、操作系统版本、补丁等)。如果所有检查都通过(显示绿色对勾),点击“下一步”。

如果有警告(黄色感叹号)或失败(红色叉号),必须点开查看详情。常见的警告可能包括“物理内存不足”(测试环境可忽略)或“缺少某个Windows补丁”。对于失败项,必须按照提示解决,否则安装无法继续。

最后,安装概要页面会列出你所有的选择。仔细核对一遍,特别是全局数据库名、SID、文件位置和字符集。确认无误后,点击“安装”。

此时,安装程序开始复制文件、链接可执行文件、创建数据库。这个过程可能需要20分钟到1小时,取决于硬件性能。期间可能会弹出命令行窗口执行脚本,不要手动关闭它们。

安装完成后,OUI会显示一个包含重要信息的完成页面,务必记录或截图保存:

  • 数据库控制台的URL(EM Express)。
  • 数据库实例的名称(SID)。
  • SYSSYSTEM等账户的解锁状态。

点击“关闭”,Oracle数据库软件安装和实例创建就完成了。

5. 安装后配置与基础验证:确保一切就绪

安装程序结束,并不意味着马上就能高枕无忧。我们需要进行一些基本的配置和验证,确保数据库真正可用。

5.1 验证服务与连接

  1. 检查服务:再次打开services.msc,你应该能看到至少两个新的Oracle服务正在运行:
    • OracleServiceORCL(名称随SID变化):这是数据库实例的核心服务。必须处于“正在运行”状态。
    • OracleOraDB21Home1TNSListener:这是监听器服务,负责接收客户端连接请求。也必须处于“正在运行”状态。
  2. 使用SQL*Plus本地连接:这是最直接的验证方式。
    • 打开命令提示符(CMD)。
    • 输入sqlplus / as sysdba。这是操作系统认证方式,以SYSDBA权限登录,不需要密码(前提是你的当前Windows用户在ORA_DBA组中,安装程序通常会自动添加)。
    • 如果成功,你会看到SQL>提示符。输入SELECT name, open_mode FROM v$database;应该能返回你的数据库名和READ WRITE状态。输入exit退出。
  3. 使用SQL*Plus远程连接(通过监听器)
    • 在CMD中输入sqlplus system/你的密码@localhost:1521/ORCL。这里使用了完整的连接字符串:用户名/密码@主机:端口/服务名。
    • 如果连接成功,说明监听器工作正常,网络配置正确。

5.2 配置网络(tnsnames.ora 和 listener.ora)

虽然安装程序配置了基本的监听器,但你可能需要为其他客户端或远程连接进行配置。

  • listener.ora:位于ORACLE_HOME\network\admin。它定义了监听器监听的地址、端口和服务。
    • 默认配置通常足够本地使用。如果你需要从其他机器连接,确保(HOST = <主机名或IP>)设置正确(localhost127.0.0.1仅限本机)。
  • tnsnames.ora:同样位于ORACLE_HOME\network\admin。它定义了客户端使用的连接描述符(别名)。
    • 你可以添加一个条目,例如:
      ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL) # 或 (SID = ORCL) ) )
    • 配置后,就可以用sqlplus system/密码@ORCL这种简短的方式连接了。

修改这两个文件后,需要重启监听器服务:lsnrctl stop然后lsnrctl start(在ORACLE_HOME\bin目录下运行,或确保该目录在PATH中)。

5.3 环境变量配置(可选但推荐)

为了方便地在任何命令行窗口使用sqlplusrmanexpdp等工具,可以将ORACLE_HOME\bin添加到系统PATH变量中。同时,也可以设置ORACLE_SID变量,这样连接时就不需要指定实例名。

  1. 系统环境变量中,新建ORACLE_SID,值为你的数据库SID,例如ORCL
  2. 编辑PATH变量,在末尾添加;%ORACLE_HOME%\bin(假设ORACLE_HOME已定义)或直接写全路径;C:\app\oracle\product\21.x.x\dbhome_1\bin

设置完成后,打开新的CMD窗口,输入echo %ORACLE_SID%sqlplus /nolog测试是否生效。

5.4 访问EM Express

打开浏览器,访问安装完成时提示的URL,通常是https://localhost:5500/em。使用SYSTEM账户和你设置的密码登录。如果遇到证书警告(因为使用的是自签名证书),选择“继续前往”即可。成功登录后,你可以在图形界面下进行基本的数据库监控和管理操作。

至此,一个全新的、干净的Oracle 21c数据库已经在你的Windows系统上准备就绪。从彻底卸载到成功安装并验证,这个过程虽然步骤繁多,但每一步都有其必要性。理解每一步背后的“为什么”,能让你在遇到问题时不再茫然,而是能够精准地定位和解决。记住,对于Oracle,“干净”是顺利安装的一半,而“规划”是成功运行的开始。

http://www.cnnetsun.cn/news/3840499.html

相关文章:

  • Zemax光学设计实战:从核心工作流到高阶应用与避坑指南
  • Go定时任务库robfig/cron/v3深度解析:从原理到生产实践
  • GPU架构演进与实战:从并行计算原理到AI大模型性能优化
  • 从零构建OpenClaw Docker镜像:AI项目环境一致性与高效部署实践
  • 别踩2026年视频转文字ai选工具误区 我实测一周整理的实操选型经验
  • Cocos Creator复刻Flappy Bird:从零掌握2D游戏开发核心模块
  • 简单三步让老款Mac焕发新生:OpenCore Legacy Patcher完整指南
  • Windows 10自带截屏录屏工具全解析:从基础操作到高阶技巧
  • 基于SketchUp与Enscape技术的室内设计应用分析
  • STM32 ADC实战指南:从原理到高精度数据采集与滤波
  • VMware Ubuntu虚拟机屏幕分辨率问题:安装open-vm-tools驱动全攻略
  • 131、LLC谐振变换器的数字控制基础
  • AI NPS分析落地难?92%企业踩中的5个致命陷阱及2024最新避坑清单
  • 选择排序算法详解:从C语言实现到时间复杂度分析
  • OpenCV C++基于knn模型的掩模字符识别(OCR)
  • 为什么你的AI错题系统总在“重复纠错”?揭秘3类被92%学校忽略的语义漂移陷阱
  • hactool完整指南:掌握Nintendo Switch文件解密的终极工具
  • 深入解析白加黑攻击:从DLL劫持原理到实战检测防御
  • 需要找到:那个牵一发而动全身的关键问题。
  • 高温蒸汽洗地机选购指南:从原理到实测,告别顽固污渍
  • 单端反激DCDC电路实验报告+simulink仿真123(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • TTL脚本全解析:从硬件串口救砖到软件缓存优化实战
  • UE4开放世界开发:World Composition系统实战与性能优化指南
  • 高端陶瓷十大品牌解读:金丝玉玛,瓷砖界中的奢侈品
  • 几何光学三大基石:从费马原理到成像本质的工程实践指南
  • 三大ADC架构深度对比:Flash、SAR与Σ-Δ的选型实战指南
  • STM32 ADC+DMA实时数据采集配置与FFT预处理实战
  • 数据分析工具选型指南:主流工具横评与实战技巧
  • 芯片价格飙升,三星旗舰机或弃 1000 万像素长焦镜头削减成本
  • 从ChatGPT到Qwen,所有大模型越狱路径已被测绘:1张防御拓扑图+6个零日补丁部署脚本