Oracle 19c数据库在Linux环境下的完整安装与配置指南 📅 2026/8/13 11:39:31 1. 项目概述为什么选择Oracle以及安装前的关键决策如果你正在接触企业级应用开发、大型系统维护或者准备考取一些含金量高的数据库认证那么Oracle数据库几乎是一个绕不开的名字。它不像MySQL那样“平易近人”也不像一些新兴数据库那样标榜“简单易用”但它在金融、电信、政府等关键行业的核心系统中依然占据着不可动摇的地位。其强大的事务处理能力、极高的稳定性和安全性以及一套完整的企业级解决方案是许多重量级应用的基石。因此学会如何正确地获取和安装Oracle数据库是踏入这个领域非常扎实的第一步。很多人第一次接触Oracle安装时可能会被其相对复杂的步骤和众多的选项吓到。网上教程虽多但要么版本老旧要么语焉不详照着做常常卡在某个报错上。这篇内容我将基于最新的Oracle 19c版本在Linux以Oracle Linux 8为例环境下为你拆解从下载到安装完成的每一个环节。我会重点解释每个步骤背后的逻辑而不仅仅是告诉你“点这里点那里”。这样即使你未来面对不同版本或稍有差异的环境也能心中有数从容应对。本文适合有一定Linux基础希望亲手搭建一个Oracle环境用于学习、测试或开发的读者。2. 安装前的深度准备理解环境与规避“翻车”安装Oracle准备工作做得好能避免80%的后续问题。这一步绝不是简单地看看系统内存够不够它涉及到对软硬件环境的全面审视和规划。2.1 硬件与操作系统考量Oracle数据库对资源有一定要求。对于学习测试环境我建议的最低配置是2核CPU、4GB内存、40GB硬盘空间。但如果你想流畅地运行一些稍复杂的示例或测试8GB内存会是一个更舒适的起点。硬盘空间方面除了安装软件本身需要的约10GB你还需要为数据库文件、快速恢复区等预留空间总计建议不少于30GB。操作系统的选择至关重要。Oracle对其自有发行的Oracle Linux提供了最佳的支持和兼容性很多预检查项和依赖包都是为其优化的。当然主流的Red Hat Enterprise Linux (RHEL) 和 CentOS也是完全兼容的。我强烈建议尤其是新手直接使用Oracle Linux能省去大量排查兼容性问题的时间。本文将以Oracle Linux 8为例展开。注意尽量避免在非企业级Linux发行版如Ubuntu桌面版上安装虽然通过大量手动调整也能成功但过程中会遇到无数依赖包问题对于学习核心数据库知识而言这纯粹是精力浪费。2.2 软件包的获取官方途径与版本选择获取Oracle数据库软件唯一推荐的途径是访问Oracle Technology Network (OTN)官网。你需要注册一个免费的Oracle账户这个过程是必须的也是合法的。在下载页面你会看到多个版本。对于新学者我推荐Oracle Database 19c (19.3)的“Linux x86-64”版本。19c是当前最新的长期支持版本兼具了新特性和稳定性社区资料也最丰富。下载下来的通常是两个压缩包例如LINUX.X64_193000_db_home.zip数据库软件安装包。LINUX.X64_193000_grid_home.zip如果你要安装Oracle RAC集群才需要这个Grid Infrastructure包。对于单机学习环境我们只需要第一个。请务必核对下载文件的MD5或SHA256校验和官网会提供确保文件在下载过程中未损坏。一个损坏的安装包会在解压或安装中途报出各种诡异的错误。2.3 系统环境的精细配置这是准备工作的核心很多安装失败都源于此。我们需要创建一个专门的用户和组来运行Oracle这不仅是安全最佳实践也能让文件权限管理变得清晰。首先以root身份创建必要的用户组和用户groupadd -g 54321 oinstall groupadd -g 54322 dba groupadd -g 54323 oper useradd -u 54321 -g oinstall -G dba,oper oracle echo “your_password” | passwd --stdin oracle这里oinstall是Oracle软件的所有者组dba是数据库管理权限组oper是操作员组。将oracle用户同时加入dba和oper组方便后续管理。接下来配置内核参数。这些参数调整了操作系统层面对于内存、进程、网络等的限制以满足Oracle高性能运行的需求。编辑/etc/sysctl.conf文件添加或修改以下参数fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 2097152 kernel.shmmax 4294967295 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修改后执行sysctl -p使配置立即生效。shmmax定义了单个共享内存段的最大字节数对于Oracle的SGA系统全局区设置至关重要。然后配置用户资源限制。编辑/etc/security/limits.conf为oracle用户添加oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 32768这提高了oracle用户能打开的文件数、进程数等限制防止数据库在运行中因资源不足而崩溃。最后创建目录结构并设置权限。Oracle需要一个清晰的目录规划。通常我们会设定一个ORACLE_BASE如/u01/app/oracle作为所有Oracle产品的根目录其下会有ORACLE_HOME软件安装目录如/u01/app/oracle/product/19.3.0/dbhome_1和存放数据库文件的区域。mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1 mkdir -p /u01/app/oracle/oradata mkdir -p /u01/app/oracle/fast_recovery_area chown -R oracle:oinstall /u01 chmod -R 775 /u013. 安装介质部署与图形化安装界面解析当系统环境如磐石般稳固后我们就可以开始部署安装介质并启动安装了。Oracle 19c在Linux上主要通过图形化界面GUI安装这对新手非常友好。3.1 解压与环境变量配置将之前下载的LINUX.X64_193000_db_home.zip上传到服务器比如放到/u01/software目录下。然后切换到oracle用户并解压到预定的ORACLE_HOME目录su - oracle cd /u01/software unzip LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.3.0/dbhome_1解压过程需要几分钟请耐心等待。解压完成后ORACLE_HOME目录下就会出现完整的安装文件。接下来为oracle用户配置环境变量。编辑其家目录下的.bash_profile文件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使配置生效。这些变量告诉了系统Oracle软件的位置以及后续操作的基本上下文。3.2 启动图形化安装器与依赖检查由于我们是在没有图形界面的服务器上操作需要通过X11转发如果你使用SSH客户端如MobaXterm、Xshell配合Xmanager它们通常自带此功能或者直接配置VNC来显示图形界面。这里以X11转发为例确保你的SSH客户端支持并开启了X11转发功能。在配置好X11转发的终端里以oracle用户身份进入ORACLE_HOME目录启动安装器cd $ORACLE_HOME ./runInstaller如果一切顺利Oracle Universal Installer (OUI)的图形窗口将会弹出在你的本地电脑上。安装器启动后第一步通常是“配置安全更新”。对于个人学习测试环境我建议直接取消勾选“我希望通过My Oracle Support接收安全更新”并提供一个虚拟的邮箱地址即可。这一步跳过可以简化流程。接下来安装选项选择“仅安装数据库软件”。为什么先只装软件这是一个重要的最佳实践。将“软件安装”和“数据库创建”分离使得架构更清晰。软件安装是一次性的而数据库可以后续根据需要创建多个。这也有利于后续的补丁升级等操作。在“数据库安装类型”中选择“单实例数据库安装”。然后OUI会进行先决条件检查。这是最关键的一步之一。安装器会自动检查所有之前我们手动配置的内核参数、依赖包、资源限制等。你很可能会看到一些“警告”Warning比如某些推荐的依赖包未安装。对于警告通常可以忽略但务必关注“失败”Failure的项目。常见的失败项是缺少系统包。你可以根据检查报告给出的具体包名用root身份安装。例如在Oracle Linux 8上你可能需要# 切换到root用户 yum install -y oracle-database-preinstall-19c这个oracle-database-preinstall-19c元包会自动安装几乎所有必需的依赖。安装后点击“重新检查”直到所有项目通过或仅为警告。3.3 安装路径与权限确认在先决条件检查通过后会进入“概要”页面。这里会清晰列出Oracle基目录应为你设置的ORACLE_BASE/u01/app/oracle。软件位置应为你设置的ORACLE_HOME/u01/app/oracle/product/19.3.0/dbhome_1。安装类型单实例数据库。特权操作系统组数据库管理员组应为dba数据库操作员组应为oper。仔细核对无误后点击“安装”。安装程序开始将文件复制到ORACLE_HOME并链接库文件这个过程大约需要15-30分钟取决于你的磁盘IO性能。安装进度到约80%时会弹出一个提示窗口要求你以root身份执行两个脚本。这是Oracle安装的固定环节$ORACLE_HOME/root.sh这个脚本会创建一些必要的根目录、设置/etc/oratab文件用于记录本机上的Oracle实例并调整某些文件的权限。$ORACLE_BASE/oraInventory/orainstRoot.sh这个脚本初始化Oracle的清单目录用于记录本机上安装的所有Oracle产品信息。你需要新开一个终端切换到root用户依次执行这两个脚本。按照脚本提示输入回车即可。执行成功后回到图形界面点击“确定”软件安装部分就圆满完成了。4. 数据库创建DBCA工具实战与参数精讲软件安装完毕相当于我们有了一个空的“数据库工厂”。现在我们需要用这个工厂生产出一个具体的“数据库产品”。这个工具就是Database Configuration Assistant (DBCA)。4.1 启动DBCA与创建模式选择同样在配置了X11转发的终端里以oracle用户身份直接输入命令启动DBCAdbca图形界面启动后选择“创建数据库”。接下来是关键的“创建模式”选择典型配置适合快速搭建测试环境。它会使用许多默认参数包括自动管理内存、使用统一的数据库文件位置等。优点是快缺点是不够灵活不利于理解底层结构。高级模式我强烈建议即使是新手第一次安装也选择“高级模式”。它能让你看到并控制数据库创建的几乎所有方面是学习Oracle架构的绝佳机会。选择“高级模式”后进入数据库模板选择。对于学习选择“一般用途或事务处理”模板即可。4.2 数据库标识与存储管理接下来是“数据库标识”全局数据库名通常由“数据库名.域名”构成如orcl.example.com。在纯粹的学习环境没有域名可以就用orcl。SID系统标识符这是实例的名字我们之前环境变量里设置的ORACLE_SID就是它。这里保持和全局数据库名一致或简单命名为orcl即可。然后是核心的“存储”选项。这里你会接触到Oracle的存储管理方式文件系统数据库文件数据文件、控制文件、重做日志文件以普通操作系统文件的形式存放。这是最简单直接的方式适合学习和大多数非集群环境。自动存储管理 (ASM)这是Oracle推荐的用于生产环境的方式它提供了一个专门为数据库文件优化的卷管理器。但ASM本身需要额外的配置需要Grid Infrastructure对于初次安装来说复杂度陡增。学习环境务必选择“文件系统”。指定数据库文件位置时可以指向我们之前创建的/u01/app/oracle/oradata目录。这样所有数据文件都会整齐地放在这个目录下以SID命名的子文件夹里。4.3 内存、字符集与安全配置“快速恢复选项”是配置闪回和归档日志的地方。闪回功能对于数据误删除恢复非常有用。你可以指定一个“快速恢复区”的位置如/u01/app/oracle/fast_recovery_area并设置大小例如10GB。启用归档模式对于数据库备份恢复至关重要但学习环境可以先不启用以节省空间和简化管理。“初始化参数”页面内容非常丰富内存在“内存”标签页取消“启用自动内存管理”的勾选改为“手动”。这样我们可以直观地设置SGA系统全局区和PGA程序全局区。对于测试机可以设置SGA为2GBPGA为500MB。SGA是数据库缓存数据的核心内存区PGA是每个服务器进程私有的内存区。字符集在“字符集”标签页这是必须仔细检查的地方。选择“使用Unicode (AL32UTF8)”。AL32UTF8是当前最通用的Unicode字符集能支持全球所有语言字符避免未来出现中文或其他语言乱码问题。不要使用默认的“操作系统语言”字符集如ZHS16GBK兼容性差。连接模式在“数据库模式”标签页选择“专用服务器模式”。这是最常见的模式每个客户端连接会对应一个专用的服务器进程。“管理选项”和“用户凭证”页面相对简单。可以跳过Enterprise Manager Cloud Control的配置。重点是为关键的数据库管理账户设置密码。务必为SYS、SYSTEM等账户设置强密码并牢记。为了方便测试可以勾选“所有账户使用同一管理口令”但生产环境绝对禁止这样做。最后在“创建选项”页面我建议先勾选“生成数据库创建脚本”。这样DBCA不会立即创建数据库而是生成一组SQL和Shell脚本。你可以查看、学习甚至手动修改这些脚本然后再执行它们来创建库。这是一个极好的学习过程。脚本会生成在$ORACLE_BASE/admin/$ORACLE_SID/scripts目录下。点击“完成”DBCA会生成脚本并开始创建数据库。这个过程会创建控制文件、数据文件、系统表空间、用户表空间并运行一系列SQL脚本来构建数据字典和内置组件。根据硬件性能可能需要20分钟到1小时。期间可以在终端观察日志输出通常位于$ORACLE_BASE/cfgtoollogs/dbca/$ORACLE_SID。5. 安装后关键配置与基础验证数据库创建成功并不意味着万事大吉。以下几个安装后的配置和验证步骤决定了你的数据库是否“健康”且“好用”。5.1 监听器配置与启动Oracle客户端通过网络连接数据库必须通过一个叫做“监听器”Listener的中间件。我们需要配置并启动它。监听器的配置文件是$ORACLE_HOME/network/admin/listener.ora。一个最基本的单实例监听器配置如下LISTENER (DESCRIPTION_LIST (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST your_server_hostname_or_ip)(PORT 1521)) ) )HOST最好使用服务器的主机名或静态IP。PORT1521是Oracle的默认端口。配置完成后使用lsnrctl工具启动监听器lsnrctl start使用lsnrctl status查看状态你应该能看到“监听器支持的服务”中列出了你的数据库实例如orcl并且状态为“READY”。5.2 网络服务名配置与连接测试为了让客户端方便地连接我们还需要配置一个“网络服务名”TNS Name对应的配置文件是$ORACLE_HOME/network/admin/tnsnames.ora。ORCL (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST your_server_hostname_or_ip)(PORT 1521)) (CONNECT_DATA (SERVER DEDICATED) (SERVICE_NAME orcl) # 这里填写你的全局数据库名或服务名 ) )配置好后就可以使用sqlplus命令行工具进行连接测试了sqlplus system/your_passwordorcl如果成功进入SQL提示符SQL恭喜你数据库安装、监听器、网络配置全部成功。5.3 设置开机自启动对于需要长期运行的测试环境我们希望数据库实例和监听器能随操作系统启动。在Oracle Linux 7及以上版本推荐使用systemd服务管理。首先为数据库实例创建服务文件/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 Useroracle Groupoinstall ExecStart/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbstart $ORACLE_HOME ExecStop/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbshut $ORACLE_HOME Restarton-abort [Install] WantedBymulti-user.target然后为监听器创建服务文件/etc/systemd/system/oracle-listener-19c.service[Unit] DescriptionOracle Listener 19c Afteroracle-19c.service [Service] Typeforking Useroracle Groupoinstall EnvironmentORACLE_HOME/u01/app/oracle/product/19.3.0/dbhome_1 ExecStart$ORACLE_HOME/bin/lsnrctl start ExecStop$ORACLE_HOME/bin/lsnrctl stop Restarton-abort [Install] WantedBymulti-user.target保存后执行systemctl daemon-reload systemctl enable oracle-19c systemctl enable oracle-listener-19c systemctl start oracle-19c systemctl start oracle-listener-19c这样数据库服务就配置为开机自启动了。6. 常见问题排查与实战心得即便按照教程一步步操作也难免会遇到问题。这里我总结几个高频问题及其排查思路。6.1 图形界面无法启动这是最常见的问题。现象是执行./runInstaller或dbca后长时间无反应或报错“无法打开显示”。原因1未正确配置X11转发。确保SSH客户端如MobaXterm, XshellXmanager, SecureCRT的X11转发功能已开启并且本地有X Server在运行MobaXterm自带Windows下使用Xmanager需要先启动Xming等。排查在SSH终端里输入echo $DISPLAY应该显示类似localhost:10.0的值而不是空值。原因2防火墙或SELinux阻止。临时关闭防火墙(systemctl stop firewalld)和SELinux编辑/etc/selinux/config设置SELINUXpermissive然后重启看是否能解决问题。如果是它们导致则需要添加相应的放行规则。6.2 先决条件检查失败安装器检查出“失败”项尤其是缺少系统包。解决方案仔细阅读错误信息它会明确指出缺少哪个或哪些RPM包。使用yum provides */lib_name.so来查找包含某个库的包名或者直接使用之前提到的oracle-database-preinstall-19c元包来一次性解决大部分依赖。心得在Oracle Linux上预安装包能解决99%的依赖问题。在RHEL/CentOS 8上可能需要手动启用EPEL和Oracle官方yum仓库来获取这些包。6.3 数据库创建过程中断或报错DBCA执行到一半失败通常查看日志是最直接的排错手段。日志位置$ORACLE_BASE/cfgtoollogs/dbca/$ORACLE_SID目录下的trace.log和*.log文件。常见原因空间不足检查/tmp目录和数据库文件目标目录的磁盘空间。Oracle安装和建库需要大量临时空间。权限问题确保ORACLE_BASE如/u01及其所有子目录的所有者和组是oracle:oinstall并且oracle用户有读写权限。内存不足在数据库创建阶段如果物理内存和交换空间不足可能导致进程被杀死。确保系统有足够的可用内存。6.4 监听器启动正常但无法连接lsnrctl status显示服务是“READY”但sqlplus连接时报“无监听程序”或“连接超时”。检查1确认tnsnames.ora中的HOST配置的是否是数据库服务器正确的IP或主机名并且客户端能ping通。检查2确认服务器本地防火墙是否开放了1521端口。可以使用firewall-cmd --list-ports查看如果没有则添加firewall-cmd --permanent --add-port1521/tcp firewall-cmd --reload。检查3在服务器上用sqlplus system/password进行本地连接不通过监听器。如果本地能连远程不能问题一定出在网络或监听器配置上。6.5 关于字符集的惨痛教训这是我早期踩过的一个大坑。在创建数据库时图省事字符集选择了默认的“操作系统语言”中文环境是ZHS16GBK。后来需要存储一些特殊符号或多国语言数据时发现会出现乱码或根本无法插入。迁移到UTF8字符集是一个极其痛苦的过程。核心建议无论你现在有没有多语言需求在创建数据库时字符集一律选择“AL32UTF8”。这是面向未来的选择能彻底杜绝字符集带来的烦恼。AL32UTF8是UTF-8的超集兼容性最好。安装Oracle数据库尤其是第一次更像是一个系统工程考验的是耐心和对细节的把控。它不像安装一个桌面软件那样点击“下一步”就能完成但正是这个过程能让你对Oracle数据库的底层架构软件目录、实例、数据库、监听器、网络配置有一个非常直观和深刻的理解。这份理解远比单纯会写SQL语句更为宝贵。当你成功搭建起自己的第一个Oracle环境并顺利连接上去时那种成就感就是技术人最好的乐趣。