资讯动态

Oracle 19c Linux保姆级安装教程:从下载到DBCA建库

发布时间:2026/9/17 12:47:19 来源:尧图企业网站定制
很多人拿到Oracle 19c的下载安装教程后第一反应都是找一个“绿色免安装”的包或者直接在官网点下载然后被登录页拦住再被一堆Linux依赖包折磨到怀疑人生。我当年第一次装19c环境是CentOS 7内存给了4G本来以为像装Windows软件一样一路Next就行结果栽在缺包、缺用户、缺内核参数上最后不得不全部卸载重来。后来自己整理了一份保姆级操作步骤先后在几台测试机上验证过也算把这条路踩熟了。这篇文章就是那份笔记的完整版覆盖从下载、系统准备、软件安装、DBCA建库到监听故障排查的每一个环节适合刚接触Oracle数据库、想在一台Linux服务器上把19c跑起来的同学。文章会尽量做到每一步都告诉你为什么而不只是让你复制粘贴。1. 为什么选择Oracle 19c版本定位与安装前必须想清楚的事1.1 19c不是“19.0”是长期支持版本很多新手会把19c和19.x混在一起。Oracle的c表示Cloud19c实际上是12c Release 2的延续属于18c的升级版官方定位是长期支持版。在数据库领域选版本最怕选到过渡版本19c的好处在于它和20c之后的新版本相比既有现代架构CDB/PDB又不会频繁变化也因此很多企业生产库仍然以19c为主。如果你是学习或做一个内部小项目19c是现阶段性价比高的选择。即便你之前对Oracle完全没概念也可以把19c理解成“一个稳定了很久的数据库版本”社区资料丰富、网上提问的答案多、第三方工具兼容性好遇到问题基本都能搜到解决方案。相比动不动冒出新特性的21c、23c19c更适合作为入门学习和生产实践的起点。1.2 安装前必须满足的硬条件内存和磁盘是硬指标。官方文档说至少2G内存但我建议内存不低于4G因为后面DBCA建库时如果你选了带PDB的架构启动多个实例会吃不少内存。磁盘方面安装软件加数据文件至少预留15G如果你还要做闪回区、归档日志20G以上更稳妥。Swap区域的设置也要注意通常建议是内存的1.5倍如果内存8G则swap至少4G。操作系统建议使用Linux x86-64平台比如Red Hat 7、CentOS 7、Oracle Linux 7/8。虽然也有Windows版本但生产环境绝大多数是Linux本文也以Linux为例。如果你用的是CentOS 8或Rocky Linux也可以参考同样的步骤只是一些依赖包的名字会有差异遇到找不到包的情况时用yum provides去查就可以。1.3 标题里的“8.7”到底指什么先解释一下标题。这里“8.7”并不是Oracle的版本号也不是19c的补丁编号而是我自己教程归档时的一个序列号这是第八个系列里的第七篇。网上有朋友误以为19c还有一个8.7版本实际不是。Oracle 19c的官方安装包名称一般长这样LINUX.X64_193000_db_home.zip其中的193000代表19.3.0.0.0。先把版本概念理清再去下载安装心里的底就足很多。为什么要专门说这个因为我在群里看到过有人拿着第三方网站的“19.8”截图到处问最后发现是网页标题拼接出来的误导信息。下载之前认准官方文件名和校验值比什么都重要。2. Oracle账号与安装包下载没有账号也能下载的完整路径2.1 注册Oracle账号流程与避坑Oracle官网下载确实需要登录Oracle Account。这个账号是免费的不要被第三方代下载网站忽悠。打开Oracle下载中心找到Oracle Database 19c for Linux x86-64点击下载会跳转到登录页。注册时需要注意邮箱要能收到验证邮件国家/地区选择不会影响下载密码需要包含大写字母、数字和特殊字符。注册完成后回到下载页重新登录就可以看到两个zip包一个约2.7G的LINUX.X64_193000_db_home.zip另一个是补丁说明等小文件。通常只需要下载那个大的主安装包。注册过程还有一个容易忽略的点Oracle官网的登录态过期时间很短如果你下载到一半去开其他页面可能回来就要重新登录。建议下载前先登录然后直接点击下载按钮不要开着下载页面长时间不动避免会话超时后下载中断。2.2 老生常谈的“没有Oracle账号怎么下载”网传各种绕过登录的方法实际最稳妥的还是注册免费账号。如果你所在网络环境确实无法访问官网那就需要找公司已有的安装包离线传播这也是很多企业内部的标准做法。拿到离线包后一定先核对文件大小和校验值。怎么核对下载完成后用md5sum或sha256sum命令sha256sum LINUX.X64_193000_db_home.zip看输出和Oracle官网页面上给出的校验值是否一致。不一致的包坚决不要用。解压到一半报错是最轻的后果装出来的数据库存在未知风险才麻烦。另外不要从一些来路不明的网盘拿所谓的“破解版”或“绿色版”那里面被塞了多少私货没人知道。2.3 解压而不是双击安装拿到zip后在Linux里先创建ORACLE_HOME的目录然后把zip解压进去mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1 cd /u01/app/oracle/product/19.3.0/dbhome_1 unzip -q /path/to/LINUX.X64_193000_db_home.zip解压后的目录里会出现runInstaller、database目录等。到这里安装介质才真正准备好了。注意这个目录就是未来的ORACLE_HOME所以做大纲时要提前规划好别随便解压在/tmp目录权限后面会统一处理。如果解压时提示磁盘空间不足先清理/opt或者扩容不要继续硬装。3. 操作系统层面的配置依赖包、内核参数、用户和环境3.1 一次性装齐依赖包Oracle安装程序有前置检查缺包会直接中断。与其等到出错再去补不如先装齐。CentOS 7或RHEL 7环境我习惯先执行yum -y install bc binutils compat-libcap1 compat-libstdc-33 \ elfutils-libelf elfutils-libelf-devel fontconfig-devel \ glibc glibc-devel ksh libaio libaio-devel \ libX11 libX11-devel libXau libXau-devel libXi libXi-devel \ libXtst libXtst-devel libXrender libXrender-devel \ libgcc libstdc libstdc-devel libxcb make \ net-tools nfs-utils python perl \ smartmontools sysstat unzip有些包在不同源里名字可能不太一样比如compat-libstdc-33在CentOS 7源里可能存在如果找不到可以用yum provides命令查一下。其实更省事的方法是先把这个命令跑一遍然后再运行runInstaller -executePrereqChecks让它列出还缺哪些包最后统一补齐。这样既能保证不遗漏也不用对着官方文档一个个找。3.2 用户与目录权限Oracle不允许直接用root安装。需要创建专用用户和用户组groupadd oinstall groupadd dba groupadd oper useradd -g oinstall -G dba,oper oracle echo oracle | passwd --stdin oracle目录结构一般如下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/app/u01/app/oracle是ORACLE_BASEdbhome_1是ORACLE_HOME。chown前要确认/u01没有其他重要文件如果你是在独立挂载的磁盘上操作也要先确认挂载点存在且没有占用。目录创建好后用ll /u01/app确认属主已经变成oracle:oinstall然后再进行下一步。3.3 内核参数这是新手最容易跳过的坑很多速成教程不会讲内核参数结果安装到52%突然报错回头看全是shared memory设置不够。我一般把参数写到单独的sysctl文件里方便卸载和复查vi /etc/sysctl.d/98-oracle.conf内容如下fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 2097152 kernel.shmmax 536870912 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 /etc/sysctl.d/98-oracle.conf其中kernel.shmmax是共享内存段最大值这个值可以按内存大小调整比如4G内存设为2G也是可以的关键是不要小于Oracle SGA的预估大小。kernel.sem表示信号量Oracle官方文档给出的基准值就是上面这组。如果你之前调过生产库的参数直接覆盖可能会有影响但测试机不用太担心。用户资源限制也要配置否则安装时文件描述符不够vi /etc/security/limits.d/oracle-limits.conforacle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 32768配置生效后需要重新登录oracle用户再用ulimit -n检查是否已经变成1024或更大。很多人在这一步做了但没重新登录后面照样报错看到ulimit输出还是1024就慌了。这里特别提醒修改limits文件后必须完全退出oracle用户的会话重新登录su - oracle都不一定生效最好通过SSH断开重连。3.4 环境变量与/etc/hosts安装之前最好是先把oracle用户的基础环境变量写好。我们这里写一个最小版本等建库后再补全vi /home/oracle/.bash_profile添加export ORACLE_BASE/u01/app/oracle export ORACLE_HOME/u01/app/oracle/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同时ping一下主机名如果解析有问题编辑/etc/hosts192.168.1.100 myhost注意主机名和IP的对应关系必须正确否则后面配置监听会碰到一堆幺蛾子其中一个就是监听起不来。4. 安装Oracle 19c软件runInstaller逐步图解级操作4.1 没有图形界面怎么调出安装窗口runInstaller是图形化安装程序。如果你本机有图形桌面直接以oracle用户运行./runInstaller。如果远程SSH连接需要用X11转发或VNC。X11转发最简单的办法是Windows上用Xshell和Xmanager或者用MobaXterm自带X serverLinux上用ssh -X。核心前提服务器上要装了xterm等X11客户端库前面依赖包里的libX*就是为这个准备的。以MobaXterm为例连接后运行runInstaller时它会自动把图形窗口转发到本地。如果转发失败检查/etc/ssh/sshd_config里X11Forwarding是否设置成yes。如果你和我一样用的是阿里云、腾讯云这类没有图形桌面的云服务器也可以直接用VNC但在软件安装阶段我更推荐X11转发因为配置成本最低。4.2 几步关键的界面选择运行cd /u01/app/oracle/product/19.3.0/dbhome_1 ./runInstaller界面一出现我建议不要急着一路Next。按下面的选择走Configure Security Updates取消勾选“I wish to receive security updates via My Oracle Support”点Next如果弹出警告点Yes。这一步只是关闭邮件通知不影响安装。Installation Option选择“Set Up Software Only”。为什么不选“Create and configure a single instance database”?对于保姆级教程来说软件安装和建库分开做出问题时更容易定位。而且DBCA建库后面单开一章反而更清晰。Database Installation Options选择“Single instance database installation”。Database Edition选Enterprise Edition。如果你只是想学基础操作Standard Edition其实也够但企业版是大家最常用的跟着做不会错。Oracle Home位置会自动填入我们刚才设置的ORACLE_HOME确认无误后继续。Prerequisite Checks这是整个安装里最有可能报错的地方。如果前面依赖包、内核参数都做了这里基本是绿勾。如果有红叉不要直接忽略先看它缺什么然后切到root用户补包/调参后点Check Again。当信息确认无误点击Install安装进度条开始走。安装时间取决于机器性能通常10到30分钟。这里不要频繁点击界面否则有可能造成进程卡住。4.3 两个root脚本的坑进度条走到接近尾声时安装界面会提示用root执行两个脚本orainstRoot.sh和root.sh。切记不要直接在界面里取消等待也不要开一堆root终端同时执行。我在测试机上曾经同时执行过结果因为环境变量冲突导致root.sh执行不完整。正确做法是单独开一个root终端按顺序执行cd /u01/app/oracle/product/19.3.0/dbhome_1 sh orainstRoot.sh sh root.shroot.sh执行时会问你本地bin目录路径直接回车用默认值即可。执行成功后回到安装界面点OK软件安装才算彻底完成。如果root.sh中途报错先不要急着重新跑先看报错信息。常见的是权限不对或者/u01/app/oraInventory目录不存在这时根据提示修复后再执行。4.4 静默安装备用方案如果实在没有图形界面也不会配X11转发可以走静默安装。用官方模板生成响应文件cd /u01/app/oracle/product/19.3.0/dbhome_1 ./runInstaller -silent -responseFile (cat EOF oracle.install.responseFileVersion/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0 oracle.install.optionINSTALL_DB_SWONLY UNIX_GROUP_NAMEoinstall INVENTORY_LOCATION/u01/app/oraInventory ORACLE_BASE/u01/app/oracle ORACLE_HOME/u01/app/oracle/product/19.3.0/dbhome_1 oracle.install.db.InstallEditionEE oracle.install.db.OSDBA_GROUPdba oracle.install.db.OSOPER_GROUPoper EOF )静默安装没有进度条可以通过查看日志判断进度日志一般在/u01/app/oraInventory/logs/installActions*.log。这种方式适合批量部署但新手用图形界面体验更直观出错时也更容易定位。5. 使用DBCA创建数据库单机CDB/PDB的搭建全过程5.1 为什么19c默认是CDB/PDB架构19c沿用12c引入的多租户架构简单理解就是一个容器数据库CDB可以包含多个可插拔数据库PDB。对企业来说这能显著降低资源占用这也是为什么19c建库时默认就会问你要不要创建CDB/PDB。新手一开始听到这两个词容易懵但实际操作中只需要记住如果创建CDB通常会有PDB$SEED和一个实际使用的PDB比如ORCLPDB。如果你以前用过11g或12c的非CDB模式会看到很多教程说可以创建non-CDB但19c里官方对这种模式的支持越来越弱建议直接用CDB/PDB不要逆着趋势走。5.2 用dbca图形建库软件装完后先配置监听再建库更顺畅。监听配置可以用netcanetca -silent -responsefile $ORACLE_HOME/assistants/netca/netca.rsp或者直接运行netca在弹出的界面一路Next创建一个监听在1521端口的LISTENER。建完监听后验证lsnrctl status看到“Service”和端口监听说明正常。如果提示无法连接先回到第3节的/etc/hosts排查。然后启动DBCAdbca图形建库关键步骤Database operation选择Create a database。Creation Mode选择Advanced configuration这样可以选择数据文件路径、内存比例、字符集等。Deployment Type选择Oracle Single Instance database。Database IdentificationGlobal database name和SID可以都用ORCL勾选Create as Container databasePDB name填ORCLPDB。Storage使用File System即可。机器内存不大时数据库安装类型选Server内存分配建议填总内存的40%左右。比如4G内存就填1600MB。Block Size用默认8KProcesses默认300也够用。Character Sets如果只是学习建议选UTF8或其超集AL32UTF8避免中文乱码。设置sys和system用户密码时Oracle 19c有密码复杂度要求至少8位且包含大写字母和数字。不要用类似123456的弱口令数据库装好后很难在非公开环境里解释为什么密码这么脆弱。我实际碰到过因为密码太简单建库步骤一直卡在密码校验还以为程序挂了的案例。确认后点Create DatabaseDBCA会在后台构建数据字典并创建服务。这个过程通常5到15分钟。完成后会显示Database creation complete并告知Enterprise Manager URL不用管它直接点Close。5.3 建库后的第一眼验证建库成功后登录验证sqlplus / as sysdba SQL select status from v$instance;应该返回OPEN。然后查PDBSQL show pdbs;能看到PDB$SEED和ORCLPDB。此时如果想去PDB里操作SQL alter session set containerORCLPDB;如果都用默认配置这条命令之后就可以创建用户、建表了。注意在19c里普通业务用户最好建在PDB里而不要都堆在CDB$ROOT里。这样以后做数据隔离、迁移会方便很多。6. 安装后的环境变量、开机自启与日常管理基线6.1 补全oracle用户环境变量前面写的环境变量是基础版建库后要补上一些辅助设置。完整版.bash_profile可以参考export ORACLE_BASE/u01/app/oracle export ORACLE_HOME/u01/app/oracle/product/19.3.0/dbhome_1 export ORACLE_SIDORCL export NLS_LANGAMERICAN_AMERICA.AL32UTF8 export PATH$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH$ORACLE_HOME/lib:/lib:/usr/lib export TNS_ADMIN$ORACLE_HOME/network/adminNLS_LANG建议明确设置否则Sqlplus连接时客户端字符集和服务端不一致中文会变成问号。TNS_ADMIN则帮助一些第三方工具找到tnsnames.ora。6.2 监听与tnsnames.ora监听默认配置在$ORACLE_HOME/network/admin/listener.ora一般DBCA会生成基本配置。如果监听状态正常不需要手动改。但用PL/SQL Developer或DBeaver远程连接时需要在本机或服务器的tnsnames.ora里配置服务名。服务器端可以这样加一个条目ORCL (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST your_host_ip)(PORT 1521)) (CONNECT_DATA (SERVER DEDICATED) (SERVICE_NAME ORCL) ) )如果连接PDBSERVICE_NAME要写ORCLPDB而不是ORCL。这是新手最容易踩的连接错误。我见过有人用SqlDeveloper连接时一直用ORCL去连PDB报ORA-01033后就怀疑数据库没装好其实只是服务名写错了。6.3 设置开机自启可选但有备无患对于测试机重启后数据库不会自动启动手动执行很麻烦。可以写一个最简单的启动脚本放到rc.local里。首先确认rc.local有执行权限chmod x /etc/rc.d/rc.local然后在/etc/rc.local末尾添加以oracle用户执行su - oracle -c /u01/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl start su - oracle -c /u01/app/oracle/product/19.3.0/dbhome_1/bin/sqlplus / as sysdba EOF startup exit EOF这种方式虽然是“野路子”但在脚本规模小的场景下足够。如果你想做得更规范可以注册systemd服务但在生产环境我建议先和运维同事确认节奏不要擅自改开机项。重启之后记得用第6.4节的基本命令检查一遍别只看进程有没有。6.4 日常管理基线命令安装完成后至少要知道这几个命令用于体检ps -ef | grep pmon lsnrctl status sqlplus / as sysdba SQL select name, open_mode from v$database; SQL show sga;如果这些输出都正常说明这套Oracle 19c已经从下载安装走到了可以使用的状态。把这几个命令存成一个check_oracle.sh脚本以后每次重启都能快速确认状态比临时敲命令高效得多。7. 保姆级避坑监听起不来、Ora-28547、图形弹出失败等高频问题7.1 监听服务无法启动的完整排查链路监听起不来是安装后最高频的问题。我见过太多人一上来就查listener.ora结果根本不是配置问题。我的排查顺序是先看hosts文件。执行hostname拿到主机名再grep 主机名 /etc/hosts。如果主机名没有对应IP监听会报TNS-12545或类似错误。好多人因为hosts里只有localhost.localdomain导致监听绑不到正确地址。再看端口占用。netstat -tlnp | grep 1521。如果有别的进程占用或者之前残留的Oracle进程需要先处理。再看环境变量。确保以oracle用户执行的which tnslsnr指向的是当前ORACLE_HOME/bin/tnslsnr。如果PATH混乱可能监听程序和客户端程序来自不同安装导致版本不一致。最后才看监听日志tail -100 $ORACLE_HOME/network/log/listener.log。日志里会有具体的错误码。下面这张表是我在实际环境中遇到比较多的监听相关错误码可以对照排查错误码典型原因处理方向TNS-12541无监听端点检查listener.ora端口和监听状态TNS-12545连接超时或主机名不可达检查hosts、防火墙、网络TNS-12560协议适配器错误常见于Oracle进程未启动或ORACLE_HOME不对TNS-01189监听文件损坏重新生成listener.ora或恢复备份7.2 ora-28547Connection to server failed, probable Oracle Net admin error这个错误常见于用PL/SQL Dev或Navicat连接时报错。它不是一个单一的根因最典型的是本机oracle客户端和服务器版本不匹配或者ORACLE_HOME环境变量没设置好。在服务器本机如果你同时装过Oracle 18c和19c却没有正确切换环境变量执行sqlplus时加载的是旧版本libclntsh.so就容易出现Ora-28547。解决思路在oracle用户下检查环境变量是否指向19c的ORACLE_HOME。检查tnsnames.ora里SERVICE_NAME是否写错比如把PDB名写成CDB名。用ldd $ORACLE_HOME/bin/sqlplus查看动态库依赖确认没有异常。如果用的是DBeaver等外部工具注意驱动版本不要用太老的Oracle JDBC驱动连19c。这个错误的排查核心就是“客户端、驱动、服务端三方版本要接近”。有时你本地装过11g客户端再装一个19c客户端连接又不用新客户端的tnsnames就会触发版本匹配问题。最干净的办法是把旧客户端从PATH中移除确保当前生效的client是19c。7.3 没有图形界面的服务器安装解决方案如果完全没有X11转发条件除了静默安装之外还可以用VNC。在服务器上安装VNC serveryum -y install tigervnc-server vncserver :1 -geometry 1280x800然后用Windows端的VNC Viewer连接IP:1输入密码后就能看到一个虚拟桌面在里面打开终端跑runInstaller。这种方法比X11转发更稳因为网络断了图形窗口还在虚拟桌面上。缺点是占用内存配置低的测试机跑起来会卡。如果只是临时装一次我更推荐X11转发因为配置成本更低。如果你用的是Windows下的Xshell再配一个Xmanager基本能做到无感转发图形界面。具体操作是Xshell会话属性里勾选“转发X11连接”Xmanager后台运行然后runInstaller的窗口就会自动出现在Windows桌面上。这个方案我在公司云主机上用过很多次稳定且不需要root权限额外安装东西。7.4 安装过程卡住、日志排查和卸载重装如果在安装中出现进度条长时间不动先去日志目录看实时日志tail -f /u01/app/oraInventory/logs/installActions*.log大多数卡住是因为rpm包冲突、目录权限错误或者/tmp空间不足。日志会给出具体位置。实在救不回来的需要清理重来。卸载Oracle 19c的正确顺序是先停掉监听和数据库再运行$ORACLE_HOME/bin/deinstall然后删除相关目录和用户最后清理/etc/oratab、/etc/oraInst.loc。不要一上来就rm -rf /u01/app这样容易留下很多残留下次安装时各种灵异报错。卸载前可以用lsnrctl stop和sqlplus / as sysdba执行shutdown abort来释放占用否则deinstall会因为进程还在而半途失败。deinstall命令会在最后自动清理大部分文件但用户组和用户目录还需要手动删除。清理干净后重装之前再检查一遍/etc/oratab确保没有旧条目残留。我在实际操作中的体会是大多数安装问题都不是能力问题而是“没按顺序来”。装Oracle最忌讳跳步骤。依赖没装就急着跑runInstaller环境变量没配好就急着lsnrctl这些都会在后期集中爆发。建议把我上面这些章节当作一张检查表每完成一项就确认一项。机器装完记着用sync和reboot做一次干净重启再验证数据库状态。这样一套走下来你会比很多装了多年数据库但没踩过坑的人更清楚问题出在哪。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价