news 2026/9/18 7:38:09

Windows上Oracle 21C安装全攻略:从环境准备到ORA-12514排查

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Windows上Oracle 21C安装全攻略:从环境准备到ORA-12514排查

1. 环境准备与安装规划

1.1 版本选择与软硬件门槛

在Windows上装Oracle 21C,很多人一上来就踩坑,其实大部分问题都出在没搞清楚“这个版本到底适不适合你”。

Oracle 21C属于创新版本(Innovation Release),不是长期支持版本。它的定位更偏尝鲜和功能验证,官方对21C的标准支持周期比较短,生产环境一般不建议主力跑在21C上,但作为开发机、学习环境、做demo演示,21C反而挺合适——它内置了很多新特性,比如区块链表、原生JSON、自动内存管理优化这些,在Windows上体验一遍成本很低。

硬件门槛建议别再拿十年前的配置硬撑。Windows上安装Oracle 21C企业版,官方要求稍宽松,但实际跑起来,我建议至少4核CPU、8GB内存、20GB可用磁盘。装的时候你会发现,Oracle安装程序会做前置检查,内存不够虽然也能继续,但后面启动实例、跑监听、占内存这几个环节会非常难受。我在8GB内存的笔记本上装过,空闲时内存剩3GB多,一旦启动数据库,内存直接吃掉1.5GB左右,如果再开个PL/SQL Developer和浏览器,基本快到极限。有条件建议16GB内存,体验完全不是一个级别。

磁盘方面,Oracle 21C的安装文件解压后就有2GB多,安装完数据库主目录(ORACLE_HOME)加上数据文件,轻松超过10GB。如果你选择的是企业版,尽量留足30GB再动手。很多人在安装中途报“磁盘空间不足”然后卡死,就是因为只留了不到15GB。

1.2 下载Oracle 21C Windows版的关键细节

下载Oracle 21C Windows版,要去Oracle官网的Software Delivery Cloud(OTN)页面,这里需要注册并登录Oracle账号。不需要付费,但账号是必须的,很多人卡在这一步,以为要授权费,其实个人学习用途完全免费。

下载时注意选对平台和版本。关键选项是:

  • 平台:Microsoft Windows x64(64位)
  • 版本:Oracle Database 21C(21.3)for Microsoft Windows x64

下载下来的文件一般是ZIP压缩包,名称类似WINDOWS.X64_213000_db_home.zip,大小约2GB。这里有个容易忽略的点:下载完成后务必校验文件完整性。Oracle官方页面会提供对应文件的校验值,Windows下可以用PowerShell的Get-FileHash命令,或者7-Zip自带的校验功能。我曾经图省事跳过这一步,结果解压到一半报“文件损坏”,重新下载花了大半天,血的教训。

解压路径也要提前规划好。Oracle的安装程序要求安装路径中不能包含中文和空格,建议放在纯英文目录,比如D:\oracle21c。有人说“我放中文目录也能装”,那是运气好,碰上游戏规则没触发。实操下来,Oracle在Windows上的路径解析对中文兼容一直不稳定,不要赌这个小概率。

1.3 安装前的Windows系统准备

正式安装前,有几步准备工作建议先做完,能省大量排查时间。

第一,关闭UAC(用户账户控制)或者至少确保以管理员身份运行安装程序。不关UAC也能装,但安装过程中弹出一堆授权提示,稍不留神点“否”就直接中断,装到一半失败后再回头处理,非常麻烦。我在Windows 10和Windows 11上都试过,最稳的方式是右键setup.exe选择“以管理员身份运行”,UAC弹窗时选“是”。如果你想让安装更顺畅,可以临时把UAC拉到最低,装完再调回来,但非必要不建议动UAC全局设置。

