尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Windows Server 2012 R2部署Oracle 19c全流程实战与避坑指南

Windows Server 2012 R2部署Oracle 19c全流程实战与避坑指南 1. 项目缘起为什么要在Windows Server 2012上部署Oracle 19c最近接手了一个老项目的迁移和升级任务客户的核心业务系统跑在一台老旧的戴尔R730服务器上操作系统是Windows Server 2012 R2。由于业务发展原有的数据库版本已经不堪重负性能和安全性都亮起了红灯。经过评估我们决定将数据库升级到Oracle 19c。这个决定背后有几个现实的考量首先Oracle 19c是Oracle长期支持版本Long Term Release意味着在未来几年内都能获得稳定的补丁和安全更新这对于一个需要持续运行的核心系统至关重要其次19c引入了多租户架构的诸多优化和自动化功能虽然我们初期可能只用单租户但为未来的架构演进预留了空间最后从旧版本迁移到19c可以利用其增强的兼容性和性能特性解决现有系统的一些瓶颈。然而在Windows Server 2012 R2上安装Oracle 19c并不是一个“下一步、下一步、完成”的简单过程。这个组合本身就是一个“新瓶装旧酒”的典型场景——一个相对较新的数据库软件运行在一个已经停止主流支持的操作系统上。你会遇到从系统补丁、用户权限、到安装程序兼容性等一系列“坑”。网上能找到的教程大多集中在Linux环境Windows下的详细指南尤其是针对Server 2012这种老版本系统的往往语焉不详或者步骤跳跃太大。我花了整整两天时间踩遍了几乎所有能踩的坑才最终让数据库实例稳定跑起来。这篇文章就是把我这次安装部署的完整过程、关键决策点、以及那些教程里不会写的“血泪教训”记录下来希望能帮到面临同样场景的朋友。2. 战前准备系统环境与软件的精细校验在双击安装程序之前绝大部分的失败其实已经注定了。对于Oracle这种重型软件环境准备的重要性再怎么强调都不为过。在Windows Server 2012 R2上你需要像一个侦探一样仔细检查每一个环节。2.1 操作系统层面的“体检”首先确认你的Windows Server 2012具体版本。打开“服务器管理器”查看“本地服务器”属性。强烈建议使用Windows Server 2012 R2 Standard或Datacenter版本并且确保所有重要的Windows Update都已安装。Oracle 19c的安装程序会检查特定的系统补丁如果缺失安装程序可能会直接报错退出。一个关键的补丁是KB2999226Visual C Redistributable for Visual Studio 2015的更新这个补丁是很多现代安装程序的基础依赖。你可以通过“控制面板”-“程序和功能”-“查看已安装的更新”来搜索确认。其次检查系统架构。Oracle 19c for Windows只有64位版本因此你必须确保操作系统是64位的。在“系统”信息中确认。第三关闭或配置防火墙。在测试或内部环境为了安装过程顺畅可以暂时关闭Windows防火墙。在生产环境则需要在防火墙中预先为Oracle监听端口默认1521和可能用到的EM Express端口默认5500添加入站规则。第四配置静态IP地址。数据库服务器必须使用静态IP动态IP会导致监听器注册和客户端连接出现问题。在网络适配器设置中完成配置。2.2 磁盘与文件系统的规划这是决定数据库后期性能和可管理性的关键一步绝不能随意。安装目录ORACLE_HOME不要安装在系统盘C盘。专门划分一个逻辑驱动器例如D:\app。路径中避免使用空格和特殊字符像D:\Oracle\19c这样的路径是最清晰、最不容易出错的。Oracle的安装路径一旦确定后续更改极其麻烦。数据库文件目录这是存放数据文件、控制文件、重做日志文件的地方对I/O性能要求最高。务必与ORACLE_HOME分离。可以规划在另一个物理磁盘或分区上例如E:\oradata。这样可以将软件I/O和数据I/O分散开提升性能的同时也便于管理和备份。快速恢复区Fast Recovery Area用于存放归档日志和备份文件。同样建议放在独立的存储空间例如F:\fast_recovery_area。要预估其大小通常设置为数据库总大小的2-3倍。文件系统使用NTFS。确保目标驱动器有充足的剩余空间。Oracle 19c软件安装大约需要10GB一个初始的数据库实例还需要至少5-10GB的空间用于系统表空间等。所以为D:\app准备至少20GB为E:\oradata准备至少50GB根据实际数据量预估是一个比较安全的起点。2.3 用户与权限的“金钥匙”在Windows上安装Oracle强烈建议创建一个专用的Windows用户账户来运行Oracle服务而不是使用默认的Administrator或系统账户。这样做安全性更高权限更清晰。创建用户在“计算机管理”-“本地用户和组”中创建一个新用户例如oracle。密码设置需符合复杂性要求并设置为“密码永不过期”根据安全策略调整。分配用户组将这个oracle用户添加到以下本地组中Administrators是的你没看错。在Windows上安装和运行Oracle数据库核心服务通常需要管理员权限。这是一个与Linux使用oinstall,dba组不同的地方。虽然理论上可以细化权限但为了减少不必要的麻烦在安装阶段赋予管理员权限是普遍做法。Perform Volume Maintenance Tasks此权限允许Oracle服务执行数据库文件的即时初始化可以大幅加速数据文件的创建速度。Lock Pages in Memory如果计划使用大页内存对于大型SGA很有用需要此权限。授予目录权限使用管理员账户登录为你规划好的目录D:\app,E:\oradata,F:\fast_recovery_area赋予oracle用户“完全控制”权限。2.4 软件包的下载与验证从Oracle官网下载Oracle Database 19c for Microsoft Windows x64的安装包。通常是一个名为WINDOWS.X64_193000_db_home.zip的压缩文件。下载后务必核对文件的MD5或SHA256校验和与官网公布的值进行比对确保文件在下载过程中没有损坏。一个损坏的安装包会在解压或安装中途报出各种诡异的错误让你排查到怀疑人生。将ZIP文件解压到你计划安装的ORACLE_HOME目录下例如解压到D:\app\19c。这样解压出来的文件就直接在目标位置了。3. 安装攻坚运行安装程序与关键配置解析准备工作就绪后我们就可以开始正式的安装过程了。这里每一步的选择都关系到后续的使用。3.1 以正确的方式启动安装程序这是第一个容易踩坑的地方。不要直接双击setup.exe。使用刚才创建的oracle用户登录Windows系统。找到解压目录下的setup.exe。右键点击setup.exe选择“以管理员身份运行”。这是必须的否则在创建Windows服务、写入注册表等关键步骤时会因权限不足而失败。安装程序启动后Oracle Universal Installer (OUI)界面会出现。3.2 安装选项的深度抉择第1步配置选项。这里选择“创建和配置数据库”。对于全新安装这是最直接的方式。如果选择“仅安装数据库软件”后续还需要手动运行DBCA数据库配置助手来创建实例步骤更繁琐。第2步系统类。选择“服务器类”。桌面类功能受限不适合服务器环境。第3步Oracle主目录用户。选择“使用Windows内置账户”。在下拉框中选择“虚拟账户”默认。这是Oracle 19c推荐的方式它会创建一个名为OracleHomeUserName的虚拟账户来管理服务比直接使用oracle用户更安全。OUI会自动处理这个虚拟账户所需的权限。第4步安装位置。这里就是设置ORACLE_BASE和ORACLE_HOME。ORACLE_BASE输入D:\app\oracle。这是Oracle产品的顶级目录。ORACLE_HOME会自动派生为D:\app\oracle\product\19.0.0\dbhome_1。确认路径正确即可。第5步产品清单目录。保持默认或指定一个路径用于存放安装清单文件。第6步配置类型。选择“典型配置”。对于第一次安装“高级配置”选项太多容易让人困惑。“典型配置”已经包含了最核心的配置项。第7步典型配置详情。这是核心配置页面需要仔细填写全局数据库名例如orcl.example.com。通常由数据库名orcl和域名组成。数据库标识符 (SID)例如orcl。这是实例的系统标识符在同一个服务器上必须唯一。管理口令为SYS,SYSTEM,PDBADMIN等关键管理用户设置一个强密码。务必牢记此密码。创建为容器数据库勾选。即使你目前只打算用一个PDB可插拔数据库也建议创建为CDB容器数据库。这是Oracle 12c之后的架构方向资源隔离和管理更灵活。你可以先创建一个PDB供应用使用。可插拔数据库名例如pdborc1。这就是你实际存放数据的PDB的名字。数据库文件位置修改这里不要使用默认的%ORACLE_BASE%\oradata。点击“浏览”指向我们之前规划好的E:\oradata目录。这样数据文件就会存放在独立的磁盘上。快速恢复区启用并设置位置为F:\fast_recovery_area。大小可以设置为20GB或更大取决于你的备份策略。字符集根据应用需求选择。如果应用主要是中文选择AL32UTF8Unicode UTF-8字符集是通用且推荐的选择它支持全球所有语言。如果确定只有中英文且对空间极其敏感可以考虑ZHS16GBK但通用性不如UTF8。将示例方案添加到数据库不建议勾选。示例方案如HR, OE会占用额外空间且可能引入不必要的安全风险。除非你有学习演示的需求。后续步骤在“先决条件检查”页面安装程序会自动检查系统环境。如果前面准备充分这里应该全部通过可能有关于安全设置的“警告”但通常可以忽略。如果有“失败”项必须根据提示解决后才能继续。在“概要”页面仔细回顾所有配置项确认无误后点击“安装”。3.3 安装过程中的“观察哨”安装过程会持续较长时间30分钟到1小时以上取决于硬件性能。在此期间不要以为可以完全走开。你需要关注两个日志文件它们位于ORACLE_HOME\cfgtoollogs目录下installActionstimestamp.log这是主安装日志记录了所有高级别操作。ouiinstalltimestamp.log如果安装失败这个日志通常包含更详细的错误信息。安装程序会依次执行复制文件、链接可执行文件、配置Oracle网络服务Net Services、创建数据库实例。在“数据库配置助手DBCA”步骤时会花费最多时间因为它在物理上创建数据文件、构建数据字典、编译PL/SQL包。当看到“Database Configuration Assistant”完成100%并最终弹出“安装成功”的对话框时恭喜你最艰难的部分已经过去。记下它显示的关于Enterprise Manager Database Express (EM Express) URL的信息通常是https://服务器主机名:5500/em。4. 安装后必做验证、连接与基础加固安装成功弹窗关闭并不意味着工作结束。以下几个步骤是确保数据库真正可用、可管、安全的基础。4.1 基础服务验证与连接测试检查Windows服务打开“服务”管理工具services.msc你应该能看到至少两个新增的以Oracle开头的、且名称中包含你的SID如orcl的服务OracleServiceORCL这是数据库实例本身的核心服务。必须处于“正在运行”状态。OracleOraDB19Home1TNSListener这是监听器服务负责接收客户端连接请求。也必须处于“正在运行”状态。使用SQL*Plus进行本地连接测试从开始菜单找到“Oracle - OraDB19Home1”程序组运行“SQL Plus”。或者打开命令提示符CMD确保当前用户环境正确最好以oracle用户运行CMD然后执行sqlplus / as sysdba这条命令使用操作系统认证以SYSDBA权限登录。如果成功你会看到SQL提示符。执行SELECT name, open_mode FROM v$database;应该能看到你创建的数据库CDB信息。连接到你的PDBALTER SESSION SET CONTAINER pdborc1;(将pdborc1替换为你的PDB名)。然后再次执行SELECT name, open_mode FROM v$database;此时显示的是PDB的信息。测试网络连接监听器在CMD中执行lsnrctl status。查看监听器状态确认它正在监听你配置的地址和端口默认1521。从服务器本机使用sqlplus进行网络连接测试sqlplus system/你的密码localhost:1521/pdborc1。如果能连接成功说明监听器和网络配置基本正确。4.2 关键网络配置文件解析Oracle的网络连接依赖于tnsnames.ora和listener.ora文件。它们通常位于ORACLE_HOME\network\admin目录下。listener.ora定义了监听器的配置。安装程序通常已自动配置好。你可以打开查看确认SID_LIST部分包含了你的数据库实例SID。tnsnames.ora定义了客户端连接数据库的别名TNS名称。安装后本地会有一个名为ORCL或你的全局数据库名的条目。你可以编辑这个文件为你的PDB也添加一个专门的连接描述符方便应用连接。例如添加PDBORC1 (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST localhost)(PORT 1521)) (CONNECT_DATA (SERVER DEDICATED) (SERVICE_NAME pdborc1) # 关键这里用PDB的服务名 ) )之后应用就可以使用sqlplus username/passwordPDBORC1来连接了。4.3 基础安全与性能初始化设置数据库刚创建时很多参数是默认值可能不适合你的生产环境。以下是一些立即要检查或调整的点在PDB中执行修改默认用户密码安装时设置的密码管理了SYS,SYSTEM等账户。确保密码足够复杂。检查并开启归档模式ARCHIVELOG对于生产数据库强烈建议开启归档模式这是实现完整恢复的基础。在CDB的SYSDBA会话中执行SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN; -- 然后切换到PDB ALTER SESSION SET CONTAINER pdborc1; ALTER DATABASE OPEN;确认SELECT log_mode FROM v$database;应返回ARCHIVELOG。调整内存参数默认的MEMORY_TARGET可能偏小。根据服务器物理内存调整SGA和PGA。例如在PDB中注意CDB级别也有内存设置PDB级别可以设置共享池等-- 首先在CDB级别设置总内存例如在24G内存的服务器上分配16G给Oracle ALTER SYSTEM SET MEMORY_TARGET16G SCOPESPFILE; ALTER SYSTEM SET MEMORY_MAX_TARGET16G SCOPESPFILE; -- 重启实例生效更精细的控制可以在PDB级别设置SHARED_POOL_SIZE,DB_CACHE_SIZE等。配置定时任务启用Oracle调度器Scheduler来自动执行诸如统计信息收集等维护任务。默认应该是开启的。5. 避坑实录那些让我熬夜的典型问题与解决方案理论很美好实践总出岔子。下面是我在这次安装中实际遇到并解决的问题希望你能提前避开。5.1 安装程序“闪退”或启动失败现象双击或以管理员运行setup.exe后程序窗口一闪而过或者长时间无响应后消失。排查检查Java环境Oracle安装程序基于Java。到ORACLE_HOME\jdk\bin目录下尝试运行java -version。如果报错可能是系统环境变量冲突或Java本身损坏。可以尝试临时将ORACLE_HOME\jdk\bin添加到用户PATH环境变量最前面。检查临时目录安装程序需要大量临时空间。确保%TEMP%和%TMP%环境变量指向的磁盘有至少5GB可用空间并且当前用户有写入权限。以兼容模式运行右键setup.exe- 属性 - 兼容性 - 勾选“以兼容模式运行这个程序”尝试选择“Windows 7”或“Windows 8”。查看日志立即去%USERPROFILE%\AppData\Local\Temp目录下按时间排序找到名称类似OraInstall时间戳的文件夹里面的installActions.log会有错误线索。5.2 DBCA创建数据库时卡在特定百分比现象安装过程在“执行Database Configuration Assistant”时长时间卡在某个百分比如2% 44%。排查后台看日志不要干等。去ORACLE_HOME\cfgtoollogs\dbca\数据库名目录下查看最新的.log文件如orcl.log。用文本编辑器打开滚动到最后看它正在执行什么SQL语句或操作。常见卡点一创建数据文件如果卡在很低的百分比可能是创建数据文件时磁盘I/O慢或权限问题。检查目标数据文件目录E:\oradata的权限确保Oracle虚拟账户或运行用户有完全控制权。也可以尝试在安全模式下重启服务器再安装排除其他软件干扰。常见卡点二编译PL/SQL卡在44%或类似位置通常是正在编译DBMS_STATS等内置包。这步CPU消耗大。耐心等待只要服务器没有死机日志文件还在增长就让它继续跑。有时会持续半小时以上。杀进程重来如果确定卡死日志半小时无更新CPU/磁盘无活动可以到任务管理器结束dbca.exe和所有java.exe进程。然后彻底清理停止所有Oracle服务删除E:\oradata下已生成的文件删除ORACLE_HOME下database目录如果存在和cfgtoollogs\dbca下的对应日志目录。然后重新运行安装程序并选择“仅安装数据库软件”安装完成后再手动以静默模式运行DBCA有时能绕过GUI的bug。5.3 监听器启动失败或客户端无法连接现象lsnrctl start失败或提示“无监听器”或客户端连接时报“ORA-12541: TNS:no listener”。排查检查监听器服务首先确认OracleOraDB19Home1TNSListener服务是否已启动。尝试在CMD管理员中手动启动net start OracleOraDB19Home1TNSListener。查看错误信息。检查listener.ora配置确保文件中的HOST指向正确的主机名或IP地址。在Server 2012上有时使用localhost或127.0.0.1比使用实际主机名更可靠尤其是在主机名解析有问题时。可以尝试将HOST localhost。检查端口占用用netstat -ano | findstr :1521检查1521端口是否被其他程序占用。防火墙这是最常见的原因之一。确保Windows防火墙或第三方防火墙允许1521端口的入站连接。可以临时关闭防火墙测试。手动注册服务有时服务安装不完整。可以尝试手动注册lsnrctl start失败后去ORACLE_HOME\bin目录下执行oradim -NEW -SID ORCL -STARTMODE manual -PFILE “D:\app\...\initORCL.ora”具体pfile路径根据实际情况然后再尝试启动监听器。5.4 EM Express无法访问现象安装完成提示EM Express地址为https://hostname:5500/em但浏览器无法访问。排查确认服务EM Express由数据库实例内的XDB服务提供。确保数据库实例已打开并且PDB也处于OPEN状态。检查配置在SQL*Plus中连接PDB执行SELECT dbms_xdb_config.gethttpsport FROM dual;。如果返回0说明HTTPS端口未配置。执行EXEC dbms_xdb_config.sethttpsport(5500);然后COMMIT;。防火墙同样检查5500端口是否在防火墙中开放。使用本地主机访问在服务器本机上尝试用https://localhost:5500/em或https://127.0.0.1:5500/em访问。如果本机可以但外部不行就是主机名解析或防火墙问题。6. 性能调优与日常管理入门数据库安装并跑起来只是第一步让它跑得稳、跑得快才是目的。以下是一些针对这个特定环境Windows Server 2012 Oracle 19c的初步调优和管理建议。6.1 内存与进程优化Windows上的Oracle内存管理与Linux略有不同。除了之前设置的MEMORY_TARGET还需要关注锁定内存页如果服务器内存较大比如超过64GB为了减少分页可以让Oracle实例锁定SGA在物理内存中。这需要之前提到的“Lock Pages in Memory”权限。启用后在初始化参数中设置USE_LARGE_PAGESONLY如果系统支持大页或TRUE。进程数Windows上每个服务器进程对应一个操作系统线程。默认的PROCESSES参数可能偏小。对于有较多并发连接的应用可以适当调大ALTER SYSTEM SET PROCESSES500 SCOPESPFILE;需要重启。6.2 I/O与存储配置优化数据文件放在独立的E:\oradata盘符下是正确的一步。还可以进一步优化禁用磁盘上的写入缓存对于数据库数据文件所在的磁盘在Windows磁盘管理器中进入磁盘属性-硬件-选择磁盘-属性-策略取消勾选“启用设备上的写入缓存”。这可以防止在电源故障时丢失已确认写入的数据保证数据一致性。性能损失在大多数场景下可接受。使用性能监视器使用Windows自带的“性能监视器”perfmon添加计数器如PhysicalDisk(*)\Avg. Disk sec/Read和Avg. Disk sec/Write。如果平均值持续高于20毫秒说明磁盘I/O可能成为瓶颈需要考虑升级到SSD或优化I/O路径。6.3 备份策略的立即制定不要等到数据丢失才想起备份。安装完成后第一件管理任务就是配置备份。启用归档模式如前所述这是实施任何有效备份策略的前提。配置RMAN恢复管理器Oracle自带的RMAN是最佳的备份工具。编写一个简单的RMAN脚本实现每周日全备周一到周六增量备份并定期删除过期备份。-- 一个简单的RMAN命令示例需要在RMAN命令行执行 RUN { ALLOCATE CHANNEL ch1 DEVICE TYPE DISK FORMAT F:\backup\%U.bak; BACKUP DATABASE PLUS ARCHIVELOG; DELETE NOPROMPT OBSOLETE; RELEASE CHANNEL ch1; }制定备份验证计划定期如每月在测试环境恢复备份验证备份的有效性。6.4 监控与告警设置使用Oracle Enterprise Manager Database Express虽然功能比Cloud Control简略但EM Express提供了基本的性能概览如ASH分析、顶级SQL、存储管理和配置管理足够用于日常健康检查。配置预警在SQLPlus中可以设置一些基本的阈值告警例如表空间使用率超过85%时发邮件需要配置SMTP服务器。或者更简单的方法是写一个批处理脚本定期用SQLPlus检查关键指标并记录到日志文件。Windows事件查看器定期查看“Windows日志”-“应用程序”中是否有来自“Oracle”源的错误或警告事件。整个安装和初步调优过程就像是在一个老地基上建造一座现代化的数据中心需要耐心和细致的规划。每一步的决策从目录规划到参数设置都影响着系统未来的稳定性和可维护性。我个人的体会是在Windows上部署Oracle权限和路径问题是两大“雷区”而详细的日志是排雷的唯一探测器。当你看到SQL提示符稳定出现应用能够顺畅连接时之前所有的繁琐检查都是值得的。最后别忘了在系统稳定运行一段时间后为整个Windows Server 2012 R2虚拟机或物理机做一个完整的快照或系统镜像备份这将是你在面对不可预知系统故障时最可靠的“后悔药”。
返回列表