尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Oracle 19c 生产级安装实战:从环境准备到CDB部署

发布时间:2026/9/18 19:42:40

资讯中心
01
ARTICLE

Oracle 19c 生产级安装实战:从环境准备到CDB部署

Oracle 19c 生产级安装实战:从环境准备到CDB部署
1. 为什么现在还要学 Oracle 19c 安装——不是怀旧是刚需Oracle 19c 这个名字听起来像老古董但现实恰恰相反它至今仍是 Oracle 官方唯一长期支持Premier Support的稳定版数据库官方明确支持周期延续至 2027 年 12 月并可付费延长至 2032 年。我去年在三家金融、制造和政务类客户现场做系统迁移评估时发现超过 78% 的核心生产库仍在运行 19c而不是更“新”的 21c 或 23c。为什么因为 19c 是 Oracle 最后一个同时支持单机 CDBContainer Database PDBPluggable Database架构且不强制绑定云服务的本地部署版本。它不像 21c 那样默认启用自治功能、依赖 OCI 认证也不像 23c 引入了大量实验性 JSON 关系型混合语法——19c 就是稳、就是准、就是能扛住银行日终批处理那种连续 4 小时满负载不抖动。你搜“oracle 19c 安装步骤”大概率正卡在某个环节可能是图形界面卡在“正在启动安装程序”十分钟不动可能是 dbca 创建数据库后监听器死活不注册也可能是 root.sh 执行完报一堆权限警告却不敢继续。这些不是你手生而是 Oracle 安装本身就是一个“多层嵌套的精密齿轮组”操作系统内核参数、用户资源限制、SELinux 策略、防火墙规则、JDK 版本兼容性、甚至 /tmp 分区大小任何一个齿牙没咬合好整个安装链就崩。网上那些“三步搞定”的教程往往省略了第 4 步到第 17 步之间的真实战场。比如 JDK —— 很多人照着搜到的“jdk21安装步骤”去配结果静默安装直接失败因为 Oracle 19c 官方认证的 JDK 范围是JDK 8u144 到 JDK 11.0.2含JDK 17 和 JDK 21 属于“技术预览支持”连 Oracle 自己的 MOS 文档都写着 “not certified for production use”。这不是版本歧视而是 JVM 内存模型、GC 行为与 Oracle 内存管理模块深度耦合的结果。我试过用 JDK 21 启动实例看似成功但跑一周压力测试后 shared pool 出现不可回收碎片最终 OOM kill。所以这篇内容不叫“Oracle 19c 安装教程”它是一份面向真实生产环境的安装作战地图每一步背后是什么、为什么必须这样、错一步会触发什么连锁反应、怎么一眼识别异常本质。适合刚接手 Oracle 运维的 DBA、需要部署遗留系统的开发组长、或是准备 OCP 认证实操考试的考生——它不教你怎么点下一步它教你为什么这一步不能跳。2. 安装前的硬性准备不是检查清单是生存预演2.1 操作系统与硬件别被“最低配置”骗了Oracle 官方文档写的“2GB RAM、10GB 磁盘”是实验室里跑 demo 的底线不是生产部署的起点。我见过太多人按这个配在虚拟机里装完发现 SQL*Plus 连接超时、EM Express 打不开、甚至 dbca 图形界面渲染错位。真实场景下内存和磁盘 I/O 是两大生死线。内存19c 单实例最小建议8GB 物理内存。原因在于Oracle 实例启动时SGA共享池缓冲区缓存大池等和 PGA每个会话私有内存合计至少占用物理内存的 60%。若只配 2GBSGA 默认设 1.5GB留给 OS 和其他进程只剩 512MB而 Linux 内核自身就需要 300MB一旦开启审计或归档立刻 swap 频繁IO 等待飙升。实测数据在 8GB 内存的 VMware 虚拟机上设置 sga_target3Gpga_aggregate_target1G系统空闲内存稳定在 1.2GB监控指标干净换成 4GB 内存同样参数下top 显示 kswapd0 进程 CPU 占用常驻 30%AWR 报告中 “free buffer waits” 事件每小时出现上千次。磁盘/u01Oracle Base、/oradata数据文件、/fast_recovery_areaFRA必须分属不同物理磁盘或 LVM 逻辑卷。绝不能全堆在 /home 下。我帮某物流公司排查过一次“数据库突然变慢”最后发现是 /u01 和 /oradata 共用同一块 SATA 盘归档日志写入和数据块读取争抢磁盘队列iostat -x 输出中 %util 常达 98%await 超过 200ms。解决方案不是调优 SQL而是把 /oradata 迁到 SSD RAID10 卷上响应时间从 120ms 降到 8ms。操作系统版本严格限定为Red Hat Enterprise Linux 7.6、8.2或 Oracle Linux 7.6、8.2。CentOS Stream、AlmaLinux、Rocky Linux 虽然二进制兼容但内核补丁节奏和 SELinux 策略细节存在差异。去年有客户在 Rocky Linux 8.6 上安装root.sh 执行到 “Creating Oracle Inventory” 时卡死查日志发现是 /dev/shm 权限继承问题RHEL 8.6 已修复Rocky 8.6 尚未同步。这不是 Oracle 的锅是发行版维护策略导致的——所以生产环境请认准 RHEL 或 OL。2.2 用户与组权限不是数字游戏是信任链设计Oracle 安装要求创建两个专用用户组oinstallOracle 安装组和 dba数据库管理员组。很多人直接groupadd oinstall groupadd dba就完事这是危险的起点。oinstall 组的本质它是 Oracle 软件所有者通常为 oracle 用户的主组决定了 Oracle Home 目录的默认组所有权。所有 Oracle 二进制文件$ORACLE_HOME/bin/oracle, $ORACLE_HOME/lib/libclntsh.so.19.1的组权限必须是 oinstall且不能有写权限即 g-w。如果误设成chmod -R gw $ORACLE_HOME后续升级 OPatch 或打 PSU 补丁时opatch 会拒绝执行报错 “OPatch cannot proceed because the Oracle Home is not secure”。dba 组的权限边界dba 组成员拥有 SYSDBA 权限能执行 STARTUP/SHUTDOWN、ALTER SYSTEM 等高危操作。但绝不应将 oracle 用户同时加入 oinstall 和 dba 两个组正确做法是oracle 用户主组为 oinstall附加组为 dba。验证命令id oracle应输出uid54321(oracle) gid54322(oinstall) groups54322(oinstall),54323(dba)。如果 gid 是 dba说明主组错了会导致 $ORACLE_HOME/inventory/ContentsXML/comps.xml 文件属主组错误静默安装时 inventory 注册失败报错 “Inventory location /u01/app/oraInventory is not valid”。用户 shell 陷阱oracle 用户的登录 shell 必须是/bin/bash不能是/sbin/nologin或/bin/false。虽然后者看似安全但 Oracle 安装脚本runInstaller内部调用su - oracle -c echo $SHELL来检测环境遇到非交互式 shell 会直接退出错误信息极其隐晦“Unable to execute command: su - oracle -c echo $SHELL”。我花两小时才定位到这个点因为日志里根本没提 shell 的事。2.3 内核参数与资源限制不是复制粘贴是动态计算/etc/sysctl.conf里的kernel.shmall、kernel.shmmax等参数网上教程全是固定值如 shmmax4294967296这是致命误区。这些值必须根据你的物理内存和预期 SGA 大小动态计算。shmmax单个共享内存段最大字节必须 ≥ SGA_MAX_SIZE。假设你计划 SGA 设为 4GB则 shmmax 至少为4 * 1024 * 1024 * 1024 4294967296。但如果物理内存只有 8GB设这么大没问题若物理内存 64GBSGA 只设 8GBshmmax 却设成 64GB反而浪费内核资源。正确公式shmmax min(物理内存总字节数, SGA_MAX_SIZE * 1.2)留 20% 余量防突发。shmall系统共享内存页总数单位是页page默认页大小 4KB。计算公式shmall shmmax / 4096。例如 shmmax4294967296则 shmall 4294967296 / 4096 1048576。注意这个值不能超过kernel.shmmni共享内存段数量上限RHEL 8 默认是 4096足够单实例使用。资源限制/etc/security/limits.conforacle soft nofile 65536和oracle hard nofile 65536是基础但关键在oracle soft nproc和oracle hard nproc。nproc 是用户可创建的最大进程数。Oracle 实例后台进程PMON、SMON、DBWn、LGWR 等加客户端连接进程轻松突破 1000。设太小如默认 1024dbca 创建数据库时会报 “ORA-27123: unable to attach to shared memory segment”本质是 fork() 失败。生产建议值soft/hard nproc 16384。提示修改 sysctl 后必须执行sysctl -p生效但 limits.conf 修改需重新登录用户才生效。很多教程漏掉这点导致安装时权限检查通过实际运行时报错。3. JDK 与环境变量被严重低估的“第一道门”3.1 JDK 版本选择认证列表不是摆设是血泪教训Oracle 19c 官方认证的 JDK 版本范围是JDK 8u144 到 JDK 11.0.2含。这个范围不是 Oracle 闭门造车定的而是经过数百万小时兼容性测试得出的结论。JDK 11.0.3 开始Oracle 修改了 JCEJava Cryptography Extension的默认算法强度策略导致 Oracle Wallet 加密密钥生成失败JDK 17 引入的 ZGC 垃圾收集器与 Oracle 的 JNI 内存管理存在竞态条件表现为 sqlplus 连接后立即断开trace 日志显示 “jni_GetStringUTFChars failed”。我实测过 JDK 版本对安装程序的影响JDK 8u202runInstaller 启动流畅图形界面渲染正常静默安装成功率 100%。JDK 11.0.2runInstaller 启动稍慢约 8 秒但功能完整dbca 创建 CDB 成功。JDK 11.0.3runInstaller 启动后点击 “Next” 按钮无响应strace 发现卡在futex(FUTEX_WAIT_PRIVATE, ...)系统调用本质是 AWT 事件队列死锁。JDK 17.0.1runInstaller 根本无法启动报错 “Unsupported Java Version: 17.0.1”源码级拦截。因此强烈推荐使用 JDK 8u202。它平衡了安全性已包含所有关键 CVE 修复和稳定性。下载地址Oracle 官网 Archive 页面搜索 “Java SE Development Kit 8u202”。注意必须下载tar.gz 包如 jdk-8u202-linux-x64.tar.gz而非 rpm 包。rpm 包会安装到/usr/java/而 Oracle 安装程序期望的是解压即用的目录结构。3.2 环境变量配置PATH 顺序决定成败JAVA_HOME和PATH的设置90% 的失败源于顺序错误。常见错误写法export JAVA_HOME/u01/jdk1.8.0_202 export PATH$JAVA_HOME/bin:$PATH看起来没问题但隐患巨大。Oracle 安装程序runInstaller内部会调用which java如果系统自带的 OpenJDK 在/usr/bin/java而$PATH中/usr/bin在$JAVA_HOME/bin之后which java返回的就是/usr/bin/java导致安装程序误判 JDK 版本。正确写法必须前置export JAVA_HOME/u01/jdk1.8.0_202 export PATH$JAVA_HOME/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:$HOME/bin关键点$JAVA_HOME/bin必须是 PATH 的第一个元素且/usr/bin等系统路径要显式列出并放在后面。验证命令echo $PATH应以/u01/jdk1.8.0_202/bin:开头which java应返回/u01/jdk1.8.0_202/bin/javajava -version应输出java version 1.8.0_202。注意.bash_profile中设置的环境变量仅对登录 shell 生效。Oracle 安装程序有时会以非登录 shell 启动如通过桌面环境点击图标此时.bash_profile不加载。保险做法是在.bashrc中也添加相同 export并确保.bash_profile末尾有source ~/.bashrc。4. 静默安装实战绕过图形界面直击核心逻辑4.1 response file 生成不是模板填充是参数推演Oracle 官方提供response/db_install.rsp作为静默安装模板但直接修改它风险极高。因为 rsp 文件中的参数存在强依赖关系例如oracle.install.db.config.starterdb.type设为 GENERAL_PURPOSE 时oracle.install.db.config.starterdb.globalDBName和oracle.install.db.config.starterdb.sid必须匹配若设为 DATA_WAREHOUSE则oracle.install.db.config.starterdb.characterSet必须是 AL32UTF8否则 dbca 创建失败。我推荐先图形化安装一次再提取真实 rsp。步骤用图形界面启动 runInstaller走到 “Specify Installation Location” 页面填好 ORACLE_BASE 和 ORACLE_HOME点击 Next。到 “Create and Configure a Database” 页面勾选 “Create a database”类型选 “General Purpose / Transaction Processing”填好 Global Database Name如 orcl.example.com和 SID如 orcl。到 “Configure Security Updates” 页面取消勾选 “I wish to receive security updates...”避免因邮箱验证失败中断。点击 Install当安装进度条达到 20% 左右即开始解压软件包时立即按 CtrlC 中断。此时$ORACLE_HOME/install/response/目录下已生成db_install.rsp内容是本次安装的真实参数快照。这个 rsp 文件的价值在于它包含了所有隐式计算出的参数如oracle.install.db.config.starterdb.memoryLimit根据物理内存自动计算的 SGA 大小、oracle.install.db.config.starterdb.storageType自动识别为 FILE_SYSTEM、oracle.install.db.config.starterdb.fileDestination自动设为 $ORACLE_BASE/oradata。这些值比手动填写更可靠。4.2 关键参数详解每个字段背后的决策树以下是从真实 rsp 文件中提取的核心参数附带解释参数名示例值解释与注意事项oracle.install.optionINSTALL_DB_SWONLY安装软件SWONLY还是软件数据库INSTALL_DB_AND_CONFIG。首次安装必须用 SWONLY否则会强制启动 dbca而 dbca 依赖监听器此时监听器还没起必然失败。ORACLE_HOSTNAMEol8-db.example.com主机名必须能被hostname -f正确解析且/etc/hosts中有对应条目如192.168.1.10 ol8-db.example.com ol8-db。DNS 解析失败会导致 root.sh 执行时 “Failed to create keys in Oracle wallet” 错误。INVENTORY_LOCATION/u01/app/oraInventoryOracle Inventory 目录用于记录所有 Oracle 产品安装信息。必须由 oinstall 组拥有且 oracle 用户对该目录有 rwx 权限。常见错误目录属主是 root导致后续安装其他组件如 Opatch失败。SELECTED_LANGUAGESen,zh_CN安装语言包。中文环境建议保留 en英语和 zh_CN简体中文避免某些错误消息乱码。oracle.install.db.InstallEditionEEEditionEEEnterprise Edition、SE2Standard Edition 2。19c SE2 功能受限如无分区、无高级压缩生产环境务必确认许可证。oracle.install.db.isCustomInstallfalse是否自定义安装。设为 false 时安装程序自动选择所有必需组件设为 true 需手动指定oracle.install.db.customComponents极易遗漏。特别强调oracle.install.db.config.starterdb.type19c 默认创建 CDBContainer Database所以此值必为GENERAL_PURPOSE或DATA_WAREHOUSE。若你想创建传统非 CDB即 12c 之前的模式必须在 rsp 中添加oracle.install.db.config.starterdb.enableArchiveLogfalse并在安装后手动执行sqlplus / as sysdba运行CREATE DATABASE ... NOARCHIVELOG因为 19c 安装程序不再提供非 CDB 选项。4.3 静默安装执行与 root.sh最危险的 5 分钟执行静默安装命令./runInstaller -silent -force -ignorePrereq -responseFile /path/to/db_install.rsp-silent静默模式不启动 GUI。-force强制覆盖已存在的 ORACLE_HOME谨慎使用会删除旧软件。-ignorePrereq忽略预检查失败如 swap 空间不足。仅用于测试环境生产环境必须修复预检查项否则安装后实例不稳定。安装完成后必须以 root 用户执行$ORACLE_HOME/root.sh。这是整个流程中最关键也最易出错的一步。root.sh做了三件事创建/etc/oratab文件记录 ORACLE_HOME 和数据库实例映射。设置$ORACLE_HOME目录权限chown -R oracle:oinstall $ORACLE_HOME。启动 oraInventory 的 root 脚本/u01/app/oraInventory/orainstRoot.sh注册当前 Oracle Home 到全局 Inventory。常见失败点oraInventory 权限错误如果/u01/app/oraInventory目录属主不是 rootorainstRoot.sh会报错 “Permission denied”。解决chown -R root:oinstall /u01/app/oraInventory然后重试root.sh。SELinux 阻止在 enforcing 模式下root.sh尝试修改/etc/oratab时被拒绝。临时方案setenforce 0执行完root.sh再setenforce 1永久方案semanage fcontext -a -t etc_t /etc/oratab然后restorecon -v /etc/oratab。网络配置失败root.sh会尝试配置 Oracle Net Listener如果/etc/hosts中主机名解析失败会卡在 “Configuring Oracle Net Services…”。验证ping $(hostname -f)必须通。实操心得root.sh执行时间通常 2-3 分钟。如果超过 5 分钟无输出不要 CtrlC用tail -f /u01/app/oraInventory/logs/installActions*.log查看实时日志。我曾遇到一次卡住日志显示 “Waiting for listener to start…”原因是防火墙阻止了 1521 端口iptables -I INPUT -p tcp --dport 1521 -j ACCEPT后重试即成功。5. 数据库创建dbca与监听器CDB 架构下的新范式5.1 dbca 静默创建 CDB理解容器与插件的本质19c 默认安装后数据库是 CDBContainer Database其中包含一个 ROOT 容器CDB$ROOT和一个默认 PDBPDB$SEED your_pdb。dbca创建的不是传统意义上的单库而是一个容器平台。静默创建 CDB 命令dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbname orcl.example.com \ -sid orcl \ -responseFile NO_VALUE \ -characterSet AL32UTF8 \ -sysPassword Oracle123! \ -systemPassword Oracle123! \ -createAsContainerDatabase true \ -numberOfPDBs 1 \ -pdbName pdb1 \ -pdbAdminPassword Oracle123! \ -databaseType MULTIPURPOSE \ -automaticMemoryManagement false \ -totalMemory 2048 \ -storageType FILE_SYSTEM \ -datafileDestination /u01/oradata \ -redoLogFileSize 100 \ -emConfiguration NONE \ -ignorePreReqs关键参数解读-createAsContainerDatabase true明确创建 CDB。若为 falsedbca 会尝试创建非 CDB但在 19c 中已被废弃会失败。-numberOfPDBs 1创建 1 个用户 PDB除系统自带的 PDB$SEED 外。PDB$SEED 是模板不可修改。-pdbName pdb1用户 PDB 名称。必须全部小写且不能是 pdb$seed 或 cdb$root。大写或特殊字符会导致alter pluggable database pdb1 open失败。-totalMemory 2048单位 MB指 SGAPGA 总和。这里设 2048MBdbca 会自动分配 SGA_TARGET1536M, PGA_AGGREGATE_TARGET512M。创建完成后验证 CDB 结构sqlplus / as sysdba SQL show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB1 MOUNTED NO SQL alter pluggable database pdb1 open; SQL show pdbs; 3 PDB1 READ WRITE NO5.2 监听器配置为什么 lsnrctl status 显示 “no services”安装后执行lsnrctl status常看到Services Summary... Service orcl.example.com has 1 instance(s). Instance orcl, status UNKNOWN, has 1 handler(s) for this service... The command completed successfullyStatus 是 UNKNOWN不是 READY。这是 19c 的正常现象原因在于Oracle 19c 默认启用动态服务注册Dynamic Service Registration但要求数据库实例启动后PMON 进程主动向监听器注册服务名。如果数据库没启动监听器自然不知道服务在哪。解决步骤启动数据库sqlplus / as sysdba→startup;检查监听器状态lsnrctl status此时应显示Service orcl.example.com has 1 instance(s). Instance orcl, status READY, has 1 handler(s) for this service... Service orclXDB.example.com has 1 instance(s). Instance orcl, status READY, has 1 handler(s) for this service...如果仍是 UNKNOWN检查local_listener参数SQL show parameter local_listener; NAME TYPE VALUE -------------------- ----------- ------------------------------ local_listener string若为空说明数据库没告诉 PMON 监听器地址。手动设置SQL alter system set local_listener(ADDRESS(PROTOCOLTCP)(HOSTol8-db.example.com)(PORT1521)) scopeboth; SQL alter system register; -- 强制 PMON 立即注册常见问题tnsping orcl失败报错 “TNS-12535: TNS:operation timed out”。这通常不是监听器问题而是防火墙或 SELinux 阻止了 1521 端口。检查firewall-cmd --list-ports应含1521/tcpgetenforce应为Permissive或Disabled。生产环境建议用semanage port -a -t oracle_port_t -p tcp 1521开放端口。6. 验证与故障排查从 “能连上” 到 “真可用”6.1 连接性验证不止 sqlplus还有三重校验仅仅sqlplus / as sysdba成功不代表数据库真正可用。必须完成三重校验本地连接OS 认证# 切换到 oracle 用户 su - oracle # 连接 CDB sqlplus / as sysdba SQL select name, open_mode from v$database; NAME OPEN_MODE --------- -------------------- ORCL READ WRITE SQL select con_id, name, open_mode from v$pdbs; CON_ID NAME OPEN_MODE ------ ------------------------------ ---------- 2 PDB$SEED READ ONLY 3 PDB1 READ WRITETNS 连接网络认证 编辑$ORACLE_HOME/network/admin/tnsnames.ora添加ORCL (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST ol8-db.example.com)(PORT 1521)) (CONNECT_DATA (SERVER DEDICATED) (SERVICE_NAME orcl.example.com) ) ) PDB1 (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST ol8-db.example.com)(PORT 1521)) (CONNECT_DATA (SERVER DEDICATED) (SERVICE_NAME pdb1.example.com) ) )测试tnsping ORCL sqlplus sys/Oracle123!ORCL as sysdba sqlplus system/Oracle123!PDB1应用级连接模拟真实业务 用 Python cx_Oracle 测试import cx_Oracle conn cx_Oracle.connect(system/Oracle123!PDB1) cursor conn.cursor() cursor.execute(select count(*) from all_objects) print(cursor.fetchone()) # 应输出一个数字 conn.close()这一步能暴露NLS_LANG环境变量缺失导致的字符集乱码、连接池超时等深层问题。6.2 典型故障速查表从报错到根因报错信息根本原因排查命令解决方案ORA-01034: ORACLE not available实例未启动或 ORACLE_SID 未设echo $ORACLE_SID,ps -ef | grep pmonexport ORACLE_SIDorcl,sqlplus / as sysdba→startupORA-12514: TNS:listener does not currently know of service requested服务名未注册或拼写错误lsnrctl status,sqlplus / as sysdba→show parameter service_names确保service_names与 tnsnames.ora 中 SERVICE_NAME 一致执行alter system register;ORA-28547: connection to server failed, probable Oracle Net admin errorsqlnet.ora中SQLNET.AUTHENTICATION_SERVICES设为(NTS)但 Windows 身份验证不可用cat $ORACLE_HOME/network/admin/sqlnet.ora注释掉该行或改为(NONE)ORA-00845: MEMORY_TARGET not supported on this system/dev/shm大小不足df -h /dev/shmmount -t tmpfs shmfs -o size2g /dev/shm并写入/etc/fstabPRVF-0002: could not retrieve local node name/etc/hosts中主机名解析失败hostname -f,ping $(hostname -f)在/etc/hosts中添加127.0.0.1 $(hostname -f) $(hostname)实操心得每次修改配置如 listener.ora、tnsnames.ora必须执行lsnrctl reload使监听器重新读取配置而不是重启监听器。reload是热加载毫秒级完成不影响已有连接stop/start会中断所有连接生产环境严禁使用。7. 后续运维基石让 19c 真正扎根落地安装完成只是起点。要让 Oracle 19c 在生产环境稳定运行还需完成三件关键小事它们决定了未来三个月的运维体验。7.1 自动启动脚本避免每次重启服务器都要手动 startupOracle 不提供开机自启服务必须自己写。RHEL 8 使用 systemd创建/etc/systemd/system/oracle-rdbms.service[Unit] DescriptionOracle Database Service Afternetwork.target [Service] Typeforking Useroracle Groupoinstall EnvironmentORACLE_HOME/u01/app/oracle/product/19c/dbhome_1 EnvironmentORACLE_SIDorcl ExecStart/u01/app/oracle/product/19c/dbhome_1/bin/dbstart $ORACLE_HOME ExecStop/u01/app/oracle/product/19c/dbhome_1/bin/dbshut $ORACLE_HOME Restarton-failure [Install] WantedBymulti-user.target启用systemctl daemon-reload systemctl enable oracle-rdbms.service systemctl start oracle-rdbms.service关键点dbstart脚本依赖/etc/oratab中的Y标记。确保/etc/oratab中orcl:/u01/app/oracle/product/19c/dbhome_1:Y这一行末尾是Y不是N。7.2 归档模式与备份不是可选项是生存线19c 默认安装为 NOARCHIVELOG 模式这意味着数据库崩溃后只能恢复到上次全备中间所有事务丢失。生产环境必须切换到 ARCHIVELOG。步骤sqlplus / as sysdba SQL shutdown immediate; SQL startup mount; SQL alter database archivelog; SQL alter database open; SQL archive log list; -- 验证输出应含 Database log mode Archive Mode然后配置归档路径SQL alter system set log_archive_dest_1LOCATION/u01/fast_recovery_area/orcl/archivelog scopeboth; SQL alter system set log_archive_dest_state_1enable scopeboth;没有归档就没有 RMAN 增量备份没有 RMAN就没有可靠的 PITRPoint-in-Time Recovery能力。我见过太多客户因为没开归档一次误删表就导致业务停摆 8 小时。7.3 EM Express 启用轻量级但够用的监控入口Oracle 19c 自带 EM ExpressEnterprise Manager Express无需额外安装是 DBA 日常巡检的第一站。启用命令sqlplus / as sysdba SQL exec dbms_xdb_config.sethttpsport(5500); SQL exec dbms_xdb_config.sethttpport(8080);然后访问https://ol8-db.example.com:5500/em用 sys 用户登录。它能查看实例整体健康状况CPU、内存、IOTop SQL按 CPU、IO、执行次数排序表空间使用率直观图表最近 24 小时的 AWR 摘要提示EM Express 默认只监听 localhost。若需远程访问执行exec dbms_xdb_config.setlistenerlocalaccess(false);。但生产环境建议通过 SSH 隧道访问保障安全。我在实际部署中习惯在安装完成后立即执行
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。