
1. 项目概述为什么选择Oracle 19c如果你正在规划一个新的企业级数据库项目或者准备将老旧的11g、12c系统进行升级那么Oracle 19c大概率已经进入了你的技术选型清单。作为Oracle长期支持版本Long Term Support Release中的一员19c不仅继承了12c和18c引入的多租户、内存列存储等先进特性更在稳定性、性能和自动化管理方面达到了一个新的高度。简单来说它就像是数据库领域的“旗舰机”集成了过去几年最成熟、最可靠的技术并承诺提供长达数年的支持与补丁更新这对于追求系统长期稳定运行的企业环境至关重要。我接触过不少从零开始部署Oracle的朋友大家普遍反映安装过程本身并不复杂但其中的“坑”却不少。比如操作系统参数没调对安装到一半报错下载的安装包版本不对白忙活一场或是安装完成后基础配置没做好性能和安全都存在隐患。这篇内容我就以一个老DBA的视角带你完整走一遍Oracle 19c在Linux环境下的下载与安装全流程。我会把每一步背后的原理、常见的“坑”以及我自己的实操心得都揉碎了讲清楚目标就是让你看完之后能独立、顺利地在自己的服务器上搭建起一个稳定可用的Oracle 19c数据库环境。无论你是初学者还是有一定基础想系统梳理一遍的朋友这篇内容都能给你提供直接的参考。2. 安装前的核心准备工作很多人安装失败问题往往不是出在安装步骤本身而是在准备工作没做到位。这一部分就像盖房子打地基地基打牢了后面才能顺风顺水。2.1 操作系统与硬件资源核查Oracle数据库对运行环境有明确的要求盲目安装必然碰壁。首先你需要确认你的服务器操作系统是否在官方支持列表内。对于19c主流的选择是Red Hat Enterprise Linux (RHEL) 7.x/8.x、Oracle Linux 7.x/8.x 或 SUSE Linux Enterprise Server (SLES) 12/15。我强烈建议使用Oracle Linux因为它与Oracle数据库的兼容性最好且能免费从Oracle官方yum源获取所有依赖包。硬件方面以下是必须满足的最低要求但生产环境建议远高于此内存至少1 GB RAM仅安装软件但要运行数据库实例官方建议至少2 GB。对于稍有负载的测试或生产环境8 GB是起步价。交换空间这是一个关键参数。如果物理内存RAM在1 GB到2 GB之间交换空间应为RAM的1.5倍2 GB到16 GB之间交换空间等于RAM大小超过16 GB交换空间固定为16 GB。你可以用free -h或swapon -s命令查看。磁盘空间安装软件本身需要约6.5 GB的临时空间/tmp和约7 GB的安装目录空间如/u01/app/oracle。这还不包括你未来数据库文件数据文件、日志文件等占用的空间。所以为/根分区和/u01等数据分区预留充足的磁盘至关重要。内核参数Linux内核参数直接影响数据库的性能和稳定性。以下是一些核心参数需要在/etc/sysctl.conf文件中配置并执行sysctl -p生效fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 1073741824 # 总共享内存页数通常设为物理内存大小字节/ 页大小getconf PAGE_SIZE kernel.shmmax 4398046511104 # 最大单个共享内存段建议大于物理内存 kernel.shmmni 4096 kernel.sem 250 32000 100 128 net.ipv4.ip_local_port_range 9000 65500 net.core.rmem_default 262144 net.core.rmem_max 4194304 net.core.wmem_default 262144 net.core.wmem_max 1048576注意kernel.shmall和kernel.shmmax的计算需要根据你的实际物理内存来调整设置不当会导致数据库无法启动。2.2 软件包的获取与版本选择这是另一个容易踩坑的环节。Oracle 19c的安装介质主要分两种ZIP包下载这是最常见的方式。你需要前往Oracle官方网站的下载页面。搜索“Oracle Database 19c Software Downloads”选择对应的Linux版本如Linux x86-64。这里你会看到两个主要的安装包LINUX.X64_193000_db_home.zip用于独立服务器安装和LINUX.X64_193000_grid_home.zip用于RAC集群环境。对于单实例数据库我们下载前者即可。YUM仓库安装仅限Oracle Linux这是更便捷的方式。如果你的服务器是Oracle Linux 7/8可以直接配置Oracle的官方YUM仓库然后通过yum install oracle-database-ee-19c命令来安装。这种方式会自动解决大部分依赖包问题非常适合新手和快速部署。版本选择心得我个人的习惯是对于学习和测试环境优先使用YUM安装省时省力。对于生产环境我更倾向于下载ZIP包进行手动安装因为这样我对安装路径、组件选择有完全的控制权也便于后续的补丁管理和版本回退。无论哪种方式请务必记下你下载的完整版本号如19.3.0.0.0这在后续排查问题时非常有用。2.3 操作系统用户、组与目录规划Oracle不建议使用root用户直接安装和运行数据库。我们需要创建专用的操作系统用户和组。创建核心组通常需要创建oinstall软件安装组、dba数据库管理员组和oper操作员组可选。groupadd oinstall groupadd dba groupadd oper创建Oracle用户创建用户oracle将其主要组设为oinstall附加组设为dba和oper。useradd -g oinstall -G dba,oper oracle passwd oracle # 为oracle用户设置密码规划目录结构一个清晰的目录结构是良好运维的开始。我常用的规划如下/u01/app/oracle这是ORACLE_BASE所有Oracle产品的基础目录。/u01/app/oracle/product/19.3.0/dbhome_1这是ORACLE_HOME19c数据库软件的安装目录。/u01/app/oradata存放数据库数据文件、控制文件、重做日志文件等。/u01/app/oracle/fast_recovery_area存放归档日志和备份文件快速恢复区。 使用root用户创建这些目录并将所有权赋予oracle:oinstallmkdir -p /u01/app/oracle /u01/app/oradata /u01/app/oracle/fast_recovery_area chown -R oracle:oinstall /u01 chmod -R 775 /u013. 详细安装步骤与配置解析准备工作就绪后我们就可以开始正式的安装之旅了。这里我以手动解压ZIP包、使用图形化安装器Oracle Universal Installer, OUI的方式为例进行详解因为这种方式最具通用性能让你理解整个安装的脉络。3.1 环境变量配置与依赖包安装在开始安装前我们需要为oracle用户配置好基础环境。配置.bash_profile以oracle用户登录编辑其家目录下的.bash_profile文件。su - oracle vi ~/.bash_profile在文件末尾添加以下核心环境变量export ORACLE_BASE/u01/app/oracle export ORACLE_HOME$ORACLE_BASE/product/19.3.0/dbhome_1 export ORACLE_SIDorcl # 你的数据库实例名可自定义 export PATH$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH$ORACLE_HOME/lib:/lib:/usr/lib export NLS_LANGAMERICAN_AMERICA.AL32UTF8 # 设置字符集非常重要保存后执行source ~/.bash_profile使配置生效。实操心得NLS_LANG这个变量极其重要它决定了安装器、后续SQL*Plus等工具的客户端字符集。如果这里设置错误比如与服务端字符集不匹配会导致中文显示乱码。在生产中务必与你的应用系统要求的字符集保持一致常用的有AL32UTF8Unicode或ZHS16GBK。安装依赖包即使手动安装也需要一些系统库的支持。以Oracle Linux 7为例可以使用以下命令安装需要root权限yum install -y binutils compat-libcap1 compat-libstdc-33 gcc gcc-c glibc glibc-devel ksh libaio libaio-devel libgcc libstdc libstdc-devel libXi libXtst make sysstat unixODBC unixODBC-devel安装完成后可以运行Oracle提供的预安装检查脚本$ORACLE_HOME/runInstaller -executePrereqs来验证环境是否满足要求需要先解压安装包。3.2 启动OUI图形化安装器将下载好的LINUX.X64_193000_db_home.zip上传到服务器例如/u01/software目录。然后解压cd /u01/software unzip LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.3.0/dbhome_1解压后进入解压目录启动安装器。由于是图形界面我们需要确保服务器安装了图形环境或者通过X11转发在本地显示。cd /u01/app/oracle/product/19.3.0/dbhome_1 ./runInstaller如果一切正常你会看到Oracle Universal Installer的图形窗口。如果提示DISPLAY变量未设置你需要配置X11转发对于远程连接或在服务器本机图形界面下操作。3.3 安装器关键步骤与选项解读安装器的步骤很多以下几个是关键决策点理解它们能帮你安装出更符合需求的数据库。配置选项选择“创建和配置数据库”。如果你想先只安装软件以后再手动建库可以选择“仅安装数据库软件”。对于新手我建议选择前者一气呵成。系统类选择“服务器类”。这是功能最全的安装类型。“桌面类”仅适用于简单的个人学习机。安装类型选择“单实例数据库安装”。如果你要安装RAC真正应用集群则需要额外的Grid Infrastructure安装和配置。安装位置这里会自动读取你之前设置的ORACLE_BASE和ORACLE_HOME环境变量请仔细核对路径是否正确。产品清单目录保持默认或指定一个路径即可用于记录安装的组件信息。配置类型选择“典型安装”。高级安装可以让你详细配置存储类型、内存管理、字符集等但典型安装已能满足绝大多数场景且会自动配置很多优化参数。数据库文件位置填写你之前规划的/u01/app/oradata。数据库版本选择“企业版”。字符集务必选择AL32UTF8Unicode UTF-8编码这是目前最通用、兼容性最好的字符集除非有明确的遗留系统要求使用ZHS16GBK。全局数据库名格式通常为数据库名.域名例如orcl.example.com。如果无域名可以就用orcl。管理口令为SYS、SYSTEM等管理用户设置口令。务必设置一个强密码生产环境中SYS和SYSTEM的口令应不同并符合安全规范。先决条件检查安装器会自动检查系统配置内核参数、依赖包、空间等。如果出现警告通常是某些参数值略低于推荐值但高于最小值可以勾选“忽略所有”继续。如果出现错误红色则必须按照提示在服务器上修复后才能继续。概要回顾所有安装配置信息确认无误后点击“安装”。3.4 安装过程中的root脚本执行软件安装到一定阶段安装器会弹出提示窗口要求你以root身份在两个终端中分别执行两个脚本。这个步骤必须在安装器提示时立即执行否则安装会挂起等待。第一个脚本通常是/u01/app/oracle/oraInventory/orainstRoot.sh。它用于创建oraInventory目录的权限。第二个脚本是$ORACLE_HOME/root.sh。这个脚本非常重要它会执行一系列需要root权限的操作比如将Oracle可执行文件路径加入系统路径、创建必要的系统服务等。执行过程中可能会有一些提示信息通常按回车选择默认即可。执行完这两个脚本后回到安装器窗口点击“确定”安装和数据库创建过程将继续。4. 安装后配置与基础验证安装器显示“安装成功”并不意味着万事大吉我们还需要进行一些关键的安装后检查和基础配置。4.1 数据库状态与服务验证检查数据库实例状态以oracle用户登录使用sqlplus连接到数据库。sqlplus / as sysdba SQL SELECT INSTANCE_NAME, STATUS, DATABASE_STATUS FROM V$INSTANCE;如果看到STATUS为OPENDATABASE_STATUS为ACTIVE说明数据库实例已正常启动。检查监听器状态监听器负责接收客户端连接请求。同样使用oracle用户。lsnrctl status查看输出中是否显示“Listening Endpoints Summary”下有活动的监听地址如(DESCRIPTION(ADDRESS(PROTOCOLtcp)(HOSTyour_hostname)(PORT1521)))并且状态为“READY”或“BLOCKED”。设置开机自启动为了服务器重启后数据库能自动启动我们需要配置oratab文件和系统服务。编辑/etc/oratab文件找到你的ORACLE_SID对应行将最后的N改为Y。例如orcl:/u01/app/oracle/product/19.3.0/dbhome_1:Y创建并启用systemd服务适用于Oracle Linux 7/8, RHEL 7/8。创建一个服务文件/etc/systemd/system/oracle-19c.service内容如下路径根据实际情况修改[Unit] DescriptionOracle Database 19c Afternetwork.target [Service] Typeforking EnvironmentORACLE_HOME/u01/app/oracle/product/19.3.0/dbhome_1 EnvironmentORACLE_SIDorcl EnvironmentLD_LIBRARY_PATH$ORACLE_HOME/lib:/lib:/usr/lib ExecStart$ORACLE_HOME/bin/dbstart $ORACLE_HOME ExecStop$ORACLE_HOME/bin/dbshut $ORACLE_HOME Useroracle Groupoinstall [Install] WantedBymulti-user.target然后执行systemctl daemon-reload systemctl enable oracle-19c systemctl start oracle-19c # 测试启动4.2 基础安全与网络配置修改默认用户密码安装后应立即修改SYS、SYSTEM等核心管理用户的密码。ALTER USER sys IDENTIFIED BY 你的新强密码; ALTER USER system IDENTIFIED BY 你的新强密码;配置监听器允许远程连接默认监听器可能只监听localhost。编辑$ORACLE_HOME/network/admin/listener.ora确保HOST指向服务器IP或主机名而不是localhost。修改后重启监听器lsnrctl reload。配置防火墙如果系统防火墙如firewalld开启需要放行Oracle监听端口默认1521。firewall-cmd --permanent --add-port1521/tcp firewall-cmd --reload5. 常见问题与故障排查实录即使按照步骤操作也可能会遇到各种问题。这里我总结几个最常见的问题和排查思路。5.1 OUI启动失败或运行异常问题执行./runInstaller后无反应或报错“无法打开显示”。原因DISPLAY环境变量未正确设置或服务器无图形界面且未配置X11转发。解决对于有本地图形界面的服务器确保以图形界面登录的用户执行命令。对于远程连接如通过Xshell, MobaXterm等确保客户端支持X11转发并已开启该功能然后在SSH连接时使用-X或-Y参数。连接后在终端里执行echo $DISPLAY应显示类似localhost:10.0的值。如果无法使用图形界面可以采用静默安装模式。这需要先创建一个响应文件response file然后通过命令行安装。这是生产环境自动化部署的常用方式。./runInstaller -silent -responseFile /path/to/your_db_install.rsp5.2 先决条件检查失败问题在“先决条件检查”步骤出现大量红色错误如“物理内存不足”、“交换空间不足”、“内核参数xxx不满足”等。解决不要直接忽略。安装器给出的检查结果非常具体。内存/交换空间不足这是硬件问题需要扩容。可以尝试创建临时交换文件应急但生产环境必须保证物理资源充足。sudo dd if/dev/zero of/swapfile bs1M count4096 # 创建4G文件 sudo mkswap /swapfile sudo swapon /swapfile内核参数不满足根据安装器提示的错误信息精确修改/etc/sysctl.conf文件中的对应参数值。修改后执行sysctl -p生效然后回到安装器点击“重试”。缺少软件包根据缺失的包名使用yum install命令安装。有时包名可能略有不同可以用yum search 包名查找。5.3 数据库创建DBCA失败问题安装软件成功但在最后创建数据库时失败提示各种错误如“ORA-xxxxx”。排查思路查看日志这是最重要的步骤。数据库创建助手DBCA的日志位于$ORACLE_BASE/cfgtoollogs/dbca/数据库名目录下。仔细查看最新的.log文件错误信息通常非常明确。常见错误ORA-01034: ORACLE not available实例未启动。检查ORACLE_SID设置是否正确尝试手动启动sqlplus / as sysdba-startup。ORA-27125: unable to create shared memory segment共享内存参数shmall,shmmax设置不当。重新计算并调整/etc/sysctl.conf。权限问题确保/u01/app/oradata等数据目录的所有权和权限正确oracle:oinstall 通常755或775。手动建库如果自动创建反复失败可以放弃OUI的建库步骤先只安装软件。然后使用DBCA的静默模式或在图形界面下单独创建数据库这样能更清晰地看到每一步的进展和错误。5.4 监听器启动失败或客户端无法连接问题lsnrctl start失败或客户端能tnsping通但连接时报“无监听程序”。解决检查listener.ora和sqlnet.ora配置文件位于$ORACLE_HOME/network/admin的语法和路径是否正确。特别是HOST是否配置了正确的主机名或IP。检查端口1521是否被其他进程占用netstat -tulnp | grep 1521。检查防火墙规则是否已放行1521端口。检查服务器/etc/hosts文件确保主机名hostname命令输出能正确解析到本机IP127.0.0.1或实际IP。一个常见的错误是主机名只解析到了127.0.0.1导致远程客户端无法连接。需要确保主机名也解析到了服务器的网络IP。安装Oracle数据库是一个系统工程涉及操作系统、存储、网络、安全等多个层面。我的经验是耐心和仔细阅读日志是解决所有问题的关键。第一次安装可能会遇到各种小问题但一旦你成功走通整个流程并理解了每个步骤背后的意义以后再面对任何数据库环境搭建都会游刃有余。最后一个小建议在正式生产环境操作前务必在虚拟机上反复练习几遍形成自己的标准化安装检查清单。