第二,提前确认防火墙不会拦Oracle服务。Oracle安装完成后,监听器默认监听1521端口,Windows防火墙第一次启动时会弹窗询问是否允许。如果点了取消,后面远程连接基本必然报错。更稳妥的办法是安装前先手动放行1521端口的入站规则:控制面板 → Windows Defender防火墙 → 高级设置 → 入站规则 → 新建规则 → 端口 → TCP → 填写1521 → 允许连接。装完数据库后再验证一次,比出问题再排查省力得多。

第三,系统时间要准。这个点看着无关紧要,但Oracle的很多内部校验依赖时间戳,系统时间偏差过大可能会导致安装脚本执行异常。我遇到过一台测试机时间快了3小时,装21C时在线校验一直失败,后来同步了系统时间才恢复正常。

2. 安装过程核心步骤详解

2.1 图形化安装流程的完整走读

启动安装程序后,Oracle 21C的图形化安装界面和19C差别不大,但有几个步骤值得专门说。

第一步是“配置选项”。这里会出现两个分支:一个是“创建并配置单实例数据库”,一个是“仅设置软件”。第一次安装、想快速跑起来,直接选“创建并配置单实例数据库”;如果你只是想在现有机器上装一个Oracle客户端或者纯软件环境,那选后者。这个选择后面不可逆,选错了只能卸载重来。

第二步是“系统类”,要求选择“桌面类”还是“服务器类”。这里很多人就直接默认了,但区别其实很大。

  • 桌面类:适合本地开发,默认配置比较省资源,数据量小,适合学习验证。
  • 服务器类:提供更完整的配置选项,比如ASM、RAC相关组件的预配置,内存参数可以自定义调整。

我的建议是:如果机器配置足够(16GB内存以上),直接选服务器类。桌面类虽然省事,但后续要调整SGA、PGA、字符集这些核心参数时,自由度低不少。我自己第一次装选了桌面类,后来想自定义PDB的创建方式,发现很多选项是灰的,只能重启DBCA重新配置,反而更折腾。

第三步是“Oracle主目录位置”。默认会指向C:\app\用户名\product\21c\dbhome_1。建议改到数据盘,比如D:\app\oracle\product\21c\dbhome_1。原因很简单:C盘分区空间通常紧张,Oracle日志、告警文件越积越多,放到数据盘可避免系统盘被拖垮。

第四步是“数据库标识符”。默认的全局数据库名是orcl,可改成自定义的名字,但要注意:全局数据库名和SID在21C里默认是一样的,改的时候保持小写、不超过8个字符。21C默认启用多租户架构(CDB/PDB),所以这里还会要求填PDB名字,默认是orclpdb。这里强烈建议把PDB名称记住,后面连接数据库、配置tnsnames.ora、填SERVICE_NAME,全都会用到。很多人ORA-12514的根源,就是连接时把PDB名字写错了或者压根不知道有这回事。

第五步是“管理口令”。这个口令用于SYS、SYSTEM等超级管理员账户,Oracle要求至少8位、包含大写字母、小写字母和数字。设置时注意不要包含特殊字符如&$#,虽然在安装界面能通过,但后续在命令行、脚本、CI/CD配置里这些特殊字符会被解析器拦截,引发各种玄学问题。

全部配置完成后,安装程序会进入“先决条件检查”。这一步会列出所有不满足的项,常见的有内存不足、磁盘空间不足、Windows版本不兼容等。遇到红叉不要直接点“忽略”,绝大多数情况下解决掉再继续才是正解。我当时遇到的是“物理内存不足”警告,虽然能强制继续,但装完后数据库起停都慢,查日志才发现是SGA把内存拖垮了。

2.2 安装中的关键点击与等待信号

当安装进度走到大约80%时,会出现“数据库配置助手(DBCA)”的阶段。这个阶段是创建数据库实例的关键步骤,通常会卡住一会儿。很多人这时候以为死机了,自乱阵脚去强制结束进程,结果整个安装就废了。

DBCA阶段正常表现是:进度条在某个百分比停留几分钟,日志文件持续增长,数据库在后台创建数据文件、创建数据字典、编译系统包,这是最耗时的一环。如果半小时以上毫无动静,那才需要考虑是不是异常了。可以打开DBCA日志目录(默认在%TEMP%下)查看具体进度,尤其关注是否有ORA-错误。

