尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Oracle 12c/19c安装卸载全流程实战与避坑指南

Oracle 12c/19c安装卸载全流程实战与避坑指南 在数据库领域摸爬滚打了这些年Oracle数据库的安装和卸载始终是最基础也最容易翻车的一环。尤其在企业级项目中12c和19c这两个版本几乎覆盖了市面上绝大多数存量系统和新建项目的需求。见过太多同事在安装阶段就卡住后面排查问题又发现是环境脏了导致的数据损坏。这篇东西就围绕Oracle 12c和19c的下载、安装、卸载、验证四个环节把我实际踩过和帮别人处理的坑都整理出来希望对正在折腾这个流程的人有实际帮助。1. 版本选择与下载准备1.1 12c和19c的定位差异先搞清楚版本定位再动手。Oracle 12c有两个大版本12c R1和12c R2。R1是最早引入CDB/PDB架构的版本多租户特性就是从它开始的但R1的很多功能在R2才逐步完善比如基于PDB的备份恢复、更成熟的资源管理。我个人的意见是如果一定要用12c直接选12c R2版本号12.2.0.1别用R1不是说R1不能用而是很多后期运维工具和第三方驱动对R1的兼容性已经逐渐放弃比起研究为什么连不上不如选一个生态更好的版本。Oracle 19c实际上是12c/18c时代长期支持版本Long Term Support的最终形态内部版本号还是12.2.0.3它是Oracle Database 12.2系列的一个延伸。19c修复了大量Bug在稳定性、安全补丁和性能优化上都比12c成熟很多。新部署的项目我通常无脑推荐19c除非业务系统有特殊要求比如某些老的应用只认证过12c或者客户对数据库版本有明确的合规要求。19c在Windows、Linux上的安装流程基本一致这篇教程以Windows Server环境为蓝本兼顾Linux下的对应操作毕竟开发测试机上大多数人还是喜欢用Windows图形界面来装数据库。1.2 下载渠道和安装包甄别Oracle的下载渠道比较固定官方OTNOracle Technology Network是唯一靠谱的来源。搜索引擎搜出来的各种“某某下载站”资源强烈不建议碰数据库安装包体积动辄几个GB被改过、加过料的概率极高而且安装过程本身就足够复杂没必要再叠加一个“不知不觉被植入东西”的变量。需要区分的是Oracle官网下载页面对12c和19c的入口不同。19c需要接受许可协议选择操作系统对应的安装包如果机器是64位Windows选“Microsoft Windows x64 (64-bit)”那一项。12c R2同样是x64版本注意别下载成Solaris或Linux的包这个细节看起来低级实际出现过很多次因为页面排版会把不同平台的安装包列在一起看错一个字母就下错了。下载后的安装包是ZIP格式多个压缩分包。拿到后先校验文件完整性官方页面提供SHA-256校验值。用PowerShell的Get-FileHash命令算一下比对一致再解压。这一步很多教程都不提但我认为非常必要尤其通过下载工具多线程下载时偶尔会出现文件损坏的情况解压过程报错很让人头大。Get-FileHash -Path 下载的ZIP文件路径 -Algorithm SHA256解压时要注意Oracle安装程序对路径非常敏感整个安装路径中尽量不要出现中文和空格。我习惯先建一个标准的目录比如D:\oracle_install或/home/oracle/install把ZIP解压到里面。另外解压后的安装目录名不要随意修改因为安装软件里记录了一些内部路径信息随意移动解压目录在后续启动安装程序时有可能报“不能定位文件”之类的错误。1.3 安装前资源检查和系统准备Oracle是出了名的吃资源大户至少在安装前把机器底线摸一遍。内存方面12c和19c在Windows上最低要求是2GB但实际跑起来2GB连内存警告都过不去。开发测试机建议至少8GB生产环境16GB起步。如果机器只有4GB内存还在跑其他软件建议先关掉不必要的进程再安装否则OUIOracle Universal Installer在检查阶段就会直接卡住或报错。磁盘空间也要提前预留。完整安装加示例数据库12c R2需要至少6GB空间19c更夸张纯软件加数据库文件建议预留15GB以上。千万别装在C盘系统盘不然数据库文件一增长C盘红了系统就各种诡异问题。我一般在D盘或单独的数据盘上安装软件数据文件也单独放一个目录。系统准备方面有几件事要做Windows更新补丁尽量打新尤其确保.NET Framework 3.5功能已启用OUI的某些图形界面组件依赖它控制面板-程序和功能-启用或关闭Windows功能勾选.NET Framework 3.5。关闭UAC用户访问控制或至少安装时右键“以管理员身份运行”。UAC的弹窗会让安装程序在权限提升时出现不可预料的交互问题。关闭防火墙或者放行Oracle需要用到的端口默认监听端口是1521如果是生产环境服务器建议在防火墙服务器管理界面里放行本地开发机安装时直接把防火墙临时关掉最省事。创建系统环境变量。Oracle默认将软件安装到C盘但可以通过设置ORACLE_BASE来改变安装路径。我在环境变量里设置ORACLE_BASE指向D:\oracle\base后面安装时它会基于这个变量自动生成ORACLE_HOME的推荐路径。Linux环境下还需要额外检查如果缺了libaio、binutils、compat-libcap1之类的依赖包OUI的预检查阶段会列出缺失项。网上很多教程会让你照单安装但实际在生产Linux主机上包管理器装依赖时会出现版本冲突这是另一个话题了。先把这些包装好能省不少时间。2. Oracle 19c安装全流程拆解2.1 图形化安装还是静默安装Oracle 19c在Windows上最直观的安装方式就是图形化界面双击setup.exe后跟着OUI一步步点下去。这种方式适合本地开发测试机也适合第一次装Oracle的初学者至少每个环节都有可视化反馈什么地方填错了能立即看到。Linux服务器上更多人选择静默安装通过响应文件加上命令行的方式不需要X11转发或图形界面。19c的静默安装说白了就是把图形界面上的所有选项预先写到一个.rsp文件里运行runInstaller时用响应文件参数指定路径OUI就会按照里面的配置执行安装。这个方式在批量部署时尤其好用。不过这里要提醒一个关键问题19c的Oracle安装程序默认会安装为多租户架构CDB/PDB这是新版的一个大变化很多从11g转过来的老手会不适。图形界面安装时会有一步让你选择“Create and configure a single instance database”还是“Install database software only”。如果你是开发联调环境直接选创建数据库并配置实例就行如果你是给后续迁移做准备想自己精细控制数据库创建的参数选“仅安装软件”后面再用DBCADatabase Configuration Assistant创建数据库。2.2 安装关键配置项详解整个安装过程中有几个配置项的决策直接影响数据库后续的使用方式这里逐个拆开讲。Oracle Base和Oracle Home路径。Oracle Base是Oracle应用的基础目录包含安装日志、网络配置、诊断信息等Oracle Home是数据库软件的实际安装目录。19c默认结构下Oracle Home路径一般是%ORACLE_BASE%\dbhome_1。记住这两个路径很重要后面设置环境变量、排查监听器问题、查看告警日志都会用到。数据库标识符SID和服务名称Service Name。SID是数据库实例的唯一标识默认填ORCL或者ORCLCDB。在CDB/PDB架构下有一个概念需要区分清楚你平时用JDBC或者PL/SQL Developer连接数据库时填的“服务名”到底是CDB的服务名还是某个PDB的服务名。默认安装时19c会创建一个名为ORCLPDB的PDB连接字符串里如果填ORCLPDB那连的是这个可插拔数据库如果填ORCLCDB连的是整个容器数据库。这个差别在后面很容易把人绕晕安装时最好记下你设置的PDB名称。管理口令设置。Oracle对密码策略有强校验要求至少8位包含字母、数字和特殊符号的组合比如Orcl_1234。SYS和SYSTEM管理员的密码必须设好且记住后续登录数据库、解锁账户都要用。有些教程建议先设一个简单的密码等安装完再改我不赞成因为初始密码复杂度不够会在OUI的校验环节直接被拦到时候还得回去改不如一步到位。数据库存储选项。默认是FS类型文件系统大部分场景够用。ASM是Oracle的自动存储管理一般用于生产或RAC环境单机开发测试就不用碰ASM了。数据文件位置按默认“使用模版文件数据库”即可它会自动放到ORACLE_BASE目录下的oradata子目录中。示例数据库和示例方案。安装时可以勾选是否创建示例方案Example Schemas里面包含HR、SH、OE这些经典的示例表空间和用户对学习很有帮助。生产环境不需要这些纯粹是多余的包袱。开发学习环境建议选上方便用示例表练手。2.3 安装过程中的后台动作说明19c的安装过程可以分成两个阶段理解这两个阶段的区别对排查问题有事半功倍的效果。第一阶段是OUI复制软件文件并完成基础配置界面上会有一个进度条显示“Database Insallation”的进展。这一阶段做的事情是把安装介质中的软件二进制文件解压复制到Oracle Home同时创建必要的目录结构、注册Windows服务如果你在Windows上装、生成初始的初始化参数文件等。大部分磁盘空间都是这个阶段消耗掉的。第二阶段是执行根脚本root scripts或者说是配置助手。在Linux上这一步会提示你在另一个终端窗口用root权限运行两个脚本orainstRoot.sh和root.sh。脚本的作用是创建Oracle Inventory目录并赋予正确的权限、配置系统启动时的数据库自启动服务。Windows下这一步叫“Oracle Database Configuration Assistant”它会帮你把监听器Listener配置好、创建数据库实例、启动服务。这个阶段如果报错问题一般出在Windows服务权限、端口占用、或者内存设置不合理上。2.4 安装完成的检查动作安装完成后不要急着开心先做一轮快速冒烟测试。19c安装结束时OUI会弹一个窗口显示数据库的SID、端口号、EM Express地址等信息通常类似https://localhost:5500/em。先浏览器访问一下这个地址能看到Oracle Enterprise Manager Express登录页面说明数据库整体是起的。然后打开命令行依次执行几个命令sqlplus / as sysdba如果能进入SQL*Plus而无报错说明本地操作系统认证没问题。再执行select name, open_mode from v$database;看到MOUNTED或READ WRITE状态都正常。READ WRITE是数据库正常打开状态MOUNTED是尚未完全打开一般刚安装完执行完配置助手后应该是READ WRITE。接着测试对外连接能力。如果用PL/SQL Developer这种第三方工具连接或者通过JDBC链接串测试jdbc:oracle:thin://localhost:1521/ORCLPDB。如果连接不通优先检查lsnrctl status命令输出的监听状态看监听器是否注册了对应服务。还有一个细节Windows下安装完成后系统服务里会新增若干个Oracle服务比如OracleServiceORCL数据库实例服务、OracleOraDB19Home1TNSListener监听服务。这些服务的启动类型默认是自动如果某个服务没起来数据库就算装了也无法连接。管理服务的命令lsnrctl start lsnrctl stop lsnrctl status3. Oracle 12c安装要点与差异3.1 12c R2与19c安装流程对比12c R212.2.0.1的安装过程和19c在绝大多数界面、配置逻辑上是相同的毕竟19c本质上就是12c产品线演进的结果。但有几个细节不一样需要注意。第一个是12c R2的安装包分为两个区域第一次解压后得到的是一个叫database的文件目录里面有setup.exe双击它会启动OUI。19c也是类似结构但12c对某些Windows版本有兼容性检查如果系统是Win10专业版以上通常没问题Win7或更老的系统就不好说了可能会出现预检查阶段警告“操作系统版本不受支持”这个警告可以忽略继续安装但如果后续出现莫名问题优先考虑兼容性因素。第二个是内存管理。12c R2默认使用自动内存管理AMM它会把内存参数如memory_max_target、memory_target设置为物理内存的一定比例。12c的默认设置有时会在物理内存小于4GB的机器上报“内存不足”的检查错误。解决办法是提前设置一个DATABASE的初始化参数模板或者减少memory_target的值。但如果你直接采用默认配置安装内存检查能不能过完全靠运气。推荐的做法是在12c安装的“Memory”选项页把“自动内存管理”改成“使用自定义内存设置”固定SGA或PGA大小比如SGA给1GBPGA给256MB开发测试环境完全足够。第三个是12c R2的示例用户默认密码机制。12c里HR用户默认是锁定的密码过期。安装配置完成后需要手动执行一句命令解锁alter user hr identified by hr account unlock;19c也是同理。很多初学者在安装后直接连接HR账户报ORA-28000账户被锁定并不是安装有问题纯粹是账户状态没开。3.2 12c R2在Windows上的常见坑12c R2在Windows上有几个独有痛点这里集中说一下。坑一解压路径过长导致安装程序无法启动。12c的安装介质解压后的路径如果超过一定长度或者目录层级过深setup.exe会闪退。把解压目录直接放到盘符根目录比如D:\12c_install\database能避免大多数这类问题。坑二Windows服务无法启动或启动后立刻停止。原因可能是数据库配置文件里的路径与实际安装路径不一致。这种情况多发生在搬移过Oracle Home目录或者用Ghost镜像恢复系统之后。解决思路是检查%ORACLE_HOME%\database\SPFILEDB.ORA中的control_files、db_create_file_dest等参数指向的实际路径是否存在。经验是安装Oracle前规划好目录安装后尽量不要挪动Oracle Home路径Windows路径中的盘符变化对Oracle是致命打击。坑三卸载后重装提示已有实例。12c的卸载程序在很多情况下不会完整清理注册表和Directory Services。卸载后用regedit打开注册表搜索关键词OraDb和Oracle找到残留的键值一并删除。但操作注册表之前必须备份一份注册表文件删错了Oracle本身的分类键其实影响不大怕的是删到系统或者第三方软件的键值。4. 安装验证体系化检查4.1 服务、监听和进程三端验证装完Oracle之后验证不能只看一次sqlplus能进就完事。我习惯把验证拆成三个层级从底往上逐层确认。第一层是Windows服务层面。打开本地服务管理器services.msc重点确认这几个服务是否存在且状态是“正在运行”OracleServiceORCL或你自定义的SID对应的服务名OracleOraDB19Home1TNSListenerOracleVssWriterORCL可选负责影子卷备份支持如果服务状态是“停止”或“启动失败”右键查看服务属性里的可执行文件路径是否指向了正确的Oracle Home。服务启动失败一般会生成Windows事件日志用事件查看器查看失败原因80%的情况指向路径错误或权限问题。第二层是监听器层面。使用lsnrctl status命令确认监听状态。正常情况下输出里会有类似这样的一段Service ORCL has 1 instance(s). Instance ORCL, status READY, has 1 handler(s) for this service... Service ORCLPDB has 1 instance(s).看到实例状态是READY或UNKNOWN就是正常的。UNKNOWN状态表示这个服务是通过静态注册方式登记的READY是动态注册两者都不影响连接。但如果输出里“No service”或者监听列表为空说明实例没有注册到监听器上。诊断思路是先确认实例是否启动再检查监听器的配置文件listener.ora是否包含正确的SID列表最后考虑数据库参数local_listener是否正确。动态注册的问题很大程度和local_listener参数没设置有关特别是修改过监听端口后。第三层是进程层面。用任务管理器查看是否有一个名为oracle.exeWindows或oracle_SIDLinux的进程在运行。这只是为了确认数据库实例确实在内存里活着。多实例环境还会看到多个oracle.exe进程分别对应不同SID。如果进程存在但服务显示停止比较少见通常意味着服务配置损坏需要重新配置或者把服务停掉再起来。4.2 数据库侧验证从数据库侧验证登录到SQL*Plus后执行一组综合检查脚本。这里贴一个我常用的检查模板很精简但覆盖了关键点sqlplus / as sysdba -- 查看实例状态 select instance_name, status, database_status from v$instance; -- 查看数据库打开状态 select name, open_mode from v$database; -- 查看服务名 show parameter service_names; -- 查看监听情况 select db_unique_name, database_role, open_mode from v$database; -- 查看内存分配 show sga; show parameter pga_aggregate_target;执行完的结果应该满足几个条件实例状态是OPEN数据库OPEN_MODE是READ WRITEservice_names不是空的。内存参数的查看主要是诊断性能问题如果你后续跑大查询时发现v$pgastat里大量出现“workarea executions - onepass”或“multi-pass”说明PGA设置偏小。这是后话安装阶段只需保证基本参数合理。4.3 客户端连接验证安装验证的最后一步是用网络方式连接数据库而不依赖本地操作系统认证。经典的做法是用Java写的JDBC驱动来测试或者用Oracle自带的SQL*Plus在另一台机器或同一台机器上用TCP连接sqlplus system/密码//localhost:1521/ORCLPDB这里重点测试的不是能不能登录而是“1521端口通不通”“服务名解析对不对”“认证方式是否好用”。如果一个数据库本机上sqlplus能登录换网络登录就报ORA-12514: TNS:listener does not currently know of service requested in connect descriptor基本可以断定是监听器那边的问题。排除思路依次检查lsnrctl services确认监听器实际登记的服务名连接描述符里的服务名是否与数据库参数service_names一致tnsnames.ora文件是否存在且配置正确Windows本机上如果测试不通过建议检查防火墙有没有放行1521端口很多Windows上装好Oracle后客户端连不上起因就是防火墙默认拦截了Oracle的可执行程序。安装目录下的Network\Admin\tnsnames.ora和listener.ora这两个文件检查一下里面的主机名是否写成了带有实际机器名的值有时主机名解析不稳定改成127.0.0.1或具体的IP会更好。5. 卸载与残留清理5.1 标准卸载流程卸载Oracle最忌讳的是“直接从磁盘删除文件夹”这样只会留下大量无法辨识的残骸后续重装时各种冲突问题层出不穷。正确做法是走Oracle自己的卸载工具。Windows下的标准步骤是运行Oracle Home目录下的deinstall.bat路径一般在%ORACLE_HOME%\deinstall\deinstall.bat。命令行会询问是否保留数据库文件、监听配置等信息通常需要输入N表示全部清理。过程会生成一份脚本清单确认后回车执行。此阶段会停止Oracle服务、删掉Windows服务、清理部分注册表键值。执行完毕但Oracle的清理并不彻底需要下一步人工复查。Linux环境的操作有所差异明确建议用runInstaller命令配合-deinstall选项或者直接使用$ORACLE_HOME/deinstall目录下的脚本。同时Linux上还要手动处理/etc/oratab文件中的记录、/etc/oraInst.loc文件。如果使用了监听器还有/etc/sysconfig下的相关配置。5.2 注册表和残留目录清理其实这步才是卸载流程的重头戏。Oracle在Windows下的安装涉及注册表键值非常多单靠官方卸载工具往往清理不完整。典型残留区域HKEY_LOCAL_MACHINE\SOFTWARE\ORACLEHKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ORACLEHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下面所有Oracle开头的服务键清除过Oracle的系统注册表里可能残留几十个Oracle开头的服务键。拿管理员权限打开注册表编辑器逐个删除。这里需要特别谨慎注册表动错可能让系统不稳定。正确做法是先在删除前用“文件-导出”功能把整个ORACLE键值导出成.reg备份文件确认系统一切正常后再清理备份文件。同样的道理应用于服务管理器里的Oracle服务手动删除服务可以用sc delete OracleServiceORCL sc delete OracleOraDB19Home1TNSListenersc命令需要管理员权限执行删除服务前确保服务已停止。如果服务状态显示已停止但删除时报权限错误检查是不是有第三方安全软件在保护服务注册表。另外两个目录是绝对要手动检查的%ORACLE_BASE%目录C:\Program Files\Oracle目录Oracle默认会在C盘Program Files下建一个Oracle目录存放Inventory信息。这个目录和oracle base目录一样在卸载后经常残留一堆日志和配置组件。全部删除前确认机器上确实不再需要任何Oracle环境否则数据文件会一并被清掉。5.3 环境变量与路径清理上述清理完成后还需要检查系统环境变量。运行“编辑系统环境变量”查PATH里是否仍有Oracle相关路径比如C:\oracle或D:\oracle\base等。ORACLE_HOME、ORACLE_BASE、TNS_ADMIN这三个变量如果存在直接删除即可。即便清理完之后谨慎起见重启一次电脑再检查一下服务管理器里还有没有Oracle开头的服务项注册表里是否又出现了Oracle相关键值。理论上注册表不会自动恢复但有些后台服务或者杀毒软件会把运行中的DLL重新加载起来导致看起来像“没删干净”的情况。我见过不少人在卸载重装时遇到“安装程序检测到机器上已有同名Oracle Home”即使肉眼找不到任何Oracle痕迹安装程序还是会拦截。这种时候多半是注册表里的InstalledProducts键值没清掉。位置在HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE的InstalledProducts子键下里面记录着安装过的产品组件信息。挨个看一遍把和Oracle相关的全部删掉再重新运行安装程序就不会拦截了。6. 常见问题与排查技巧6.1 安装初期报错问题1Oracle 12c安装时提示“操作系统版本不受支持”这种提示多出现在Windows 10/11系统上装12c R2。安装程序会检查操作系统版本并弹出一个警告窗口。这个可以点“是”继续不影响安装过程。但安装完成后需要特别关注是否存在兼容性问题比如服务无法启动或监听器异常。如果真的出现了上述问题建议优先考虑从“控制面板-程序-兼容性疑难解答”中把安装程序的兼容模式调整为Windows 8或Windows 7以管理员身份重新运行。问题2Net Framework 3.5无法启用OUI图形界面依赖.NET Framework 3.5部分精简版Windows系统在启用时会下载失败。这个问题的现象是安装程序解压后双击setup.exe无任何反应或者提示“必须安装.NET Framework 3.5”。启用Windows功能时报错“无法安装证书无法验证”也是一类常见问题很多教程让去官网下载离线安装包但离线包安装后如果证书不对还是报错。我实际比较有效的路径挂载ISO镜像用DISM命令手工添加功能底层逻辑就是让系统直接读取镜像里的组件文件跳过联网验证。dism /online /enable-feature /featurename:NetFx3 /all /source:D:\sources\sxs /limitaccess这个命令里D:\sources\sxs是Windows系统镜像中组件的挂载路径换成自己实际挂载的盘符即可。6.2 安装中途卡住或失败问题3安装到“链接”阶段进度条长时间不动这个多发生在OUI的“Link Binaries”阶段。该阶段需要调用C编译器把Oracle的各个模块链接成可执行文件。如果机器内存不够或者CPU资源紧张这个环节可能持续20分钟以上。处理办法是看看任务管理器里CPU是否还有波动如果没有波动且长时间卡在相同百分比多半是死锁了。解决办法是重装之前先关闭所有无关程序同时最好给C盘留出至少20%空余空间因为链接过程会生成大量临时文件。问题4提示“端口1521已被占用”Oracle默认监听端口是1521如果机器上已有MySQL或其他数据库占用了1521端口安装或配置监听器时就会报端口冲突。解决的两种方式一是修改Oracle自身的监听端口。在安装阶段监听器配置界面直接改成一个新端口比如1522。后续所有连接都要带上新端口。二是先停掉占用的程序等安装完成后再改Oracle端口。这种方式需要修改两个配置listener.ora里的端口号以及数据库的local_listener参数改完以后重启监听器alter system set local_listener(ADDRESS(PROTOCOLTCP)(HOSThostname)(PORT1522)) scopeboth;注意不要只改监听器而忘记数据库参数否则监听起来了但实例没动态注册上去连接时还是报服务不存在。问题5数据库创建阶段报ORA-12560: TNS protocol adapter error这个错误在Windows下出现时常见的直接原因是服务没起来但更深层是环境变量ORACLE_SID没设置或设置成了错误的值。如果用sqlplus / as sysdba登录报这个错先检查Windows服务中Oracle实例服务是否在运行然后在命令行中执行set ORACLE_SIDORCL sqlplus / as sysdba6.3 配置和连接验证阶段的典型异常问题6sqlplus登录缓慢这个症状在Oracle里比较经典。sqlplus system/密码localhost:1521/ORCLPDB敲回车后要停好几秒甚至几十秒才进入登录。原因很多但最常见的是DNS解析慢。Oracle在客户端连接时会对主机名做解析如果本机没有正确配置hosts文件或DNS服务器响应慢连接就会卡住。解决办法是把tnsnames.ora和listener.ora里的主机名都改成IP地址或者在本机hosts文件中添加映射。另一个常见原因是审计日志过大或监听日志写入缓慢。检查安装目录下network\log文件夹的日志文件大小如果单个日志超过几百MB登录过程会明显卡顿因为Oracle要写日志但磁盘IO被拖慢。问题7ORA-12514服务未注册这个错误在安装验证阶段出现的频率极高。含义是监听器不认识连接串里指定的服务名。排查就从lsnrctl services输出的服务列表入手看实际注册的服务名和你连接串用的服务名是否一致。大多数情况下是服务名写错比如分不清ORCLCDB和ORCLPDB。正确写法是连接CDB时用ORCLCDB连接PDB时用ORCLPDB如果数据库创建时自定义了其他名字以此类推。问题8数据库实例能启动但监听器启动失败通常报错都围绕TNS-12541: 没有监听器或TNS-12560: 协议适配器错误这类。第一步看listener.ora的配置确认监听端口没有冲突。第二步检查是否有PID文件残留listener.ora所在目录下如果有一个listener.pid的残留文件删除后重启即可。这个文件是监听器正常关闭时自动删除的异常宕机会遗留导致监听器认为进程已在运行。问题9重装时报“Oracle Inventory目录无法访问”这个出现在Linux上比较多Windows偶尔也有。目录oraInventory的权限被以前的安装动了手脚当前用户没有写权限。解决办法是用root运行初始化脚本或者干脆在安装前删除旧Inventory目录用一个全新的。Windows下对应的是C:\Program Files\Oracle\Inventory如果这个目录被修改过权限删除重建是省事且有效的方式。6.4 实用技巧和避坑总结把这几个月的经验压缩成几句对折腾Oracle安装的人可能比较受用先规划后动手。装之前把安装路径、监听端口、SID、服务名这些关键参数都写下来比我说的版本选择、内存规划更具体。相信我装到一半忘记了自己设的PDB名称是很常见的。能用静默安装就用静默安装。图形化安装虽然直观但它会把一些关键配置“隐藏”起来比如Windows服务名称、数据库文件默认路径这些细节在后期排障时需要自己手动去翻配置底层的状态反而不透明。静默安装则强迫你把所有参数都写到响应文件里后期的可运维性好不是一点半点。日志永远是第一排障手段。安装失败后Open安装日志的顺序是先看OUI主界面有没有展示日志路径默认在C:\Program Files\Oracle\Inventory\logs或%ORACLE_BASE%\cfgtoollogs\dbca下。这些日志文件按时间排序包含详细到每一行操作的输出。比起网上搜“ORA-xxxx错误”先看日志能定位到问题发生的具体环节。我自己的血泪教训是永远不要让多个版本的Oracle共存于同一台Windows机器上。有人说可以装两个不同版本的Oracle Home技术上确实允许但两个版本共用一个监听器的配置复杂度剧增动态注册时会互相覆盖服务名冲突、环境变量串扰层出不穷。如果一定要在本地环境测试多个版本用虚拟机或容器化方案隔离比在同一台机器上共存舒服太多。7. 写在最后的一点个人建议安装Oracle这个事看起来是“把安装包跑一遍”的体力活但真正决定数据库后续健壮性的恰恰是那些看起来不起眼的安装选项。我见过太多生产事故根因都能追溯到安装阶段的“图省事”——比如用了默认密码、没规划目录、跳过验证、端口冲突硬装。说句实在话数据库层面的绝对安全做不到但安装阶段的合规和规范是确保后续操作少踩坑的底线。如果你想系统学习Oracle数据库这里还有个建议找一个干净的Linux虚拟机环境从12c和19c各装一遍拿这两个环境做全流程的运维练习。千万不要在生产服务器上直接试也不要一遍遍在自己日常用的Windows台式机上折腾安装卸载环境越干净你判断问题根因的噪音就越少。我个人的经验教训是安装前把官方文档和安装指南里“系统要求”和“已知问题”两节先过一遍安装中遇到问题先看日志再动手安装后做完整的验证再交付。至少在数据库这个领域稳定运行比花哨技巧要值得投入更多精力。
返回列表