简介对Linux运维工程师和Oracle DBA而言在CentOS 7与Red Hat 7中安装Oracle 19C需要提前完成硬件检查、安全策略调整、网络和用户配置等一系列系统级准备否则安装过程很容易中断。完整安装指南以docx格式提供共1个文件压缩包约2.99MB内容覆盖从系统要求到安装前环境调优的完整链路先通过grep MemTotal、df、grep SwapTotal核对物理内存≥1G、可用硬盘≥8G、Swap≥2G再关闭firewalld防火墙、图形桌面和SELinux随后修改ifcfg-ens33设置静态IP、编辑/etc/hosts初始化主机名重启网络服务后创建oinstall、dba等用户组及oracle用户。此外还整理了limits.conf中的进程与文件数限制、sshd_config中关闭GSSAPI和DNS反向解析、/etc/profile中ulimit环境变量等易忽略配置每个步骤均给出可直接查看或复制的命令示例并标注查看状态、临时关闭与永久关闭的常用方法。已有17359人学习下载适合初次在Linux服务器上部署Oracle 19C的运维人员和DBA按文档逐项操作减少搜索与试错成本。1. Linux安装Oracle19C瓶颈从来不在那些安装按钮上Linux安装Oracle19C看起来是一条解压、跑脚本、等完成的流水线但真正让DBA熬夜的几乎全是环境问题内核参数没调、依赖包缺一两个、用户权限给错、/tmp不够大。这篇文章按实际安装路径来写从系统体检、内核参数、依赖包、用户目录规划到静默运行runInstaller、配置监听、创建数据库最后给出五条高复发问题的排查方法。适合正在Linux服务器上部署单实例Oracle 19C的运维和开发新手能一步步跟下来熟手可以直接跳到避坑部分对照报错。2. 安装前先做三项检查磁盘、依赖包、用户与目录先说结论Oracle 19C安装失败的案例里七成以上发生在真正点击安装之前。这一章把系统版本、依赖包、用户和目录三件事一次检查到位后面所有步骤都会依赖这些前置条件。2.1 系统版本与资源底线内核、内存、swap和/tmp一起查Oracle 19C对内核有硬性要求常见做法是在Red Hat Enterprise Linux 7.4及以上或兼容内核的Linux 7系版本上安装。先别急着上传安装包用一组命令把家底摸清楚uname -r cat /etc/redhat-release free -g df -h /tmp nproc grep -c ^processor /proc/cpuinfo这段命令同时覆盖内核版本、发行版、内存、/tmp空间和CPU核数。逻辑上前两个决定能不能装free和df决定装到哪、会不会中途失败nproc和cpuinfo用于核对处理器。Oracle要求至少1核但实测1核机器建库加跑业务会非常痛苦这个数字只用来排除极端情况。资源底线建议这样卡内存2GB是官方最低线实测装完软件再建库2GB内存会让swap频繁抖动我一般建议至少4GBswap给到内存的2倍以上/tmp至少要1GB可用这是安装预检查的硬条件很多服务器把/tmp挂成tmpfs容量往往只有几百MB这块不处理后面必踩坑/u01所在分区要预留10GB以上装完软件大约占6到8GB数据文件还要另算。提示如果发现/tmp不足不要急着重挂分区可以用TMP和TMPDIR环境变量把临时目录指到空间足够的分区装完再改回来。Oracle目录规划我习惯用标准的OFA结构ORACLE_BASE放在/u01/app/oracleORACLE_HOME放在/u01/app/oracle/product/19.0.0/dbhome_1。这样做的理由是升级或打补丁时可以平行保留多个Home回滚也方便。这个布局是Oracle文档里的推荐路径社区里绝大多数部署方案也沿用这套结构。2.2 用yum把所有依赖包装齐一条命令避免预检查反复报错依赖包是新手最容易翻车的点。Oracle官方把这堆包收进了oracle-database-preinstall-19c这个RPM里但它依赖Oracle的yum源很多内网环境没有配这个源。老老实实走yum install最省心yum -y install bc binutils compat-libcap1 compat-libstdc-33 \ elfutils-libelf elfutils-libelf-devel fontconfig gcc gcc-c \ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc \ libstdc-devel libX11 libXext libXrender libXtst libXau \ make net-tools nfs-utils openmotif python2 readline \ sysstat unixODBC unixODBC-devel libnsl先解释为什么是这一串binutils、gcc、make用于编译数据库在安装后期会对部分二进制做relinked操作ksh是安装脚本依赖的shell解释器漏了会在脚本阶段报错libaio是异步IO库数据库启动时必须要用sysstat提供sar和iostat官方安装检查会看它是否存在。libnsl这个包在CentOS 7.x较新版本里容易漏漏了会在安装link阶段报shared object错误先装上一劳永逸。装完再用rpm核对一遍缺失项。网上有人写循环脚本我一般直接这样来一遍rpm -q --qf %{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n \ bc binutils compat-libcap1 compat-libstdc-33 gcc gcc-c \ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc \ libstdc-devel libX11 libXtst libXext make sysstat这段rpm -q的作用是逐个确认版本没装到的包会输出package not installed。--qf指定了输出格式把软件名、版本、release和架构完整打印出来方便对照。如果你用的是RHEL或Oracle Linux也可以直接yum install oracle-database-preinstall-19c让系统自动补齐依赖但前提是能连到Oracle的yum仓库内网环境就别指望这条了。2.3 创建Oracle用户与目录结构权限问题一次到位Oracle软件不允许用root直接安装必须建专用用户。常见做法是建oinstall主组和dba辅助组然后把目录属主一次性交给oracle用户groupadd oinstall groupadd dba useradd -g oinstall -G dba oracle echo Oracle_123 | passwd --stdin oracle mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1 chown -R oracle:oinstall /u01/app chmod -R 775 /u01/app逐一说明oinstall组是Oracle Inventory的所有者组负责管理安装清单dba组授权oracle用户具备数据库管理员的OS权限之后sqlplus / as sysdba能否免密登录就看这个组加没加对。useradd的-g指定主组-G指定附加组两者分开少了任何一个后期都会出权限报错。mkdir -p一次性把ORACLE_HOME的上级目录建好这样第4章运行安装脚本时会直接使用这个路径。注意chmod 775后其他用户对/u01/app只有读和执行权限没有写权限这个权限位是社区里总结出来的安全且不折腾的配置。这里还有个容易被忽略的细节umask。oracle用户登录后默认umask如果是0027会创建出权限过严的文件导致后面的root.sh或netca读不了。建议在oracle用户的环境里强制umask 022echo umask 022 /home/oracle/.bash_profile echo export LANGen_US.UTF-8 /home/oracle/.bash_profileumask 022保证安装过程中生成的文件对同组用户可读LANG设成英文是为了防止中文系统下Oracle安装程序出现乱码或某些脚本因locale解析异常而中断。这两个配置虽然短但属于那种不写就会在奇怪的地方卡住的操作算是提前吃的后悔药。3. 内核参数与资源限制sysctl、limits和SELinux的实操配置系统级参数直接影响Oracle能不能启动、启动后会不会被OOM杀掉。这一章把内核参数、用户资源限制、SELinux与防火墙、主机名解析四类配置逐一讲清配置完用sysctl -p和ulimit做验证。3.1 九个内核参数一次写入sysctl.conf半数的实例问题都出在这Oracle官方提供了一份推荐参数我每次安装都用下面这份直接追加到/etc/sysctl.conf参数推荐值作用fs.aio-max-nr1048576异步IO请求数上限fs.file-max6815744系统级文件句柄上限kernel.shmall1073741824共享内存页数上限kernel.shmmax4398046511104单个共享内存段最大字节数kernel.shmmni4096系统共享内存段数量kernel.sem250 32000 100 128信号量参数net.ipv4.ip_local_port_range9000 65500本地端口可用范围net.core.rmem_default / wmem_default262144TCP默认收发缓冲区net.core.rmem_max4194304TCP最大接收缓冲区net.core.wmem_max1048576TCP最大发送缓冲区vm.swappiness10内存回收策略倾向写入命令很简单cat /etc/sysctl.conf EOF fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 1073741824 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 vm.swappiness 10 EOF sysctl -pkernel.sem是信号量参数四个值分别是SEMMSL、SEMMNS、SEMOPM和SEMMNI。数据库并发进程多默认值经常不够用启动时如果报ORA-27123或无法获取信号量多半是它没调。kernel.shmmax控制单个共享内存段的最大字节数这个值不够时Oracle会在启动时报内存段分配失败改成4GB基本能覆盖绝大多数场景。vm.swappiness10是特意调低的目的是让系统优先使用内存而不是疯狂换到swap设成0容易触发OOM10是折中值。net.ipv4.ip_local_port_range设置为9000到65500是因为数据库服务器对外提供1521端口同时内部要发起大量连接端口范围太窄会在高并发时出现Cannot assign requested address。这些参数不是抄完就完事改完必须sysctl -p重载再用sysctl kernel.sem验证实际生效值。3.2 SELinux与防火墙测试环境直接关生产环境单独放行SELinux是Linux里最容易让Oracle安装翻车的黑匣子。Oracle官方对SELinux的策略是支持enforcing模式下的例外配置但实际操作里配置例外很繁琐涉及用audit2allow生成策略很多人配完反而更乱。我的经验是测试环境直接设permissive生产环境至少也要先跑通一次安装确认没有策略干扰后再讨论收紧sed -i s/^SELINUX.*/SELINUXpermissive/ /etc/selinux/config setenforce 0 getenforce第一行把配置文件里的SELINUX改成permissive保证重启后依然生效setenforce 0是在当前运行中临时关闭不需要重启getenforce输出应为Permissive。注意不要用disabledpermissive和disabled的区别是permissive还保留策略检查只是不拦截彻底关闭要改disabled并重启生产环境关掉SELinux要评估安全责任。防火墙同理。Oracle监听使用1521端口装完软件后如果从其他机器连不上第一反应就该是firewalld还开着systemctl stop firewalld systemctl disable firewalld systemctl status firewalldstop是立即停止disable是防止开机自启。如果生产环境要求防火墙开启则单独放行1521firewall-cmd --permanent --add-port1521/tcp firewall-cmd --reload。注意如果改了LISTENER端口这里的1521要跟着改需要EM Express时把5500端口也一起放行。3.3 用户资源限制limits.conf与systemd双保险Linux通过pam的limits.conf限制用户能打开的文件数和进程数。Oracle官方建议oracle用户nofile软限制1024、硬限制65536nproc软限制2047、硬限制16384stack软限制10240KB。配置写入limits.conf后还要检查/etc/security/limits.d/目录下有没有其他文件覆盖它CentOS7默认的20-nproc.conf会把普通用户的nproc限死在4096必须一起调整cat /etc/security/limits.conf EOF oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 32768 EOF cat /etc/security/limits.d/20-nproc.conf EOF * soft nproc 4096 oracle soft nproc 2047 EOFlimits.conf里soft是软限制超过会告警hard是硬限制超过直接拒绝。20-nproc.conf里把oracle的nproc单独覆盖回来避免全局通配符把oracle限制在4096。验证时用su - oracle切到oracle用户执行ulimit -n和ulimit -u确认输出与配置一致。除了pam限制CentOS7上systemd也会对进程做资源限制ohasd和数据库服务由systemd拉起时会继承service文件里的LimitNOFILE。常见做法是在/etc/systemd/system.conf里设DefaultLimitNOFILE65536和DefaultLimitNPROC16384这样系统下所有服务都能继承避免明明limits.conf配了数据库进程还是被限制的情况。改完执行systemctl daemon-reload让systemd重新加载。主机名解析是另一个让安装出现玄学失败的点。Oracle在安装和启动时需要解析主机名如果/etc/hosts里没有本机名映射会报ORA-12545或OHASD起不来hostnamectl set-hostname db-server echo 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 127.0.0.1 db-server /etc/hostshostnamectl改主机名后重写/etc/hostshostname -i能正确输出IP就说明解析正常。不少人在/etc/hosts里把主机名映射到公网IP或多个IP导致Oracle监听绑定错地址客户端连不上。主机名解析保持一个主机名对应一个内网IP是最稳的。4. 安装Oracle 19C软件与建库从runInstaller到dbca的完整步骤这一章是整条链路的主干。我以静默安装为主线因为生产服务器大多数没有图形界面即使有远程X11转发也容易在安装过程中断掉静默安装配合应答文件是Linux服务器上最可靠的安装方式。4.1 解压安装包与准备应答文件跳过图形界面的第一步把下载好的LINUX.X64_193000_db_home.zip上传到服务器后先解压。注意解压目标就是ORACLE_HOME本身Oracle要求安装包解压后不能移动到其他路径否则安装程序检测不到unzip -q LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.0.0/dbhome_1 chown -R oracle:oinstall /u01/app/oracle/product/19.0.0/dbhome_1 ls -l /u01/app/oracle/product/19.0.0/dbhome_1/runInstallerunzip -q是静默解压-d指定目标目录解压后必须chown给oracle用户否则runInstaller没有写权限。安装包自带应答文件模板$ORACLE_HOME/install/response/db_install.rsp复制一份出来改不要直接改原模板方便以后复用cp /u01/app/oracle/product/19.0.0/dbhome_1/install/response/db_install.rsp \ /home/oracle/db_install_19c.rsp chown oracle:oinstall /home/oracle/db_install_19c.rsp需要修改的核心参数用sed逐项替换或者直接用vim改。必改项是这些oracle.install.optionINSTALL_DB_SWONLY表示只装软件不建库建库放到后面用dbca独立做好处是出错时定位清楚软件装好后失败不影响重来。INVENTORY_LOCATION指定oraInventory位置默认在/u01/app/oraInventoryORACLE_BASE和ORACLE_HOME按前面规划直接填。19C对OS组的要求比11g多除了OSDBA_GROUP还要填OSBACKUPDBA_GROUP、OSDGDBA_GROUP、OSKMDBA_GROUP、OSRACDBA_GROUP这些统一填dba即可少填一个会在运行时提示语法错误。4.2 静默运行runInstaller日志、root.sh与orainstRoot.sh确认应答文件无误后切到oracle用户执行安装。runInstaller实际要跑几十分钟期间不要断开ssh建议用nohup挂后台把输出写到日志文件su - oracle cd /u01/app/oracle/product/19.0.0/dbhome_1 nohup ./runInstaller -silent -responseFile /home/oracle/db_install_19c.rsp \ -ignorePrereqFailure -ignoreDiskWarning \ /home/oracle/install_19c.log 21 runInstaller -silent告诉安装程序不要拉起图形界面-responseFile指定应答文件-ignorePrereqFailure跳过非致命预检比如某些包版本略低的告警但要谨慎用——如果依赖包真的漏了跳过预检会在后续link阶段炸出来-ignoreDiskWarning忽略磁盘空间告警适用于磁盘刚好差一点点的场景。日志写到/home/oracle/install_19c.log后面排查全靠它。安装期间看日志的方法很关键tail -f /home/oracle/install_19c.log grep -i successfully setup software /home/oracle/install_19c.log grep -iE error|fatal|failed /home/oracle/install_19c.log日志里出现Successfully Setup Software表示软件安装成功出现ERROR或FATAL去对应行排查。安装完成后安装进程会提示以root身份执行root.sh这一步很多人不敢执行但不执行root.shOracle的OS级脚本不会配置好后面建库会失败。root.sh执行方式# 以 root 身份执行注意两段脚本有先后顺序 sudo -i /u01/app/oraInventory/orainstRoot.sh /u01/app/oracle/product/19.0.0/dbhome_1/root.shorainstRoot.sh把oraInventory的属主和权限改成oinstall组可写root.sh负责创建/etc/init.d里的ohasd脚本、配置集群就绪服务单机版也有。如果没有sudo授权就另外开一个root会话执行。执行过程中如果报ohasd相关错误别急着重跑去看第5章的排查方法。4.3 用netca配置监听1521端口与LISTENER的静默创建软件装完后监听器还没创建需要netca。监听的作用是让客户端通过网络连接数据库没有监听从其他机器访问会报ORA-12541。静默命令非常简单su - oracle /u01/app/oracle/product/19.0.0/dbhome_1/bin/netca -silent \ -responsefile /u01/app/oracle/product/19.0.0/dbhome_1/network/install/netca_typ.rspnetca_typ.rsp是安装包自带的监听模板通知netca使用默认配置端口1521、协议TCP、监听主机为当前机器主机名。执行完以后查看监听状态确认/u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl statuslsnrctl status输出里如果看到Listener Parameter File和Services段正常说明监听已经就绪。如果看到unknown或no service handle大概率是后面还没建库先不慌建完库再刷新。端口冲突时netca报TNS-01153或TNS-01106说明有监听已经占用1521需要在$ORACLE_HOME/network/admin/listener.ora里改PORT。4.4 用dbca建库字符集、内存与密码策略一次定对软件和监听就绪后最后一步是创建数据库实例。dbca同样支持静默模式这步的参数决定未来很长一段时间数据库的运行表现/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbca -silent \ -createDatabase \ -templateName General_Purpose.dbc \ -gdbname orcl \ -sid orcl \ -sysPassword Oracl3_Str0ng \ -systemPassword Oracl3_Str0ng \ -characterSet AL32UTF8 \ -memoryMgmtType AUTO_SGA \ -totalMemory 2048 \ -emConfiguration NONE \ -redoLogFileSize 200 \ -storageType FSdbca -silent -createDatabase是静默建库主命令templateName用General_Purpose.dbc是通用模板装完可以直接跑业务gdbname和sid都叫orcl前者是全局数据库名后者是实例标识单实例场景下保持一致最简单字符集AL32UTF8是现在的主流选择中文和emoji都没问题选错字符集后面改起来极麻烦memoryMgmtType AUTO_SGA配合totalMemory 2048让SGA与PGA自动管理2048表示给数据库的总内存是2048MBemConfiguration NONE省去建Enterprise Manager不占额外端口redoLogFileSize设200MB对中等并发场景是起步值。dbca建库过程大约15到30分钟日志位置在/u01/app/oraInventory/logs/或$ORACLE_HOME/cfgtoollogs/dbca/下看到Database creation complete说明建库成功。这行日志是整条安装链路的最后确认点确认后用sqlplus验证su - oracle export ORACLE_SIDorcl sqlplus / as sysdbaselect instance_name, status from v$instance;能查询到v$instance且状态是OPEN代表数据库已经正常启动。如果startup时报内存相关错误回到第3章检查sysctl里的shmmax和shmall是否真的生效。5. Oracle 19C安装疑难杂症排查5个高复发问题与修复方法这一章把我在不同机器上遇到过的、社区里高复现的问题汇总成清单每条按现象、原因、解决整理可以直接对照日志快速定位。5.1 /tmp空间不足导致预检查直接失败现象runInstaller启动后一两分钟就退出日志里出现insufficient space in the /tmp directory或CLSU-00100磁盘明明还有几十GB安装却始终停在这一步。原因Oracle安装预检查会测试/tmp可写空间要求至少1GB很多虚拟机和云主机把/tmp挂在tmpfs上容量默认是物理内存的一半甚至更低。解决df -h /tmp先确认确实不足且不方便分区时给oracle用户设置临时的TMP和TMPDIR变量指向空间大的目录再重跑mkdir -p /home/oracle/tmp chown oracle:oinstall /home/oracle/tmp export TMP/home/oracle/tmp export TMPDIR/home/oracle/tmp注意两个变量必须同时设置Oracle的Java安装程序会分别读取只设一个时仍会有一部分进程写入/tmp报同样错误。装完软件后可以取消这两个环境变量。5.2 libnsl缺失导致link阶段报shared object错误现象安装进度走到约70%时突然中止日志出现libnsl.so.1: cannot open shared object file。原因CentOS 7.6之后默认源里没有了libnsl兼容库Oracle 19C的relink阶段需要它纯净系统上尤其常见。解决补装libnsl装完重新跑一次安装。Oracle安装是可重入的不会因为上次失败产生残留问题yum install -y libnsl cd /u01/app/oracle/product/19.0.0/dbhome_1 su - oracle -c /u01/app/oracle/product/19.0.0/dbhome_1/runInstaller -silent -responseFile /home/oracle/db_install_19c.rsp同理如果还有别的库报shared object通用做法是去报错里搜库名用yum provides定位属于哪个包再安装。compat-libstdc-33在新源里也常缺缺了会报libstdc.so.5找不到一起装上。5.3 root.sh执行到ohasd时卡住或失败现象root.sh执行到一半长时间没有输出或直接报SEVERE和ohasd failed to start执行完后lsnrctl和dbca都正常但系统日志里反复有ohasd相关错误。原因ohasd需要正确的hostname解析/etc/hosts里主机名没对应到本机IP时集群就绪服务无法注册另一类原因是CentOS7上systemd单元oracle-ohasd没有被正常启用。解决先验证解析再处理服务hostname hostname -i getent hosts $(hostname)hostname -i能正确输出IP说明解析正常输出错误或空白就按第3.3节重写/etc/hosts。解析没问题的话直接重置ohasd服务systemctl status oracle-ohasd systemctl enable oracle-ohasd systemctl start oracle-ohasd /u01/app/oracle/product/19.0.0/dbhome_1/root.shoracle-ohasd是root.sh安装过程中自动生成的systemd单元enable加start后重跑root.sh是标准修复顺序。重跑前确认上次没留下半成品配置有的话按顺序把orainstRoot.sh和root.sh重新执行一遍两个脚本本身是幂等设计重复执行不会叠加配置。5.4 监听已启动但客户端报ORA-12541或ORA-12514现象lsnrctl status看监听是UP客户端连接报ORA-12541: TNS:no listener或ORA-12514: TNS:listener does not currently know of service。原因ORA-12541通常是防火墙拦了1521或监听绑定到了127.0.0.1ORA-12514多半是实例已建好但动态注册没生效Service没出现在监听里。解决分别处理。监听绑定问题看listener.ora里HOST字段写成localhost就改成实际内网IP防火墙问题按第3.2节放行1521。动态注册是Oracle常见的血泪点实例启动后PMON进程会自动向监听注册但会延迟几十秒且要求local_listener与监听配置一致cat $ORACLE_HOME/network/admin/listener.ora sqlplus / as sysdbashow parameter local_listener;local_listener为空会走默认的1521一般没问题。要确认实例已注册重载监听再查服务lsnrctl reload lsnrctl servicesservices列表里能看到或cl对应的服务名说明注册成功看不到就执行alter system register让PMON立即重新注册。5.5 启动数据库报ORA-27102或实例长时间卡在startup现象sqlplus里startup直接报ORA-27102: out of memory或建库完成后free命令看到swap使用率飙升系统交互变慢。原因物理内存不足且SGA/PGA分配过大是直接原因更深层是vm.swappiness没调下去Linux在内存尚可时也频繁换页数据库进程被换出导致性能雪崩。解决先看当前内存和参数再把swap倾向调低free -m cat /proc/sys/vm/swappiness sqlplus / as sysdbashow parameter sga_target; show parameter pga_aggregate_target;swappiness输出大于10就执行sysctl -w vm.swappiness10并写入sysctl.conf。sga_target和pga加起来超过物理内存的70%时调小SGA并重启实例alter system set sga_target1024M scopespfile; alter system set pga_aggregate_target512M scopespfile;低内存机器上可以改用memory_target让Oracle自己测可用内存但总原则是SGA加PGA不要超过物理内存的60%否则Linux本身就会变得不健康。6. 安装收尾的三个实测技巧环境变量、开机自恢复与一键巡检6.1 把ORACLE_BASE、ORACLE_HOME、TNS_ADMIN一次写进.bash_profile软件装完最容易被遗忘的是oracle用户的环境变量。很多人切到oracle用户后直接敲sqlplus报command not found就是因为PATH没带$ORACLE_HOME/bin。我每次新建环境都会把这六行一次写进去cat /home/oracle/.bash_profile EOF export ORACLE_BASE/u01/app/oracle export ORACLE_HOME/u01/app/oracle/product/19.0.0/dbhome_1 export ORACLE_SIDorcl export PATH$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH$ORACLE_HOME/lib export TNS_ADMIN$ORACLE_HOME/network/admin EOFTNS_ADMIN这一行最容易漏漏了以后sqlplus sys/passorcl会报ORA-12154找不到tnsnames.ora。配好后任何登录到oracle用户的人都能直接连库不用到处翻tns文件。6.2 用dbstart与/etc/oratab实现开机自恢复别只startup机器重启后数据库不会自己起来常见做法是配置dbstart开机执行。dbstart依赖/etc/oratab里实例条目最后一位的Y/N标志默认是N要先改成Y。再给dbstart配好监听环境否则它找不到监听器sed -i s/:N$/:Y/ /etc/oratab echo ORACLE_HOME_LISTNER$ORACLE_HOME /u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart chmod x /etc/rc.d/rc.local echo /u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart /etc/rc.d/rc.localsed -i把oratab里所有以:N结尾的实例标志改成:Y表示允许dbstart启动ORACLE_HOME_LISTNER告诉dbstart用哪个Home下的监听不设会直接退出写入rc.local后要确保该文件有执行权限CentOS7默认没有chmod x就是补这一步。6.3 用一条巡检命令看实例与监听把安装日志按步骤归档最后给自己留一条快手命令覆盖实例和监听两个层面的健康状态su - oracle -c sqlplus -s / as sysdba select instance_name,status from v\$instance; su - oracle -c lsnrctl status | grep -E Listener|Service输出里看到OPEN和Listener Running就是健康状态。我的习惯是每完成一个大步骤就把日志复制一份命名成step2_sysctl.log这种格式方便复盘时确认是哪一步带来的变化。装完第一周隔两天跑一次巡检记下内存和swap趋势很多所谓的玄学问题事后看都是资源曲线早就埋下的伏笔。希望帮到你。本文还有配套的精品资源点击获取