安装完成后,安装程序会提示“完成”,并显示数据库企业管理器(EM Express)的访问地址,默认是https://localhost:5500/em。这个地址先记下来,后面验证数据库是否正常很常用。

2.3 安装完成后的第一轮验证

装完不是万事大吉,第一时间做三件事验证环境是否健康:

第一,检查Windows服务。按Win + R输入services.msc回车,找到OracleServiceORCL(服务名随你的SID变化)和OracleOraDB21Home1TNSListener,确认两个服务状态都是“正在运行”。如果服务没有自动启动,右键手动启动,然后检查Windows事件查看器里的错误记录。

第二,在命令行手工连接一次数据库:

sqlplus sys/你的密码@localhost:1521/orcl as sysdba

如果这里能连上,说明实例和监听的基本链路是通的。如果报ORA-01034或ORA-27101,多半是实例没起来,需要手动启动:

startup;

如果报ORA-12541,说明监听没起来:

lsnrctl start

第三,验证PDB状态。21C默认创建的PDB可能是MOUNT状态而非OPEN,这是很多新手没留意的地方。以sysdba身份登录CDB后执行:

SELECT name, open_mode FROM v$pdbs;

如果显示MOUNTED,需要执行:

ALTER PLUGGABLE DATABASE ORCLPDB OPEN;

这是很重要的一步,因为很多开发工具、PL/SQL Developer连接的其实是PDB,而不是CDB。PDB不打开,连接就会报各种稀奇古怪的错误,最常见的就是ORA-12514。

3. 环境变量配置实操

3.1 为什么Windows上必须配环境变量

装完Oracle,你会发现命令行里直接敲sqlplus大概率会提示“不是内部或外部命令”。原因很简单:Oracle的可执行文件(sqlplus.exe、expdp.exe、impdp.exe、rman.exe等)都在ORACLE_HOME的bin目录下,Windows不会自动去那个目录找命令,你得把路径告诉系统。

环境变量就是干这个用的。配置好ORACLE_HOME和PATH后,任何目录下敲sqlplus都能识别,开发工具(比如PL/SQL Developer、Navicat、DBeaver)也能自动读取到Oracle客户端的信息。

每次安装完Oracle后手配环境变量这个习惯,能直接避免掉一大半的“找不到命令”类问题。

3.2 ORACLE_HOME与PATH的配置步骤

配置环境变量的流程,以Windows 10/11为例:

  1. 右键“此电脑”→“属性”→“高级系统设置”→“环境变量”。
  2. 在“系统变量”区域点击“新建”,变量名填ORACLE_HOME,变量值填你的Oracle主目录路径,例如:
    ORACLE_HOME = D:\app\oracle\product\21c\dbhome_1
    注意,这个路径里面不能有反斜杠结尾,也不能加引号。填错路径会导致后面所有基于ORACLE_HOME的工具全部失效。
  3. 在系统变量里找到Path,双击打开,点击“新建”,添加一行:
    %ORACLE_HOME%\bin
    一定要加在Path列表里,而不是覆盖原来的Path。见过有人图省事把原有Path删了只留Oracle,结果Windows很多系统命令都失效了,非常不建议。
  4. 点击确定保存,然后打开一个新的命令行窗口(旧的窗口不会刷新新环境变量,必须重开会话)。

验证是否配置成功:

echo %ORACLE_HOME%

能正确输出ORACLE_HOME路径,再执行:

where sqlplus

如果能定位到D:\app\oracle\product\21c\dbhome_1\bin\sqlplus.exe,就说明配置成功。

3.3 其他容易被忽略的环境变量

除了ORACLE_HOME和Path,还有几个变量在特定场景下非常有用:

