在线咨询 400-826-1668
回到顶部
ARTICLE DETAIL

资讯详情

深耕国风建站与运营引流的一线实战洞察。

Oracle 19c数据库从零安装到基础运维:Linux环境实战指南

Oracle 19c数据库从零安装到基础运维:Linux环境实战指南 1. 项目概述为什么选择Oracle以及安装前的关键考量如果你正在为一个关键业务系统选型数据库或者准备踏入企业级应用开发领域那么Oracle数据库几乎是一个绕不开的名字。它不仅仅是“一个数据库”更是企业级数据管理、高并发在线事务处理OLTP和复杂数据分析的基石。我接触Oracle超过十年从早期的10g到现在的19c、21c亲眼见证了它在金融、电信、制造业等核心场景中扮演的“定海神针”角色。很多人对Oracle望而却步觉得它庞大、复杂、昂贵安装过程更是“劝退”第一步。但我想说只要理清思路避开那些官方文档不会明说的“坑”从零搭建一个可用的Oracle环境并没有想象中那么困难。这篇内容就是为你准备的。无论你是刚入行的DBA、需要本地搭建测试环境的开发者还是对数据库技术感兴趣的学习者我都会以一个过来人的身份带你走一遍完整的Oracle 19c数据库在Linux环境下的安装、配置及基础使用流程。我不会只给你冷冰冰的命令行而是会解释每一个步骤背后的“为什么”分享那些只有踩过坑才知道的细节调整。我们的目标很明确在你自己的机器上成功运行起一个稳定、可用的Oracle数据库实例并掌握与之交互的基本方法。记住安装只是开始理解其架构和配置逻辑才能让你在后续的使用和问题排查中游刃有余。2. 环境准备与安装包获取奠定稳固的基石安装Oracle七分在准备三分在执行。仓促开始往往意味着中途各种报错和推倒重来。这一部分我们详细拆解安装前的所有准备工作。2.1 操作系统与硬件资源规划Oracle对运行环境有明确要求。对于学习、测试或中小型应用我们通常选择Linux发行版如CentOS 7/8、Red Hat Enterprise Linux (RHEL) 7/8或Oracle Linux。这里以CentOS 7.x为例因为它广泛使用且文档丰富。硬件要求是硬门槛内存官方最低要求1GB但这仅够安装程序勉强运行。为了获得可接受的性能物理内存至少需要4GB建议8GB或以上。交换空间Swap的大小也有讲究通常建议是物理内存的1到2倍但不超过16GB。例如你有8GB内存可以设置Swap为8GB到16GB。磁盘空间这是最容易出问题的地方。你需要为Oracle软件本身、数据库文件、快速恢复区等预留空间。一个基础的安装至少需要15GB的空闲磁盘空间。我强烈建议预留50GB以上为数据增长和归档日志留足余地。文件系统推荐使用XFS或EXT4。CPU至少需要2个核心。现代服务器CPU通常不是瓶颈但对于虚拟机环境务必为虚拟机分配足够的CPU资源。注意如果你在虚拟机上操作请确保虚拟化设置中已开启虚拟化引擎支持如Intel VT-x/AMD-V这对Oracle的运行效率至关重要。2.2 安装包下载与版本选择Oracle软件需要从官方网站下载。这里会遇到第一个“拦路虎”Oracle官网的下载需要注册账号并接受许可协议。搜索“Oracle Database 19c Downloads”即可找到入口。19c是当前最新的长期支持版本兼具稳定性和新特性是学习和生产环境的优选。你会看到多个安装包对于Linux x86-64系统通常选择LINUX.X64_193000_db_home.zip这是最常用的数据库软件安装包。有时你也会看到类似p35940989_190000_Linux-x86-64.zip这样的补丁包编号但初次安装我们只需要基础安装包。下载过程可能会遇到“正在进行安全验证”或“本网站使用安全服务防护恶意自动程序”的页面这是Oracle的云防护Cloudflare或类似服务按照提示完成人机验证如点击复选框即可正常下载。请务必从官方渠道下载确保软件包的完整性。2.3 操作系统环境预配置这是安装成功的关键也是最繁琐的一步。我们需要手动创建一个专门的用户和用户组并配置一系列内核参数、资源限制和目录权限。Oracle提供了一个自动检查配置的脚本但理解每一项的意义更有助于排查问题。第一步创建Oracle用户和组我们通常创建两个主要组oinstall软件安装组和dba数据库管理组。groupadd oinstall groupadd dba useradd -g oinstall -G dba oracle passwd oracle # 为oracle用户设置一个强密码第二步配置内核参数编辑/etc/sysctl.conf文件添加或修改以下参数。这些参数调整了系统的共享内存、信号量、网络等资源限制以满足Oracle的高性能需求。fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 2097152 # 共享内存总页数 kernel.shmmax 4294967296 # 单个共享内存段最大字节数建议为物理内存一半以上 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/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软件通常安装在/u01/app目录下这是一种约定俗成的规范。mkdir -p /u01/app/oracle mkdir -p /u01/app/oraInventory chown -R oracle:oinstall /u01/app chmod -R 775 /u01/app第五步配置Oracle用户环境变量切换到oracle用户su - 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使环境变量生效。做完以上所有步骤你的操作系统环境才算为安装Oracle做好了准备。可以运行Oracle提供的runcluvfy.sh脚本进行预检查但手动配置的过程能让你更深刻地理解依赖关系。3. 图形化安装与静默安装详解Oracle数据库安装主要有两种方式图形化安装和静默安装。图形化安装直观适合初学者静默安装通过响应文件自动化适合批量部署和运维。3.1 图形化安装GUI逐步指南假设你已经将下载的LINUX.X64_193000_db_home.zip上传到服务器的/u01/app/oracle目录下。解压安装包cd /u01/app/oracle unzip LINUX.X64_193000_db_home.zip -d db_home解压后会生成一个db_home目录这就是你的ORACLE_HOME。启动安装程序确保你当前是oracle用户并且X11转发已配置好如果你在远程连接。在终端中执行cd /u01/app/oracle/db_home ./runInstaller如果一切正常Oracle Universal Installer (OUI) 的图形界面将会启动。安装向导关键步骤第一步配置安全更新。可以取消勾选“我希望通过My Oracle Support接收安全更新”跳过电子邮件和CSICustomer Support Identifier填写。第二步安装选项。选择“创建和配置数据库”这是我们最常用的“一站式”安装。第三步系统类。选择“服务器类”功能更完整。第四步安装类型。选择“单实例数据库安装”。第五步安装类型高级。选择“典型安装”。这里需要重点配置Oracle基目录会自动读取ORACLE_BASE环境变量/u01/app/oracle。软件位置会自动读取ORACLE_HOME环境变量/u01/app/oracle/product/19.3.0/dbhome_1。注意如果这里显示的不是你解压的db_home路径请手动更正。一个常见的“坑”是环境变量没生效导致OUI指向了错误路径。数据库文件位置使用默认的$ORACLE_BASE/oradata即可。数据库标识符全局数据库名和SID我们填写orcl。管理口令为重要的系统用户如SYS, SYSTEM设置口令。务必使用强密码并牢记可以勾选“对所有账户使用相同的口令”简化管理。创建为容器数据库19c默认创建为容器数据库CDB里面包含一个可插拔数据库PDB。这是Oracle 12c后的新架构建议保持勾选PDB名可以设为orclpdb。后续步骤按照向导进行先决条件检查、摘要确认最后点击“安装”。执行根脚本安装过程中在最后阶段安装程序会弹出提示框要求你以root身份执行两个脚本/u01/app/oraInventory/orainstRoot.sh和$ORACLE_HOME/root.sh。这是必须完成的步骤否则数据库无法正常启动。打开另一个终端切换到root用户依次执行这两个脚本。执行root.sh时可能会询问本地bin目录路径直接按回车使用默认值即可。安装完成脚本执行成功后回到图形界面点击“确定”安装程序会继续完成配置并最终显示数据库创建完成的信息其中会包含数据库的控制台Enterprise Manager Database Express访问地址通常是https://主机名:5500/em。实操心得图形化安装时最大的问题往往是X11转发。如果使用PuTTY等工具远程连接务必在连接设置中启用“X11 forwarding”并安装本地的X Server软件如Xming。如果无法启动图形界面静默安装是更可靠的选择。3.2 静默安装与响应文件制作对于生产环境或需要自动化部署的场景静默安装是标准做法。它依赖于一个“响应文件”response file这个文件记录了安装过程中所有需要选择的选项。获取模板响应文件在安装包解压后的db_home/response目录下Oracle提供了多个响应文件模板。我们复制db_install.rsp并进行修改。cd /u01/app/oracle/db_home/response cp db_install.rsp my_db_install.rsp编辑响应文件使用vi或nano编辑my_db_install.rsp。以下是一些关键参数的示例oracle.install.optionINSTALL_DB_SWONLY # 或INSTALL_DB_AND_CONFIG 用于一并创建数据库 UNIX_GROUP_NAMEoinstall INVENTORY_LOCATION/u01/app/oraInventory ORACLE_HOME/u01/app/oracle/product/19.3.0/dbhome_1 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 oracle.install.db.rootconfig.executeRootScripttrue # 允许执行根脚本 oracle.install.db.rootconfig.configMethodROOT # 让安装程序提示你执行 oracle.install.db.config.starterdb.typeGENERAL_PURPOSE # 通用目的数据库 oracle.install.db.config.starterdb.globalDBNameorcl oracle.install.db.config.starterdb.SIDorcl oracle.install.db.config.starterdb.characterSetAL32UTF8 oracle.install.db.config.starterdb.memoryOptiontrue oracle.install.db.config.starterdb.memoryLimit2048 # SGAPGA大小(MB) oracle.install.db.config.starterdb.password.ALLYourStrongPassword123 # 为所有账户设置统一密码 oracle.install.db.config.starterdb.installExampleSchemasfalse # 是否安装示例schema oracle.install.db.config.starterdb.enableRecoverytrue oracle.install.db.config.starterdb.storageTypeFILE_SYSTEM_STORAGE oracle.install.db.config.starterdb.fileSystemStorage.dataLocation/u01/app/oracle/oradata务必根据你的实际环境修改路径、密码和参数。执行静默安装切换到oracle用户执行以下命令开始安装cd /u01/app/oracle/db_home ./runInstaller -silent -responseFile /u01/app/oracle/db_home/response/my_db_install.rsp -ignorePrereqFailure-silent表示静默模式-ignorePrereqFailure用于忽略一些非致命的先决条件检查警告。执行根脚本安装输出日志中会明确提示需要以root身份执行的脚本路径即orainstRoot.sh和root.sh。和图形化安装一样必须执行它们。静默安装的输出会写入日志文件通常位于$ORACLE_BASE/oraInventory/logs目录下。安装过程中务必通过tail -f命令监控日志以便及时发现错误。4. 安装后配置与数据库基础操作安装完成并执行根脚本后数据库实例通常已经启动。但为了后续稳定使用我们还需要进行一些基础配置和验证。4.1 验证数据库状态与监听器检查数据库实例状态切换到oracle用户使用sqlplus工具连接到数据库。su - oracle sqlplus / as sysdba这条命令使用了操作系统认证以最高权限的SYSDBA身份登录。登录后执行SQL SELECT instance_name, status, database_status FROM v$instance; SQL SELECT name, open_mode FROM v$database;你应该能看到实例名为orcl状态为OPEN数据库处于读写模式。检查监听器状态监听器Listener是客户端连接数据库的“门户”。检查其状态lsnrctl status如果监听器没有启动使用lsnrctl start启动它。输出中应该能看到LISTENER正在监听某个端口默认1521并且服务orcl或orclpdb已注册。4.2 配置环境与基础连接为了让其他用户或远程客户端能够方便地连接我们需要配置网络服务名。配置TNSNAMES.ORA本地连接编辑$ORACLE_HOME/network/admin/tnsnames.ora文件如果不存在则创建ORCL (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST localhost)(PORT 1521)) (CONNECT_DATA (SERVER DEDICATED) (SERVICE_NAME orcl) # 如果是CDB连接根容器用这个 ) ) ORCLPDB (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST localhost)(PORT 1521)) (CONNECT_DATA (SERVER DEDICATED) (SERVICE_NAME orclpdb) # 连接可插拔数据库用这个 ) )配置后就可以使用sqlplus username/passwordorcl或orclpdb的方式连接了。创建普通用户与授权永远不要在日常工作中使用SYS或SYSTEM用户。我们创建一个新用户-- 首先切换到可插拔数据库如果安装的是CDB SQL ALTER SESSION SET CONTAINERorclpdb; -- 创建用户 SQL CREATE USER myuser IDENTIFIED BY MyPass123; -- 授予基本权限 SQL GRANT CONNECT, RESOURCE TO myuser; SQL GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO myuser; -- 授予表空间配额允许用户创建对象 SQL ALTER USER myuser QUOTA UNLIMITED ON USERS;现在你就可以用myuser/MyPass123orclpdb连接到你的PDB并进行操作了。4.3 数据库的启动与关闭掌握数据库的启动和关闭是DBA的基本功。有几种不同的模式。启动数据库sqlplus / as sysdba SQL STARTUP;这是最常用的命令它会按顺序启动实例NOMOUNT- 加载控制文件MOUNT- 打开数据库OPEN。STARTUP NOMOUNT;仅启动实例用于数据库创建或控制文件恢复。STARTUP MOUNT;启动实例并加载控制文件用于数据文件恢复或重命名等操作。STARTUP OPEN;等同于STARTUP;。关闭数据库SQL SHUTDOWN IMMEDIATE;这是最常用的安全关闭方式。它会阻止新连接中断当前所有会话回滚未提交事务然后关闭数据库。SHUTDOWN NORMAL;等待所有用户主动断开连接可能永远等下去。SHUTDOWN TRANSACTIONAL;等待活动事务结束。SHUTDOWN ABORT;相当于“拔电源”强制关闭下次启动需要实例恢复。仅在紧急情况下使用。5. 核心工具使用与日常管理入门安装好数据库后我们需要一些工具来管理和操作它。除了命令行工具sqlplus还有一些图形化工具和实用命令。5.1 SQL*Plus命令行利器sqlplus是Oracle最经典、最强大的命令行工具几乎所有管理任务都能用它完成。基本连接sqlplus myuser/MyPass123orclpdb sqlplus sys/YourSysPasswordorcl as sysdba # SYSDBA权限连接常用命令-- 查看当前用户 SHOW USER; -- 执行SQL脚本 /path/to/your_script.sql -- 设置输出格式避免折行 SET LINESIZE 200 SET PAGESIZE 1000 -- 查看错误详情当过程或函数编译出错时 SHOW ERRORS; -- 编辑上一条SQL语句 EDIT执行计划查看这是SQL优化的基础。EXPLAIN PLAN FOR SELECT * FROM your_table WHERE your_column value; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);5.2 SQL Developer免费的图形化客户端Oracle SQL Developer是官方提供的免费图形化工具比命令行更友好适合数据查询、对象管理和简单开发。下载与安装从Oracle官网下载对应你操作系统的版本如Windows的.exe或Linux的.zip。解压即可运行需要Java环境。创建连接启动SQL Developer点击“新建连接”。输入连接名如“MyOracleDB”。用户名/密码填写你创建的myuser和密码。主机名数据库服务器的IP地址或主机名。端口1521。服务名对于PDB填写orclpdb对于非CDB或连接CDB根填写orcl。角色默认Normal。基本使用连接成功后你可以在左侧导航树中浏览表、视图、过程等对象在右侧工作表Worksheet中编写和执行SQL、PL/SQL。5.3 基础日常管理命令作为初学者掌握以下几个命令可以应对大部分日常情况查看表空间使用情况表空间是存储数据的逻辑容器。SELECT tablespace_name, ROUND(SUM(bytes) / 1024 / 1024, 2) AS total_mb, ROUND(SUM(bytes - NVL(free_bytes, 0)) / 1024 / 1024, 2) AS used_mb, ROUND((SUM(bytes - NVL(free_bytes, 0)) / SUM(bytes)) * 100, 2) AS pct_used FROM (SELECT tablespace_name, file_id, SUM(bytes) AS bytes FROM dba_data_files GROUP BY tablespace_name, file_id) df LEFT JOIN (SELECT file_id, SUM(bytes) AS free_bytes FROM dba_free_space GROUP BY file_id) fs ON df.file_id fs.file_id GROUP BY tablespace_name;查看当前会话和锁-- 查看当前活动会话 SELECT sid, serial#, username, program, status FROM v$session WHERE username IS NOT NULL; -- 查看锁信息 SELECT s.username, l.sid, l.type, l.id1, l.id2, l.lmode, l.request FROM v$lock l, v$session s WHERE l.sid s.sid AND s.username IS NOT NULL;导入导出数据数据泵Oracle推荐使用数据泵Data Pump工具expdp和impdp它比古老的exp/imp更强大高效。# 导出在操作系统命令行执行 expdp myuser/MyPass123orclpdb DIRECTORYDATA_PUMP_DIR DUMPFILEmyexport.dmp SCHEMASmyuser # 导入 impdp myuser/MyPass123orclpdb DIRECTORYDATA_PUMP_DIR DUMPFILEmyexport.dmp REMAP_SCHEMAmyuser:newuser注意DATA_PUMP_DIR是一个Oracle目录对象需要提前由DBA创建或使用默认的。你可以通过SELECT * FROM dba_directories;查看。6. 常见安装与使用问题排查实录即使按照步骤操作也难免会遇到问题。这里记录了几个我遇到的高频问题及其解决方法。6.1 安装阶段问题问题1执行runInstaller无反应或报错“无法打开显示”。原因X11转发未正确配置或DISPLAY环境变量未设置。排查检查远程工具是否启用X11转发。在服务器上执行echo $DISPLAY通常应为localhost:10.0或类似格式。如果为空手动设置export DISPLAYyour_client_ip:0.0需在客户端允许X11连接。如果图形界面实在无法解决果断改用静默安装。问题2先决条件检查失败如“内核参数semmni不满足”。原因系统内核参数或资源限制未按前述步骤正确配置。排查仔细核对/etc/sysctl.conf和/etc/security/limits.conf中的每一个参数确保无误。执行sysctl -p和重新登录oracle用户或重启服务器使配置生效。安装时可以选择“忽略所有”但生产环境强烈建议解决所有警告。问题3执行root.sh脚本时卡住或报错。原因常见于环境变量冲突、权限问题或特定操作系统版本兼容性。排查检查/etc/oratab文件权限确保root可写。查看脚本输出的具体错误信息通常会在终端显示或写入/u01/app/oraInventory/logs下的日志。一个经典错误是关于/usr/bin/awk的可能需要创建软链接ln -s /bin/awk /usr/bin/awk。6.2 连接与运行阶段问题问题1sqlplus可以本地连接但远程客户端如SQL Developer无法连接。原因监听器未启动、未正确注册服务、防火墙阻止或TNS配置错误。排查步骤服务器端检查监听器lsnrctl status确认监听器在运行并且服务orcl/orclpdb的状态是“READY”或“BLOCKED”。检查监听器配置查看$ORACLE_HOME/network/admin/listener.ora确认监听地址和端口默认1521正确。检查防火墙在服务器上临时关闭防火墙测试systemctl stop firewalld或永久开放1521端口firewall-cmd --permanent --add-port1521/tcp firewall-cmd --reload。检查客户端配置确保客户端的tnsnames.ora文件中的HOST指向正确的服务器IP且网络可达可用telnet server_ip 1521测试端口。问题2登录时报错“ORA-01017: invalid username/password; logon denied”。原因密码错误、用户被锁定或密码文件问题。排查确认密码大小写Oracle密码默认区分大小写。用SYSDBA登录检查用户状态SELECT username, account_status FROM dba_users WHERE username MYUSER;。如果状态是LOCKED解锁ALTER USER myuser ACCOUNT UNLOCK;。如果是SYS用户登录失败检查密码文件orapwd file$ORACLE_HOME/dbs/orapw$ORACLE_SID passwordnew_password forcey重建。问题3数据库启动时报错“ORA-01102: cannot mount database in EXCLUSIVE mode”。原因通常意味着数据库实例已经被启动或者锁文件如lkORACLE_SID未正常清除。排查首先确认是否已有实例在运行ps -ef | grep pmon查看是否有ora_pmon_orcl这样的进程。如果有先用SHUTDOWN IMMEDIATE关闭它。如果无进程但报错可能是共享内存段或信号量未释放。找到并清理ipcs -m | grep oracle # 查看共享内存段 ipcrm -m shmid # 删除对应的共享内存ID ipcs -s | grep oracle # 查看信号量 ipcrm -s semid # 删除对应的信号量ID删除锁文件rm -f $ORACLE_HOME/dbs/lkORCL文件名根据SID变化。6.3 性能与配置问题问题数据库运行一段时间后变慢。初步排查检查等待事件SELECT event, COUNT(*) FROM v$session_wait WHERE wait_class Idle GROUP BY event ORDER BY 2 DESC;查看系统在等待什么。检查TOP SQLSELECT sql_id, executions, elapsed_time/1000000 ela_sec, sql_text FROM v$sqlstats ORDER BY elapsed_time DESC WHERE ROWNUM 10;找出最耗时的SQL。检查表空间是否已满使用前面提到的表空间查询语句。常见优化方向SQL优化对TOP SQL进行执行计划分析建立合适的索引。内存调整检查SGA系统全局区和PGA程序全局区大小是否合理。可通过ALTER SYSTEM SET sga_target... scopespfile;和ALTER SYSTEM SET pga_aggregate_target... scopespfile;调整需重启。I/O瓶颈检查磁盘性能将数据文件、重做日志文件放在不同的物理磁盘上。安装和初步使用Oracle数据库是一个系统工程涉及操作系统、网络、存储和数据库本身的多方面知识。这篇内容从规划到安装从配置到基础运维为你搭建了一个完整的入门框架。真正的精通来自于持续的实践、踩坑和解决问题。建议你在自己的实验环境中多操作几遍尝试创建不同的表空间、用户进行数据的导入导出模拟故障场景并恢复。当你能够从容地处理上述大部分问题时你就已经跨过了Oracle入门最艰难的一道坎。记住官方文档Oracle Database Documentation永远是你最好的朋友遇到任何深入的问题去MOSMy Oracle Support或官方文档中寻找答案是职业DBA的必备素养。
返回列表