
1. 从零到一为什么选择Oracle 19c以及如何获取它如果你正在规划一个新的企业级数据库项目或者准备将老旧的11g、12c系统进行升级那么Oracle 19c大概率已经进入了你的候选名单。作为Oracle长期支持版本Long Term Support Release19c提供了长达数年的稳定支持是当前生产环境部署的“黄金标准”。但很多朋友在第一步——下载和安装上就卡住了要么找不到官方渠道要么面对复杂的安装包列表一头雾水。今天我就结合自己多次部署的经验带你走一遍从获取安装介质到完成基础安装的完整流程并分享一些官方文档里不会写的“避坑”细节。首先我们必须明确一点Oracle数据库软件是商业产品其官方安装介质安装包需要通过合法的授权渠道获得。对于个人学习、开发者测试或评估用途Oracle提供了免费的“Oracle Database Express Edition (XE)”版本但功能有限制。而我们通常谈论的“Oracle 19c”标准版或企业版需要从Oracle官方技术支持网站Oracle Technology Network, OTN或Oracle Software Delivery Cloud (edelivery.oracle.com)下载这需要一个免费的Oracle账户。整个过程的核心不仅仅是点击下载按钮更是理解你下载的到底是什么以及如何为你的目标环境选择正确的组件。2. 官方下载渠道详解与安装包选择策略下载Oracle 19c首推Oracle Software Delivery Cloud。这个网站是Oracle官方授权的软件交付平台提供了最清晰、最完整的版本和平台选择。访问该网站使用你的Oracle账户登录后在搜索框中输入“Oracle Database 19c”你会看到一系列结果。关键就在这里你需要根据你的操作系统选择对应的安装包。对于最常见的Linux x86-64平台通常你会看到两个核心的安装包文件LINUX.X64_193000_db_home.zip这是数据库软件安装包。它包含了安装Oracle数据库软件所需的所有文件但不包含“Grid Infrastructure”用于RAC集群的软件。如果你只是安装单实例数据库下载这个就够了。LINUX.X64_193000_grid_home.zip这是Grid Infrastructure安装包。只有当你需要安装Oracle RAC真正应用集群或配置单实例的Oracle Restart高可用框架时才需要下载这个。除了这两个页面上可能还有“Client”、“Gateways”等其他组件对于初次安装暂时不用理会。选择好对应的版本例如19.3.0.0.0和平台将其加入购物车并下载即可。下载通常是一个ZIP压缩包。注意edelivery网站上的包是完整的安装介质。而OTN网站有时会提供更小的、需要联网安装的包但在企业内网或网络不稳定环境下直接下载完整ZIP包更为可靠。对于Windows平台过程类似你会下载到一个类似“WINDOWS.X64_193000_db_home.zip”的压缩包或者是一个可执行的EXE安装程序。选择哪个取决于你的习惯ZIP包更灵活可以解压到任意路径。这里有一个非常重要的经验点务必记录或保存好你下载的安装包的具体版本号如19.3.0.0.0和构建号。这在后续打补丁、排查兼容性问题时至关重要。你可以在下载页面或解压后的install/.product等目录下的文件中找到这些信息。3. 安装前的系统环境准备不只是满足检查清单拿到安装包只是万里长征第一步。在运行安装程序之前系统环境的准备是决定安装能否成功、数据库未来是否稳定的基石。很多安装失败问题都出在这一步。我们以最典型的Linux环境如Oracle Linux 7/8, RHEL, CentOS为例详细拆解准备工作。3.1 操作系统与内核参数调整首先确保你的系统版本在Oracle 19c的认证矩阵内。例如Oracle Linux 7.4以上或RHEL 7.4以上是常见的支持版本。接着需要修改Linux内核参数以满足Oracle数据库对内存、进程和网络等方面的需求。这些参数通常需要在/etc/sysctl.conf文件中进行永久性设置。# 编辑sysctl配置文件 vi /etc/sysctl.conf # 添加或修改以下关键参数数值需根据服务器实际内存调整以下是针对8GB内存服务器的示例 fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 2097152 # 共享内存总页数单位是页通常4KB kernel.shmmax 4294967296 # 单个共享内存段最大字节数这里设为4GB 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 -pshmmax和shmall的设置尤为重要它们决定了Oracle能使用的共享内存大小直接影响到SGA系统全局区的配置上限。设置过小会导致数据库无法启动。3.2 用户、组与目录权限创建Oracle不建议使用root用户直接安装数据库。我们需要创建一个专门的用户和组通常用户名为oracle主要组为oinstall附加组为dba用于操作系统认证。# 创建必要的用户组 groupadd oinstall groupadd dba # 创建oracle用户并指定主目录和shell useradd -g oinstall -G dba -m -d /home/oracle -s /bin/bash oracle # 为oracle用户设置密码 passwd oracle接下来创建Oracle的安装目录Oracle Base和软件目录Oracle Home。清晰的目录结构有利于后续管理和维护。# 假设我们规划/u01/app为Oracle Base mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1 mkdir -p /u01/app/oraInventory # 更改目录所有者 chown -R oracle:oinstall /u01/app chmod -R 775 /u01/app这里有一个实操心得oraInventory目录存放安装清单的路径可以在安装时指定但提前创建并设置好权限可以避免安装程序在交互过程中因权限问题创建失败。我习惯将其放在Oracle Base的同级或下级目录。3.3 安装依赖包与调整资源限制不同Linux发行版所需的依赖包略有不同。你可以使用Oracle官方提供的rpm包进行安装也可以使用yum/dnf工具。以Oracle Linux 8为例可以配置本地yum源后安装# 安装预安装包它会检查并提示缺失的依赖 yum install -y oracle-database-preinstall-19c这个preinstall包非常方便它会自动创建oracle用户、组并设置大部分内核参数和资源限制。但即使使用了它也建议你手动核对一下/etc/security/limits.conf文件中对oracle用户的限制是否足够特别是nofile打开文件数和nproc进程数。# 在/etc/security/limits.conf末尾添加 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用户配置环境变量。编辑/home/oracle/.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使环境变量生效。至此系统环境准备才算基本完成。4. 图形化与静默安装两种方式的详细步骤与抉择环境准备好后就可以开始安装软件了。Oracle提供了图形化GUI和静默Silent两种安装方式。图形化适合新手或在有桌面的环境下操作静默安装则适用于脚本化、自动化部署或在无图形界面的服务器上通过SSH操作。4.1 图形化安装步骤分解首先将下载的ZIP安装包上传到服务器例如/tmp目录下。以oracle用户登录解压安装包到目标ORACLE_HOME目录。su - oracle cd /u01/app/oracle/product/19.3.0/dbhome_1 unzip -q /tmp/LINUX.X64_193000_db_home.zip解压后进入目录启动安装程序。你需要确保服务器安装了图形界面如GNOME或者你能够通过X11转发如使用XshellXmanager或SSH带-X参数从本地电脑显示图形界面。cd /u01/app/oracle/product/19.3.0/dbhome_1 ./runInstaller安装程序启动后会是一个典型的向导界面配置安全更新这一步可以取消勾选不提供电子邮件地址直接跳过。安装选项选择“仅安装数据库软件”。我们通常将软件安装和数据库创建分开这样更清晰。数据库安装类型选择“单实例数据库安装”。典型安装这里需要仔细填写。Oracle基目录就是ORACLE_BASE例如/u01/app/oracle。软件位置就是ORACLE_HOME例如/u01/app/oracle/product/19.3.0/dbhome_1。数据库文件位置可以保持默认在ORACLE_BASE下。数据库版本选择“企业版”。操作系统组名选择dba。先决条件检查安装程序会自动检查系统环境是否满足要求。如果出现失败项通常是依赖包缺失或内核参数不足需要根据提示回到终端进行修复然后点击“重试”。概要确认所有选择无误后点击“安装”。安装过程等待进度条走完。期间可能会弹出脚本执行窗口提示需要以root身份执行两个脚本orainstRoot.sh和root.sh。按照提示新开一个终端窗口切换到root用户依次执行这两个脚本。执行完毕后回到安装界面点击“确定”。完成看到安装成功的界面点击“关闭”。重要提示在图形化安装过程中如果遇到界面乱码或按钮显示不全可能是中文字体缺失。可以临时将安装语言改为英文export LANGen_US; ./runInstaller。4.2 静默安装高效且可重复的部署方式对于生产环境或需要批量部署时静默安装是更优选择。它通过一个响应文件response file来预先定义所有安装参数无需人工交互。Oracle提供了响应文件模板位于安装包解压后的response/目录下。首先我们需要编辑一个响应文件。复制模板并修改cd /u01/app/oracle/product/19.3.0/dbhome_1/response cp db_install.rsp db_install_my.rsp vi db_install_my.rsp以下是一些关键参数的设置示例# 不要修改此注释行静默安装必须设置为true oracle.install.responseFileVersion/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0 # 安装类型只安装软件 oracle.install.optionINSTALL_DB_SWONLY # Unix用户组 UNIX_GROUP_NAMEoinstall # Oracle Home路径 ORACLE_HOME/u01/app/oracle/product/19.3.0/dbhome_1 # Oracle Base路径 ORACLE_BASE/u01/app/oracle # 安装版本企业版 oracle.install.db.InstallEditionEE # 是否创建数据库否仅安装软件 oracle.install.db.OSDBA_GROUPdba oracle.install.db.OSOPER_GROUPdba oracle.install.db.OSBACKUPDBA_GROUPdba oracle.install.db.OSDGDBA_GROUPdba oracle.install.db.OSKMDBA_GROUPdba oracle.install.db.OSRACDBA_GROUPdba # 安全更新相关全部设为false跳过 SECURITY_UPDATES_VIA_MYORACLESUPPORTfalse DECLINE_SECURITY_UPDATEStrue保存文件后使用以下命令启动静默安装cd /u01/app/oracle/product/19.3.0/dbhome_1 ./runInstaller -silent -ignorePrereq -waitforcompletion -responseFile /u01/app/oracle/product/19.3.0/dbhome_1/response/db_install_my.rsp参数解释-silent: 启用静默模式。-ignorePrereq: 忽略先决条件检查慎用仅在确认环境已准备好时使用。-waitforcompletion: 等待安装完成终端才会返回提示符。-responseFile: 指定响应文件路径。安装过程中输出会记录在ORACLE_HOME/install目录下的日志文件中。当终端提示“Successfully Setup Software”时表示软件安装成功。同样你需要以root身份执行orainstRoot.sh和root.sh脚本。静默安装的最大好处是可重复和可集成。你可以将此响应文件和安装命令写入Shell脚本实现一键自动化部署。这也是DevOps和云原生环境中部署Oracle的常见做法。5. 安装后配置与第一个数据库的创建软件安装成功后$ORACLE_HOME/bin目录下已经充满了可执行文件但此时还没有任何一个数据库实例。我们需要创建第一个数据库。同样可以通过图形化工具DBCADatabase Configuration Assistant或静默命令来完成。5.1 使用DBCA图形化创建数据库确保环境变量已正确设置特别是ORACLE_HOME和DISPLAY然后以oracle用户启动DBCAdbca在图形界面中选择“创建数据库”。选择“高级配置”以便更精细地控制参数。数据库类型选择“一般用途或事务处理”。数据库标识输入全局数据库名如orcl.example.com和SID如orcl。SID是实例在操作系统内的标识。管理选项可以取消“配置Enterprise Manager”因为EM Express是更轻量的选择。数据库身份证明为重要的管理账户如SYS, SYSTEM设置密码。建议选择“所有账户使用同一管理口令”以简化但在生产环境务必使用强密码并分账户管理。存储位置使用“文件系统”并指定数据库文件位置如$ORACLE_BASE/oradata。建议将数据文件、控制文件、重做日志文件放在独立的、性能好的存储上而非操作系统根目录。快速恢复区FRA这是用于备份和恢复的区域建议启用并指定一个与数据文件不同的磁盘路径大小根据数据库规模设定。数据库字符集这是至关重要的选择一旦创建极难修改。对于中文环境通常选择AL32UTF8Unicode UTF-8编码它支持全球所有语言。除非有明确的遗留系统兼容要求否则不要选择ZHS16GBK。示例方案如果需要练习用的示例表如HR人力资源方案可以勾选“创建为容器数据库”并勾选“创建带种子PDB的CDB”然后勾选“示例方案”。但生产库不建议勾选。内存配置选择“典型”安装程序会自动分配内存。或选择“自定义”进行精细调整例如设置SGA系统全局区和PGA程序全局区的大小。完成概要确认配置后点击“完成”开始创建。这个过程会比较长取决于硬件性能。数据库创建完成后会提示数据库信息其中包含监听端口通常为1521和EM Express的URL端口通常为5500。记下这些信息。5.2 使用DBCA静默模式创建数据库静默创建数据库同样依赖于响应文件。可以先用DBCA生成一个响应文件模板dbca -silent -generateScripts -templateName General_Purpose.dbc -gdbName orcl -responseFile /path/to/dbca.rsp然后编辑这个响应文件修改数据库名、文件路径、字符集等参数。最后使用以下命令创建dbca -silent -createDatabase -responseFile /path/to/dbca.rsp静默创建时所有进度和结果都会输出到终端和日志中非常适合自动化脚本集成。6. 关键后续步骤监听器、网络服务与基础验证数据库创建好后并不能立即从远程连接。我们需要配置监听器Listener它负责接收客户端的连接请求并将其路由到正确的数据库实例。6.1 配置与启动监听器Oracle Net配置工具是netcaNet Configuration Assistant。可以图形化运行netca也可以静默配置。更直接的方式是手动编辑监听器配置文件$ORACLE_HOME/network/admin/listener.ora。一个最基本的配置如下# listener.ora LISTENER (DESCRIPTION_LIST (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST your_hostname)(PORT 1521)) ) ) SID_LIST_LISTENER (SID_LIST (SID_DESC (GLOBAL_DBNAME orcl) # 你的全局数据库名 (ORACLE_HOME /u01/app/oracle/product/19.3.0/dbhome_1) (SID_NAME orcl) # 你的数据库SID ) )保存后启动监听器lsnrctl start使用lsnrctl status检查监听器状态应该能看到orcl服务已注册。6.2 配置本地网络服务名TNS为了让客户端包括本机的SQL*Plus能够方便地连接我们需要配置tnsnames.ora文件。编辑$ORACLE_HOME/network/admin/tnsnames.ora# tnsnames.ora ORCL (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST localhost)(PORT 1521)) (CONNECT_DATA (SERVER DEDICATED) (SERVICE_NAME orcl) # 如果是CDB这里用服务名如 orcl.example.com ) )6.3 基础连接验证与EM Express访问完成以上步骤后进行最终验证本地连接测试sqlplus sys/your_passwordorcl as sysdba如果成功进入SQL提示符SQL说明数据库实例、监听器、网络服务名配置都正确。检查数据库状态SELECT name, open_mode, database_role FROM v$database; SELECT instance_name, status FROM v$instance;应该看到数据库是READ WRITE状态实例是OPEN状态。访问EM ExpressOracle 19c默认使用EM Express作为轻量化管理控制台。首先需要确定其端口并配置。在SQL*Plus中执行SELECT dbms_xdb_config.gethttpsport FROM dual;如果返回0说明未启用。可以设置一个端口如5500EXEC dbms_xdb_config.sethttpsport(5500); COMMIT;然后你可以在浏览器中访问https://服务器IP:5500/em使用SYS等特权用户登录进行管理。7. 安装后的优化与安全加固 checklist安装并成功创建数据库只是开始。要让这个数据库真正可用于生产或开发测试还有一些重要的收尾工作。7.1 基础性能参数调整安装后的默认参数通常比较保守。根据服务器硬件特别是内存调整几个关键初始化参数是必要的。通过SQL*Plus连接后执行-- 查看当前SGA和PGA大小 SHOW PARAMETER sga_target; SHOW PARAMETER pga_aggregate_target; -- 动态调整如果使用自动内存管理AMM不建议手动设置。但很多DBA偏好ASMM -- 假设服务器有16G内存分配8G给SGA4G给PGA ALTER SYSTEM SET sga_target8G SCOPEspfile; ALTER SYSTEM SET pga_aggregate_target4G SCOPEspfile; -- 调整进程数默认150可能偏小 ALTER SYSTEM SET processes500 SCOPEspfile; -- 调整会话数 ALTER SYSTEM SET sessions555 SCOPEspfile;注意修改spfile中的参数需要重启数据库才能生效。使用SCOPEspfile表示修改参数文件下次启动生效。使用SCOPEboth表示立即修改内存并更新参数文件。7.2 安全加固第一步修改默认密码确保SYS,SYSTEM等默认账户的密码足够复杂。锁定无用账户Oracle安装后会创建许多示例账户如SCOTT,HR等如果不用应该锁定。ALTER USER scott ACCOUNT LOCK;启用审计至少开启基础审计记录重要活动。ALTER SYSTEM SET audit_traildb SCOPEspfile;配置sqlnet.ora加强认证编辑$ORACLE_HOME/network/admin/sqlnet.ora可以添加SQLNET.ALLOWED_LOGON_VERSION12等参数禁用低版本的、不安全的认证方式。7.3 配置归档日志模式针对生产环境对于生产数据库强烈建议启用归档日志模式。这允许数据库在重做日志切换时将其归档保存是实现时间点恢复PITR和Data Guard等高级功能的基础。-- 1. 关闭数据库 SHUTDOWN IMMEDIATE; -- 2. 启动到mount状态 STARTUP MOUNT; -- 3. 启用归档模式 ALTER DATABASE ARCHIVELOG; -- 4. 打开数据库 ALTER DATABASE OPEN; -- 5. 验证 ARCHIVE LOG LIST;启用后需要规划归档日志的存放路径LOG_ARCHIVE_DEST_1和定期清理策略避免磁盘被撑满。7.4 配置自动备份建议即使是最简单的环境也应当配置RMANRecovery Manager进行定期备份。一个最基本的每日全备脚本可以这样配置并通过操作系统的定时任务如cron来调度。这超出了本文的初始安装范畴但它是数据库可用性的生命线必须在部署后尽快规划。走完以上所有步骤一个功能完整、配置初步优化的Oracle 19c数据库环境就真正准备就绪了。整个过程看似步骤繁多但每一步都有其明确的目的。理解每一步背后的“为什么”比单纯记忆命令更重要。在实际操作中养成查看日志的习惯$ORACLE_HOME/cfgtoollogs下的安装日志$ORACLE_BASE/diag/rdbms/...下的数据库告警日志任何错误信息都是解决问题的钥匙。安装Oracle数据库是一个经典的“先繁后简”过程前期细致的准备和正确的配置能为后续长期的稳定运行省去无数麻烦。