TNS_ADMIN:这个变量指向tnsnames.ora和listener.ora所在目录。默认情况下,Oracle会在ORACLE_HOME的network/admin目录下找这两个文件。但如果你有多个Oracle客户端版本共存,或者想把网络配置文件抽离出来统一管理,就设置TNS_ADMIN指向自定义目录,例如D:\app\oracle\network\admin。例如安装Oracle 21C的同时装了旧版Oracle客户端,两个版本的tnsnames.ora互相干扰,用TNS_ADMIN就能明确指定用哪一份。

ORACLE_SID:这个变量表示默认连接的数据库实例名。在Windows上,如果你只有一个实例,且日常都用sqlplus / as sysdba连接本地数据库,可以设置成你的SID,比如ORCL。但如果你同时操作多个实例,建议不要设置这个变量,避免连接时搞混,我倾向于保持为空,需要时在sqlplus里用@实例名显式指定,或者用连接串。

NLS_LANG:这个变量决定Oracle客户端使用的字符集。Windows中文环境下如果不设置,很常见会显示乱码,尤其是在SQL*Plus里查询中文数据时。建议设置为:

NLS_LANG = SIMPLIFIED CHINESE_CHINA.AL32UTF8

注意,这里的AL32UTF8要和数据库实际字符集匹配。如果数据库是ZHS16GBK,而客户端用AL32UTF8,依然会乱码。查询数据库字符集的方法:

SELECT value FROM nls_database_parameters WHERE parameter='NLS_CHARACTERSET';

3.4 环境变量配置失败的典型表现

配置完环境变量后,如果还是找不到sqlplus,先看是不是用了旧命令行窗口。Windows的环境变量在会话启动时被写入,已经打开的命令行窗口不会自动更新,必须关掉重开。还有一个隐藏坑:修改系统变量后需要重启一次文件资源管理器,否则某些IDE(比如VS Code的集成终端)可能读取不到最新的环境变量。

如果echo %ORACLE_HOME%能输出了,但where sqlplus却找不到,检查一下Path变量里是不是只有ORACLE_HOME而没有展开%ORACLE_HOME%\bin。变量嵌套引用时,如果顺序有问题,系统解析会失效。最简单的测试方法是在命令行里执行:

echo %ORACLE_HOME%\bin

如果输出正确路径,再执行:

%ORACLE_HOME%\bin\sqlplus /nolog

手动用完整路径启动,确认bin目录下的sqlplus能运行。如果这一步也报“无法启动此程序,因为计算机中丢失VCRUNTIME140.dll”,说明缺少Visual C++运行库,去微软官网装VC++ 2015-2022运行库即可。

4. ORA-12514错误深度排查

4.1 错误含义与常见场景

ORA-12514在Windows上装完Oracle 21C后可能是出现频率最高的错误,完整信息是:

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

翻译成人话:客户端问监听器“我要连某个服务”,监听器说“我没听过这个服务”。

注意这个错误和ORA-12541(监听器没有启动)、ORA-12560(协议适配器错误)不一样,方向完全不同。ORA-12514说明监听器是活的,但它的“通讯录”里没有你要找的服务名。类比一下:你打电话到前台,前台接通了(监听器活着),但你说“找张三”,前台说“我们公司没这个人”——这就是ORA-12514。

最常见的报错场景有三种:

  • 在另一台机器上通过PL/SQL Developer远程连接时,填写的服务名不对。
  • 本地sqlplus连接时,连接串里写的SERVICE_NAME和实际注册到监听器的服务名不一致。
  • 连接的是PDB,但服务名填写却被写成了CDB的名字或写成SID。

这三种场景对应三种不同的排查路径。

4.2 第一步:确认监听器到底知道了哪些服务

遇到ORA-12514,首先不要改配置,先看监听器当前知道哪些服务。在命令行执行:

lsnrctl status

输出结果中会有一段类似于:

Services Summary... Service "orcl" has 2 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... Service "orclpdb" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service...

这里的关键信息是Service "xxx"。你的连接串里填写的服务名必须和这里列出的完全一致(区分大小写)。如果你要连PDB,就必须在列表里看到对应的PDB服务名;如果你看到服务列表中压根没有你要连的名字,要么是数据库未注册到监听,要么是监听配置有问题。

