ARTICLE DETAIL

资讯详情

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

Oracle 19c RPM安装全解析:从原理到实战部署指南

Oracle 19c RPM安装全解析:从原理到实战部署指南 1. 项目概述为什么选择RPM方式安装Oracle 19c在数据库运维和DBA的日常工作中Oracle数据库的安装部署是基础中的基础但也是最容易“翻车”的环节之一。传统的图形界面GUI安装方式虽然直观但在生产环境的Linux服务器上尤其是在无图形界面的最小化安装系统中往往显得笨重且依赖众多。而基于RPM包的安装方式则提供了一条更贴近系统原生管理、更易于脚本化和自动化的路径。我接触过不少从Oracle 11g/12c升级上来的朋友初次面对19c的RPM安装包时可能会觉得有些陌生。毕竟过去我们更习惯解压一个巨大的runInstaller文件然后在一个图形向导里点点点。但当你管理着几十上百台服务器需要批量、标准化部署时RPM方式的优势就凸显出来了。它把复杂的依赖检查、目录创建、用户组配置等前置工作都封装在了那个小小的.rpm文件里。你只需要像安装其他系统软件一样一个yum或rpm -ivh命令配合一个响应文件就能完成大部分繁琐的初始化工作。这次我们就来彻底拆解基于RPM包安装Oracle 19c的全过程。我会把重点放在“为什么”要这么做以及每个步骤背后的逻辑而不仅仅是告诉你敲什么命令。无论是为了搭建开发测试环境还是为生产部署做准备掌握这套方法都能让你对Oracle在Linux系统上的“生存状态”有更深刻的理解。2. 环境准备与核心原理剖析2.1 系统环境要求与兼容性检查在开始之前我们必须确保操作系统环境满足Oracle 19c的最低要求。Oracle 19c RPM包主要针对Oracle Linux、Red Hat Enterprise Linux (RHEL) 及其衍生版本如CentOS进行了优化和测试。我强烈建议使用Oracle Linux 7.9或8.x因为这是Oracle官方“亲儿子”兼容性最好甚至内核都包含了针对数据库性能的特定优化如UEK内核。如果你使用的是RHEL或CentOS务必检查其具体版本。例如Oracle 19c (19.3) 官方支持RHEL/CentOS 7.4-7.9以及8.0-8.8。使用不受支持的版本可能在安装过程中遇到无法预料的库依赖问题甚至影响后续的稳定性。检查命令很简单cat /etc/os-release或者uname -r除了版本内存和交换空间是硬门槛。对于企业版安装官方建议至少2GB内存但实际生产环境根据数据量和并发需求8GB是起步价。交换空间Swap的规则通常是当物理内存小于2GB时Swap应为物理内存的1.5倍2GB到16GB之间Swap等于物理内存超过16GBSwap至少16GB。你可以用free -h和swapon -s来查看。磁盘空间是另一个关键点。RPM安装方式默认会将Oracle Home安装在/opt/oracle目录下数据库文件则放在你指定的ORACLE_BASE如/u01/app/oracle中。一个完整的Oracle Home大约需要8-10GB空间而数据文件区域则根据你的数据量来定初期准备20GB以上是稳妥的。使用df -h命令仔细规划你的挂载点。注意很多新手会忽略/tmp目录的空间。Oracle安装程序在解压和临时文件处理时需要用到它建议/tmp至少有1GB可用空间否则可能在安装中途报错。2.2 RPM安装包解析与获取途径Oracle 19c的RPM安装包并不是一个单一的“数据库安装包”。它实际上是一套包的组合这种设计体现了Linux软件管理的模块化思想。主要包含以下两个核心RPM包oracle-database-preinstall-19c 这是前置配置包也是RPM安装方式的精髓所在。它的作用是在你安装数据库软件之前自动完成一整套繁琐的系统配置。包括创建操作系统用户和组oracle,dba,oper等。修改内核参数/etc/sysctl.conf中的shmmax,semmsl等以优化数据库性能。设置用户资源限制/etc/security/limits.conf如nofile文件描述符数量和nproc进程数。安装必要的依赖软件包如binutils,compat-libstdc,gcc,ksh,libaio等。这个包极大地简化了安装流程避免了手动配置时容易出现的遗漏和错误。oracle-database-ee-19c(或-se2-19c): 这是数据库软件本体包。ee代表企业版se2代表标准版2。安装这个包才会真正将Oracle 19c的二进制文件、库文件、配置文件部署到你的系统上。如何获取这些包最正规的途径是从Oracle官方软件交付云Oracle Software Delivery Cloud下载。你需要一个免费的Oracle账户。登录后搜索“Oracle Database 19c”选择对应的Linux x86-64版本在下载列表中寻找带有“Preinstall”和“Database”字样的RPM包。对于内网或无法直接下载的环境你可以先在一台能联网的同类系统上配置好Oracle的YUM仓库然后使用yum download命令将RPM包及其依赖下载到本地再进行离线分发和安装。这本身就是运维标准化的一部分。2.3 响应文件Response File的作用与定制如果说RPM包是“食材”那么响应文件就是“菜谱”。在非交互式静默安装中响应文件db_install.rsp决定了数据库安装的所有细节。即使在RPM安装后配置数据库时它也同样关键。RPM安装方式通常包含两个阶段1) 用RPM安装软件2) 用/opt/oracle/runInstaller或dbca静默模式配置数据库实例。第二阶段就需要响应文件。你需要重点关注响应文件中的以下几个部分并根据你的环境进行定制oracle.install.responseFileVersion: 响应文件版本保持默认即可。oracle.install.option: 安装选项通常选择INSTALL_DB_SWONLY仅安装数据库软件或INSTALL_DB_AND_CONFIG安装并创建数据库。对于生产环境我倾向于先只安装软件INSTALL_DB_SWONLY然后再用dbca单独创建数据库这样步骤更清晰也便于回滚。ORACLE_HOSTNAME: 服务器的主机名。务必确保/etc/hosts文件中有正确的主机名到IP地址的映射特别是对于单机环境需要将主机名指向127.0.0.1或本地IP。UNIX_GROUP_NAME: Oracle软件所属的操作系统组通常是dba。INVENTORY_LOCATION: Oracle清单目录一般设为/u01/app/oraInventory。ORACLE_HOME: Oracle主目录RPM安装默认是/opt/oracle/product/19c/dbhome_1。ORACLE_BASE: Oracle基目录如/u01/app/oracle。这是所有Oracle相关文件数据、日志、跟踪文件的顶层目录。oracle.install.db.config.starterdb.type: 要创建的数据库类型如GENERAL_PURPOSE通用目的。oracle.install.db.config.starterdb.globalDBName和SID: 全局数据库名和实例名。oracle.install.db.config.starterdb.password.ALL: 为所有管理用户SYS, SYSTEM等设置统一密码。生产环境强烈建议为不同用户设置不同复杂密码或在安装后立即修改。一个常见的做法是先从一个模板响应文件开始通常位于安装包解压后的response/目录复制一份然后像填问卷一样修改上述关键参数。这样能最大程度减少错误。3. 分步实操从RPM安装到数据库就绪3.1 阶段一系统初始化与Preinstall包安装在拿到RPM包之后不要急着安装数据库本体。我们首先利用oracle-database-preinstall-19c包来搭建一个“Oracle友好”的系统环境。步骤1上传RPM包将下载好的oracle-database-preinstall-19c-1.0-2.el7.x86_64.rpm版本号可能不同上传到服务器的某个目录例如/tmp。步骤2安装Preinstall包使用yum localinstall命令安装这个命令的好处是会自动解决本地RPM包的依赖关系。cd /tmp sudo yum localinstall -y oracle-database-preinstall-19c*.rpm安装过程中你会看到终端滚动输出信息显示它正在创建用户、组、修改内核参数、安装依赖包。整个过程是全自动的。步骤3验证Preinstall结果安装完成后进行以下验证检查用户和组id oracle。应该能看到用户oracle属于dba和oper组。检查内核参数sysctl -p重新加载参数然后用sysctl -a | grep -E shm|sem|file-max查看关键参数是否已生效如kernel.shmall,kernel.shmmax,fs.file-max。检查资源限制切换到oracle用户su - oracle执行ulimit -Sn和ulimit -Hn查看软硬文件描述符限制是否已设置为1024和65536。实操心得有时yum localinstall可能会因为公网YUM源速度慢而卡在下载依赖包上。如果你的系统是内网环境最好提前搭建一个本地YUM仓库包含epel-release等常用源。另一个坑是Preinstall包设置的内核参数可能不符合你服务器的超大内存配置例如shmmax默认值可能偏小。对于内存超过64GB的服务器安装后务必手动检查并调整/etc/sysctl.conf中的kernel.shmmax建议设置为物理内存大小和kernel.shmall建议设置为内存大小/页大小页大小通常为4KB。3.2 阶段二安装数据库软件本体系统环境准备好后就可以安装数据库软件了。步骤1安装企业版RPM包sudo yum localinstall -y oracle-database-ee-19c-*.rpm这个安装过程会比Preinstall包时间长因为它要将数GB的Oracle二进制文件和库文件解压并部署到/opt/oracle/product/19c/dbhome_1目录下。步骤2理解安装后的目录结构安装完成后熟悉一下关键目录/opt/oracle/product/19c/dbhome_1: 这就是ORACLE_HOME。里面包含bin可执行文件如sqlplus,rman、lib库文件、network/admin网络配置文件如tnsnames.ora、dbs初始化参数文件spfile存放处等。/u01/app/oracle: 这是ORACLE_BASE假设你之前通过Preinstall包或手动设置好了。下面会有product、admin、fast_recovery_area、oradata等子目录的链接或实际位置。/u01/app/oraInventory: Oracle中央清单目录记录了所有Oracle软件的安装信息。步骤3设置环境变量为了让系统识别Oracle命令需要为oracle用户设置环境变量。编辑oracle用户的家目录下的.bash_profile文件su - oracle vi ~/.bash_profile在文件末尾添加以下内容export ORACLE_HOME/opt/oracle/product/19c/dbhome_1 export ORACLE_BASE/u01/app/oracle export ORACLE_SIDorcl # 替换为你的实例名 export PATH$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH$ORACLE_HOME/lib:$LD_LIBRARY_PATH export NLS_LANGAMERICAN_AMERICA.AL32UTF8 # 设置字符集非常重要然后使配置生效source ~/.bash_profile。现在你输入sqlplus / as sysdba应该能看到SQL*Plus的提示符尽管数据库实例还没创建。3.3 阶段三静默创建数据库实例软件安装好了但还没有可用的数据库。我们需要创建第一个数据库实例。这里使用Oracle的数据库配置助手DBCA的静默模式。步骤1准备响应文件从ORACLE_HOME的模板中复制一个响应文件并修改cd $ORACLE_HOME/assistants/dbca/templates/ cp General_Purpose.dbc /tmp/my_db.rsp # 实际上更常用的是.dbca.rsp格式的响应文件。我们也可以直接使用DBCA的命令行参数。更直接的方式是使用DBCA命令行参数这对于创建第一个数据库非常方便。步骤2执行DBCA静默创建以下命令创建一个名为orcl的通用目的数据库并指定文件存放位置dbca -silent \ -createDatabase \ -templateName General_Purpose.dbc \ -gdbname orcl -sid orcl \ -characterSet AL32UTF8 \ -sysPassword SysPassword123 \ -systemPassword SystemPassword123 \ -createAsContainerDatabase false \ -storageType FS \ -datafileDestination /u01/app/oracle/oradata \ -enableArchive false \ -memoryMgmtType AUTO_SGA \ -memoryPercentage 40 \ -recoveryAreaDestination /u01/app/oracle/fast_recovery_area \ -recoveryAreaSize 40960 \ -initParams db_create_file_dest/u01/app/oracle/oradata参数解释-silent: 静默模式。-createDatabase: 创建数据库。-templateName: 使用通用模板。-gdbname和-sid: 全局数据库名和实例名。-characterSet: 字符集务必根据应用需求设置一旦创建极难修改。AL32UTF8是通用的Unicode字符集。-sysPassword/-systemPassword: 为SYS和SYSTEM用户设置密码。生产环境请使用复杂密码。-createAsContainerDatabase false: 创建非容器数据库19c默认是容器数据库CDB对于从旧版本迁移或简单应用可以先使用非CDB。-datafileDestination: 数据文件存放路径。-enableArchive false: 先不开启归档模式。生产环境必须开启但初期测试可以先关闭。-memoryPercentage: 自动管理SGA和PGA并分配40%的物理内存给Oracle。这是19c的默认推荐方式简化了内存调优。步骤3等待创建完成并验证命令执行后DBCA会在后台进行创建工作耗时从十几分钟到半小时不等取决于磁盘性能。完成时会提示“Database creation complete.”。 验证数据库状态sqlplus / as sysdba SQL SELECT name, open_mode FROM v$database; SQL SELECT instance_name, status FROM v$instance;应该能看到数据库名为ORCL状态为OPEN实例状态为OPEN。踩坑记录静默创建时最容易出错的地方是密码复杂度和目录权限。Oracle 19c默认启用了强密码校验如果你的密码过于简单即使安装成功后续登录也可能失败。建议在安装前先用orapwd命令创建一个密码文件测试一下。另外确保/u01/app/oracle/oradata等目录的所有者和权限是oracle:dba并且oracle用户有写权限。4. 安装后关键配置与优化要点4.1 网络配置与监听器管理数据库创建好了但远程客户端还无法连接。我们需要配置监听器。步骤1启动监听器监听器进程tnslsnr负责接收客户端连接请求。首先检查监听器状态lsnrctl status如果未启动则启动它lsnrctl start步骤2配置监听器可选默认的监听器配置文件$ORACLE_HOME/network/admin/listener.ora可能只配置了本地服务。如果需要静态注册服务或修改端口默认1521可以编辑此文件。一个简单的示例如下LISTENER (DESCRIPTION_LIST (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST your_hostname)(PORT 1521)) ) )修改后需要重启监听器lsnrctl reload。步骤3配置TNS名称解析为了让客户端包括本机的SQL*Plus能方便地连接需要配置tnsnames.ora文件同样在$ORACLE_HOME/network/admin/目录下。ORCL (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST localhost)(PORT 1521)) (CONNECT_DATA (SERVER DEDICATED) (SERVICE_NAME orcl) # 如果是CDB这里可能是 orclpdb ) )配置完成后就可以使用sqlplus username/passwordorcl进行网络连接了。4.2 基础性能与安全初始化设置刚安装好的数据库使用的是默认参数需要进行一些基础调优和安全加固。1. 内存管理我们创建时使用了-memoryPercentage 40这是自动内存管理AMM。对于Linux系统Oracle更推荐使用自动共享内存管理ASMM和手动PGA管理。可以修改ALTER SYSTEM SET memory_target0 SCOPESPFILE; ALTER SYSTEM SET sga_target4G SCOPESPFILE; -- 根据总内存调整 ALTER SYSTEM SET pga_aggregate_target1G SCOPESPFILE; ALTER SYSTEM SET sga_max_size4G SCOPESPFILE;修改后需要重启数据库生效。2. 进程和会话数默认的processes和sessions参数可能偏小对于有较多并发连接的应用需要调整ALTER SYSTEM SET processes500 SCOPESPFILE; ALTER SYSTEM SET sessions555 SCOPESPFILE;3. 密码策略与过期默认密码有效期是180天。对于不受此约束的测试环境可以禁用ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;4. 开启归档模式生产环境必做归档模式是数据库恢复的基础。-- 1. 关闭数据库 SHUTDOWN IMMEDIATE; -- 2. 启动到mount状态 STARTUP MOUNT; -- 3. 开启归档 ALTER DATABASE ARCHIVELOG; -- 4. 打开数据库 ALTER DATABASE OPEN; -- 5. 确认 ARCHIVE LOG LIST;同时需要设置归档日志目的地db_recovery_file_dest和大小db_recovery_file_dest_size。4.3 配置开机自启动服务我们希望服务器重启后Oracle实例和监听器能自动启动。在RHEL/CentOS 7及以上版本使用systemd服务。步骤1创建Oracle数据库服务文件创建文件/etc/systemd/system/oracle-19c.service[Unit] DescriptionOracle Database 19c Afternetwork.target [Service] Typeforking EnvironmentORACLE_HOME/opt/oracle/product/19c/dbhome_1 EnvironmentORACLE_SIDorcl Useroracle Groupdba ExecStart/opt/oracle/product/19c/dbhome_1/bin/dbstart $ORACLE_HOME ExecStop/opt/oracle/product/19c/dbhome_1/bin/dbshut $ORACLE_HOME Restarton-abort [Install] WantedBymulti-user.target步骤2创建监听器服务文件创建文件/etc/systemd/system/oracle-listener-19c.service[Unit] DescriptionOracle Listener 19c Afteroracle-19c.service [Service] Typeforking Useroracle Groupdba EnvironmentORACLE_HOME/opt/oracle/product/19c/dbhome_1 ExecStart$ORACLE_HOME/bin/lsnrctl start ExecStop$ORACLE_HOME/bin/lsnrctl stop Restarton-abort [Install] WantedBymulti-user.target步骤3启用并测试服务sudo systemctl daemon-reload sudo systemctl enable oracle-19c sudo systemctl enable oracle-listener-19c sudo systemctl start oracle-19c sudo systemctl start oracle-listener-19c sudo systemctl status oracle-19c配置成功后每次服务器重启数据库和监听器都会自动启动。5. 常见问题排查与深度优化指南5.1 安装与配置过程中的典型报错处理即使按照步骤操作也可能会遇到问题。这里记录几个我遇到的高频错误及解决方法。问题1执行dbca静默安装时报错“ORA-27125: unable to create shared memory segment”现象数据库创建过程中在内存分配阶段失败。原因操作系统内核参数kernel.shmmax或kernel.shmall设置过小或者/dev/shmtmpfs空间不足。排查检查内核参数sysctl -a | grep shm。确保kernel.shmmax大于你打算分配给SGA的内存大小例如8GB内存可设为8589934592。kernel.shmall应至少为物理内存/页大小。检查/dev/shmdf -h /dev/shm。Oracle AMM自动内存管理会使用这里。如果太小可以修改/etc/fstab临时挂载一个更大的tmpfs或者改用ASMM。解决编辑/etc/sysctl.conf调整参数后执行sysctl -p生效。如果使用AMM确保/dev/shm至少有SGA大小。问题2安装Preinstall包时依赖包下载失败或冲突现象yum localinstall报错提示某个包如compat-libstdc无法安装。原因系统YUM源配置问题或已有旧版本包冲突。解决检查网络和YUM源yum clean all yum makecache。手动安装缺失依赖根据错误提示用yum install单独安装。处理冲突有时系统自带的包版本过高或过低。可以尝试用yum install指定版本号或者使用--skip-broken参数跳过但需谨慎评估影响。问题3数据库创建成功后sqlplus / as sysdba可以登录但远程连接报“ORA-12541: TNS:no listener”现象本地操作系统认证登录正常但通过网络连接失败。原因监听器未启动或监听地址配置错误或防火墙阻止。排查lsnrctl status查看监听器状态和监听的地址。netstat -tlnp | grep 1521查看1521端口是否被监听以及监听的是哪个IP0.0.0.0还是127.0.0.1。firewall-cmd --list-all如果使用firewalld检查防火墙规则是否放行了1521端口。解决启动监听器lsnrctl start。修改listener.ora将HOST改为服务器实际IP或0.0.0.0安全风险需知悉并lsnrctl reload。开放防火墙端口sudo firewall-cmd --permanent --add-port1521/tcp sudo firewall-cmd --reload。问题4使用systemctl启动Oracle服务失败现象systemctl status oracle-19c显示失败日志中可能有环境变量未定义的错误。原因systemd服务文件中没有正确加载Oracle用户的环境变量特别是ORACLE_HOME和ORACLE_SID。解决确保服务文件[Service]部分通过Environment指令明确定义了所有必需的环境变量。也可以让服务脚本先source oracle用户的.bash_profile但更推荐在服务文件中直接定义。5.2 性能基线检查与初步优化建议安装完成后建立一个简单的性能基线便于日后对比。1. 检查关键视图-- 检查实例状态和启动时间 SELECT instance_name, status, startup_time FROM v$instance; -- 检查表空间使用情况 SELECT tablespace_name, round(used_percent, 2) used_pct FROM dba_tablespace_usage_metrics; -- 检查内存组件大小 SELECT component, current_size/1024/1024 size_mb FROM v$memory_dynamic_components WHERE current_size ! 0;2. 收集AWR基线需要诊断包许可 对于企业版可以手动创建一个AWR快照基线。EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT(); -- 等待一段时间如1小时后再创建一个快照 EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT(); -- 然后可以生成这两个快照之间的AWR报告3. 初步优化建议日志文件检查重做日志组大小和数量。默认的200MB可能偏小对于频繁提交的应用可以考虑增加到1GB或更大并增加组数如5组以避免“log file switch”等待事件。临时表空间确保临时表空间是临时文件类型Tempfile并且大小足够避免大型排序操作失败。监控等待事件在业务运行一段时间后查看v$system_event了解主要的等待事件类型如db file sequential read,log file sync等为后续针对性优化提供方向。5.3 备份与恢复策略的早期规划“安装完成”只是开始确保数据安全才是DBA工作的核心。在投入生产前必须规划好备份策略。1. 使用RMAN进行物理备份 RMAN是Oracle推荐的备份工具。创建一个简单的每周全备、每天增量的脚本-- 连接到RMAN rman target / -- 执行备份 RUN { ALLOCATE CHANNEL ch1 DEVICE TYPE DISK; BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT; BACKUP CURRENT CONTROLFILE; RELEASE CHANNEL ch1; }可以将这些命令写入一个脚本如/home/oracle/scripts/full_backup.rman然后通过cron定时任务调用。2. 测试恢复定期进行恢复演练是唯一能证明备份有效的办法。可以在另一台测试服务器上尝试用备份集恢复数据库。步骤包括准备一个空的服务器安装相同版本的Oracle软件仅安装软件然后使用RMAN进行恢复和恢复。3. 归档日志管理 如果开启了归档模式必须定期清理旧的归档日志避免撑满磁盘。可以在RMAN备份脚本中加入DELETE ARCHIVELOG ALL BACKED UP 1 TIMES TO DEVICE TYPE DISK;或者在cron中配置定时删除。整个基于RPM的Oracle 19c安装和初始化过程就像搭建一个精密的仪器。RPM包帮你准备好了标准的螺丝和框架系统环境而你的角色则是根据蓝图响应文件和配置仔细地组装和调试每一个部件数据库实例、网络、内存、备份。这套方法的最大优势在于可重复性和可脚本化。一旦你成功走通一遍就可以将整个过程上传RPM、安装、运行DBCA命令、基础配置封装成一个Shell脚本。下次再需要部署可能只需要修改几个参数运行一下脚本喝杯咖啡的功夫一个标准化的Oracle数据库环境就准备就绪了。这对于需要频繁搭建测试环境或进行自动化运维的团队来说价值巨大。
返回列表