如果lsnrctl status里只有orcl,没有orclpdb,优先执行数据库动态注册:

sqlplus / as sysdba ALTER SYSTEM REGISTER;

然后再执行lsnrctl status重新查看。动态注册通常几秒内生效,如果还是没有,检查数据库的service_names参数:

SHOW PARAMETER service_names;

如果这个参数的值不对,会直接导致注册失败。可以用以下语句修正:

ALTER SYSTEM SET service_names='orcl,orclpdb' SCOPE=BOTH;

4.3 第二步:检查tnsnames.ora里的连接描述符

如果你的连接方式是通过TNS别名(比如PL/SQL Developer里填一个名字),那问题很可能出在tnsnames.ora里。这个文件默认位置在:

%ORACLE_HOME%\network\admin\tnsnames.ora

用记事本打开后,典型的条目长这样:

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

这里的SERVICE_NAME就必须和监听器里注册的服务名一模一样。连接PDB时,要改成:

ORCLPDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orclpdb) ) )

很多人直接复制网上的模板,没留意HOST一项,如果从别的机器拷贝的tnsnames.ora,HOST可能还写着别人的主机名,本机解析不了,就又会绕回ORA-12514的坑。

如果你是用PL/SQL Developer连接,不需要修改tnsnames.ora,直接在登录界面填连接串也可以,在“Database”一栏填入localhost:1521/orclpdb,这是直连服务名的方式,也能绕开tnsnames.ora配置错误的问题。

4.4 第三步:确认listener.ora没有被改坏

Windows下Oracle安装完成后,默认的listener.ora往往很简单,甚至可以不写任何监听条目,靠默认监听配置(LISTENER)自动监听1521端口。但有些教程会让人手改listener.ora,比如加上:

SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orcl) (ORACLE_HOME = D:\app\oracle\product\21c\dbhome_1) (SID_NAME = orcl) ) )

这种静态注册方式本身没问题,但如果ORACLE_HOME路径写错,或者GLOBAL_DBNAME和实际的service_names不一致,监听器就会陷入混乱,导致动态注册和静态注册相互覆盖,反而更容易出现ORA-12514。

我的建议是:在Windows单机开发环境,不要手动改listener.ora,让它保持默认,靠动态注册就够了。如果你改过,恢复出厂设置的方法很简单,直接删掉listener.ora文件内容里的自定义SID_LIST部分,然后重启监听:

lsnrctl stop lsnrctl start

如果还不行,可以考虑备份后删除listener.ora,重新用netca配置向导创建一份新的监听配置。

4.5 第四步:防火墙与Host解析的干扰

Windows防火墙拦掉1521端口,远程连接会报ORA-12541或ORA-12514。很多人会困惑:“防火墙和ORA-12514有啥关系?” 实际场景下,防火墙丢包有时表现为连接超时(ORA-12535),但某些中间网络设备会返回一个RESET包,导致Oracle客户端解析成“监听器不知道服务”,表达为ORA-12514。这种伪性报错最坑人。

排查方法很简单:先在本机用sqlplus通过localhost连接一次,如果能通,再用本机IP连接,最后从远程客户端连接。哪一步失败,问题就定位在哪一层:

  • localhost能连,127.0.0.1能连,但本机IP连不上 → 防火墙问题或监听地址绑定问题。
  • 本机能连,远程不能 → 防火墙问题为主。
  • 都连不上 → 监听器的HOST配置问题,检查listener.ora里的HOST是不是写成了不存在的IP。

另外,Windows的hosts文件也可能影响。如果在tnsnames.ora里HOST写的是主机名(比如DESKTOP-ABC123),而hosts文件里没有映射到127.0.0.1或局域网IP,解析失败也可能表现成连接异常。修改hosts文件前先备份:

127.0.0.1 DESKTOP-ABC123

4.6 常见错误速查表

错误代码含义排查方向
ORA-12514监听器未知服务服务名是否匹配、动态注册是否成功
ORA-12541监听器未启动启动监听、检查1521端口占用
ORA-12560协议适配器错误Oracle服务是否启动、环境变量是否正确
ORA-01034ORACLE不可用实例是否启动、监听是否启动
ORA-01017用户名/密码无效账号口令错误,重置密码
ORA-28040无匹配认证协议客户端版本太老,升级客户端或修改sqlnet.ora

这张表建议截图或存到备忘录里,排查问题先对着看,能省不少时间。

5. 安装部署后的调优与避坑经验

5.1 内存参数调整与Windows兼容性

Oracle 21C在Windows上默认的SGA和PGA大小是自动管理的,但自动不等于最优。开发机上如果同时跑着Docker、IDEA、浏览器,Oracle自动占用的内存可能偏大,导致机器卡顿。

实际工作中,我习惯手动限制内存:

sqlplus / as sysdba ALTER SYSTEM SET sga_max_size=1024M SCOPE=SPFILE; ALTER SYSTEM SET sga_target=1024M SCOPE=SPFILE; ALTER SYSTEM SET pga_aggregate_target=512M SCOPE=SPFILE;

然后重启数据库:

sqlplus / as sysdba shutdown immediate; startup;

这里要注意一个点:sga_max_size必须大于或等于sga_target,否则会报ORA-02097或ORA-00843。改动内存参数后,如果不重启数据库,参数不会完全生效,尤其在Windows平台上,修改SPFILE后必须重启实例。

另外,Windows上的Oracle进程和Linux不太一样,它是模拟进程的模式,每个后台进程都是一个本地线程。所以如果在任务管理器里看到一堆oracle.exe进程,不要奇怪,这不是出问题了,这是Oracle在Windows下的正常形态。

5.2 彻底解决PL/SQL Developer连接时的常见问题

PL/SQL Developer是Oracle开发者的常用工具,但很多人在连接21C时也碰到过ORA-12514。大部分情况是因为PL/SQL Developer读的不是Oracle 21C的tnsnames.ora,而是读到了旧版本客户端的配置文件。

解决办法有两种:

第一种,在PL/SQL Developer安装目录下的PreferencesOracle → 连接里,指定“Oracle主目录”为21C的主目录,然后确认tnsnames.ora路径正确。

第二种,干脆绕过TNS别名,在PL/SQL Developer的登录界面上,Database一栏直接输入:

localhost:1521/orclpdb

这种方式不经过tnsnames.ora解析,直接向监听器请求服务名,排查配置问题更快。

如果你同时装了多个Oracle客户端版本(这是很常见的场景),建议统一使用TNS_ADMIN环境变量指向同一个tnsnames.ora目录,避免每个工具各读各的配置,互相打架。这个变量配置好之后,PL/SQL Developer、SQL Developer、DBeaver都能读取到同一份连接配置。

5.3 系统服务自启动与异常恢复

Oracle在Windows上安装时,默认会把OracleService和OracleListener服务设置为“自动”启动。但实际使用中你会发现,开机后有时候数据库服务起来了,监听器却没起来,或者反过来,导致明明服务都显示“正在运行”,连接却报错。

排查这类问题,我习惯用一个固定套路:

net start OracleServiceORCL lsnrctl start sqlplus / as sysdba startup;

如果OracleService服务已经启动,但实例没启动,需要以sysdba身份手工startup。这里注意,在Windows上,Oracle实例不会自动从SPFILE读取参数启动,因为实例还没创建,它需要先读取初始化参数文件。如果你改了SPFILE后重启失败,可以用:

startup pfile='D:\app\oracle\product\21c\dbhome_1\database\initORCL.ora'

然后再想办法恢复SPFILE。

5.4 卸载与重装时的清理要点

遇到装一半失败、配置改坏、字符集选错等需要重装的情况,Windows上的Oracle卸载极其痛苦。直接在“控制面板→程序和功能”里卸载,往往卸载不干净,留给你的是一堆残留在注册表和服务列表里的内容。

如果你确定要卸载重装,按这个顺序操作:

  1. 停止所有Oracle相关服务:net stop OracleServiceORCLlsnrctl stop
  2. 在“程序和功能”里卸载Oracle主产品。
  3. 删除磁盘上的Oracle目录和ORACLE_HOME目录。
  4. 清理注册表:regedit,删除HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE(如果还残留)。
  5. 清理Windows服务注册:需要用命令行工具删除残留服务条目,否则服务列表里一堆灰掉的Oracle服务看着很碍眼。

注册表操作前建议先备份或导出注册表文件,改错了系统层面容易出大问题。我一般习惯在虚拟机里先试装一遍,确认配置方案没问题,再动真实环境,这样能大幅降低风险。

5.5 安装过程中常见的其他非ORA报错

除了ORA-12514,Windows上装21C还可能遇到下面这些幺蛾子:

无法启动此程序,因为计算机中丢失MSVCR120.dll:这是缺少Visual C++ 2013运行库,去微软官网下载安装即可。Oracle 21C的依赖项比较多,建议一次性把VC++ 2015-2022运行库全装齐,省得一个接一个地补。

安装程序卡在2%或者40%:多半是杀毒软件在后台扫描Oracle的文件。装数据库前建议临时退出360、Windows Defender实时保护这类软件,装完再恢复,别让杀毒软件干扰安装流程。

磁盘空间明明够,却提示空间不足:检查一下环境变量TEMP和TMP指向的盘符是否有空间。Oracle安装过程中的临时文件默认放在这个目录,如果TEMP在C盘而C盘快满了,就会报空间不足,即使D盘有大量空闲。

写在后面

这套流程走下来,Oracle 21C在Windows上从下载到配置环境变量、到定位ORA-12514,链路基本就完整了。我个人在实际操作中的体会是:Oracle在Windows上的安装难度本身不高,绝大多数问题都集中在“服务名不匹配”和“环境变量不对”这两个点上。把它们吃透,就解决了一大半的坑。

最后再分享一个小技巧:安装成功后,第一时间用lsnrctl status把当前的服务列表和监听状态截个图保存下来,这在后续排查问题时特别有用。另外,把连接PDB的完整命令记录在本地笔记里:

sqlplus scott/密码@localhost:1521/orclpdb

以后无论换机器还是重建环境,照着这条命令验证,几分钟就能确认数据库是否可用。Oracle 21C的新特性确实不少,但没有一个能帮你绕开这些基础环节的坑,先把这些基础功做扎实,后面玩得才顺手。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/18 7:36:38

Unity反射探针混合效果调控:从采样原理到多探针权重优化实践

1. 先搞清楚反射探针的“采样”到底采的是什么很多人在场景里堆了几十个反射探针之后,发现效果依然奇怪:有的地方亮得发白,有的地方反光完全错误,还有的地方移动一小段距离,金属表面突然“啪”一下换了反射内容。我把这…

作者头像 李华
网站建设 2026/9/18 7:36:03

Linux入门指南:从虚拟机搭建到终端命令实战

1. Linux系统初探:从零开始的数字世界漫步第一次接触Linux时,我被终端里闪烁的光标和神秘的命令行震撼了。这个诞生于1991年的开源操作系统,如今已渗透到我们数字生活的每个角落——从智能手机到超级计算机,从智能家电到金融交易系…

作者头像 李华
网站建设 2026/9/18 7:34:10

js-md5实战指南:稳定生成一致MD5哈希的工程要点

1. 项目概述:为什么一个“简单使用”值得花时间深挖?“js-md5的简单使用”——看到这个标题,很多人第一反应是:“不就是引入个库、调个函数、输出个字符串吗?三行代码的事,还用写文章?”我刚开始…

作者头像 李华
网站建设 2026/9/18 7:33:35

Linux目录三剑客:/home、/etc、/opt的定位与排障实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华