详情

首页手游攻略 在Linux系统上安装部署Oracle Database保姆级教程实用指南

在Linux系统上安装部署Oracle Database保姆级教程实用指南

佚名 2026-09-02 09:20:01

平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“在Linux系统上安装部署Oracle Database保姆级教程”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。

目录
  • 一、前言
  • 二、系统准备
    • 安装依赖包
    • 设置内核参数
    • 新建 oracle 用户和目录
    • 设置资源限制
  • 三、设置环境变量
    • 四、上传并解压 Oracle 安装包
      • 五、以静默模式安装
        • 六、新建数据库实例(静默方式)
          • 七、验证安装
            • 八、开机自启(可选)
              • Oracle 数据库 Demo
                • 1.登录数据库
                • 2.新建表
                • 3.插入数据
                • 4.查询数据
                  • 1.查询所有员工信息:
                  • 2.查询特定员工(比如,员工 ID 为 2 的员工):
                  • 3.查询薪水高于 8000 的员工:
                • 5.更新数据
                  • 6.删除数据
                    • 7.附加 SQL 查询示例
                      • 1.查询员工的薪资总和
                      • 2.查询薪资的平均值:
                      • 3.按照入职日期排序,显示前 2 个员工:
                    • 8.筛选数据 (WHERE)
                      • 采用逻辑运算符:
                    • 9.排序数据 (ORDER BY)
                      • 10.限制查询结果 (LIMIT / ROWNUM)
                        • 11.聚合函数 (GROUP BY)
                          • 示例:计算每个部门的平均薪资
                          • 示例:计算每个部门的薪资总和,同时筛选薪资总和大于 20,000 的部门
                        • 12.联接查询 (JOIN)
                          • 示例:INNER JOIN(内联接)
                          • 示例:LEFT JOIN(左外联接)
                          • 示例:RIGHT JOIN(右外联接)
                          • 示例:FULL JOIN(全外联接)
                        • 13.常用的 Oracle 查询方法:
                        • 总结

                          一、前言

                          在开发或测试环境里,我们经常需搭建一套独立的 Oracle 数据库环境

                          在这个场景下,虽然现在很多人采用 Docker 镜像或云数据库,但有时候(比如在企业服务器上),

                          仍然需 手动在 Linux 上安装原生 Oracle 数据库

                          本教程将手把手带你完成从系统准备到数据库新建的全过程,完全原生安装。

                          演示环境如下所示:

                          项目设置
                          操作系统Oracle Linux 8 / CentOS 7
                          数据库版本Oracle Database 19c
                          内存要求≥ 2GB
                          磁盘空间≥ 20GB
                          安装模式静默安装(无图形界面)

                          二、系统准备

                          安装依赖包

                          yum install -y binutils compat-libcap1 compat-libstdc++-33 
                          gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc
                          libstdc++ libstdc++-devel libXi libXtst make sysstat elfutils-libelf-devel
                          unixODBC unixODBC-devel smartmontools net-tools unzip

                          原因解释:

                          • libaioglibclibstdc++ 是 Oracle 数据文件 I/O 所需的基础库;

                          • ksh(Korn shell)是 Oracle 安装程序默认采用的 shell;

                          • elfutils-libelf-devel 是内核符号和调试信息处理库;

                          • sysstat 用来性能监控;

                          • net-tools 提供 ifconfig 等命令;

                          • unzip 用来解压 Oracle 安装包。

                          设置内核参数

                          编辑 /etc/sysctl.conf

                          fs.file-max = 6815744
                          kernel.sem = 250 32000 100 128
                          kernel.shmmni = 4096
                          kernel.shmall = 1073741824
                          kernel.shmmax = 4398046511104
                          net.core.rmem_default = 262144
                          net.core.rmem_max = 4194304
                          net.core.wmem_default = 262144
                          net.core.wmem_max = 1048576
                          fs.aio-max-nr = 1048576
                          net.ipv4.ip_local_port_range = 9000 65500

                          使设置生效:

                          sysctl -p

                          新建 oracle 用户和目录

                          groupadd oinstall
                          groupadd dba
                          useradd -g oinstall -G dba 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/oraInventory
                          chown -R oracle:oinstall /u01
                          chmod -R 775 /u01

                          设置资源限制

                          编辑 /etc/security/limits.d/oracle-database.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 用户:

                          su - oracle

                          设置环境变量(编辑 ~/.bash_profile):

                          export ORACLE_BASE=/u01/app/oracle
                          export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
                          export ORACLE_SID=orcl
                          export PATH=$PATH:$ORACLE_HOME/bin

                          使其生效执行:

                          source ~/.bash_profile

                          四、上传并解压 Oracle 安装包

                          从官网下载zip安装包

                          (链接已移除)

                          落到代码里,这个网址打开能够直接下载zip文件,只不过需注册oracle账号,随后就能够下载;

                          将下载的zip文件上传至服务器:

                          unzip LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.3.0/dbhome_1
                          chown -R oracle:oinstall /u01

                          五、以静默模式安装

                          切换到 oracle 用户:

                          su - oracle
                          cd $ORACLE_HOME

                          执行安装:

                          ./runInstaller -silent 
                          -responseFile $ORACLE_HOME/install/response/db_install.rsp
                          oracle.install.option=INSTALL_DB_SWONLY
                          UNIX_GROUP_NAME=oinstall
                          INVENTORY_LOCATION=/u01/app/oraInventory
                          ORACLE_HOME=$ORACLE_HOME
                          ORACLE_BASE=$ORACLE_BASE
                          oracle.install.db.InstallEdition=EE
                          oracle.install.db.OSDBA_GROUP=dba
                          oracle.install.db.OSOPER_GROUP=dba
                          oracle.install.db.OSBACKUPDBA_GROUP=dba
                          oracle.install.db.OSDGDBA_GROUP=dba
                          oracle.install.db.OSKMDBA_GROUP=dba
                          oracle.install.db.OSRACDBA_GROUP=dba
                          DECLINE_SECURITY_UPDATES=true

                          验证修改成功

                          若设置正确,执行安装命令后应看到:

                          Launching Oracle Database Setup Wizard...

                          [WARNING] [INS-13014] Target environment does not meet some optional requirements.
                          ...
                          The installation of Oracle Database was successful.

                          接着执行安装结束提示的两个脚本(以 root 运行):

                          /u01/app/oraInventory/orainstRoot.sh
                          /u01/app/oracle/product/19.3.0/dbhome_1/root.sh

                          六、新建数据库实例(静默方式)

                          进入oracle用户模式执行:

                          dbca -silent -createDatabase 
                          -gdbname orcl
                          -sid orcl
                          -responseFile NO_VALUE
                          -templateName General_Purpose.dbc
                          -sysPassword oracle
                          -systemPassword oracle
                          -createAsContainerDatabase false
                          -databaseType MULTIPURPOSE
                          -memoryMgmtType auto_sga
                          -storageType FS
                          -datafileDestination '/u01/app/oracle/oradata'
                          -redoLogFileSize 50
                          -emConfiguration NONE

                          七、验证安装

                          登录 SQL*Plus:

                          sqlplus / as sysdba

                          检查数据库状态:

                          SELECT instance_name, status FROM v$instance;

                          八、开机自启(可选)

                          编辑 /etc/oratab,把最后一行改为:

                          orcl:/u01/app/oracle/product/19.3.0/dbhome_1:Y

                          Oracle 数据库 Demo

                          1.登录数据库

                          首先,确保你以 oracle 用户登录,同时采用 sqlplus 连接到数据库实例:

                          su - oracle
                          sqlplus / as sysdba

                          2.新建表

                          新建一个员工表:

                          CREATE TABLE employees (
                            employee_id NUMBER PRIMARY KEY,
                            first_name VARCHAR2(50),
                            last_name VARCHAR2(50),
                            hire_date DATE,
                            salary NUMBER
                          );

                          SQL*Plus 中,执行 DESC 命令查看表的结构时,默认情况下输出结果同时不像在图形界面中那样显示成表格样式,而是以文本形式呈现。

                          3.插入数据

                          INSERT INTO employees (employee_id, first_name, last_name, hire_date, salary)
                          VALUES (1, 'Alice', 'Johnson', TO_DATE('2023-01-01', 'YYYY-MM-DD'), 8000);

                          INSERT INTO employees (employee_id, first_name, last_name, hire_date, salary)
                          VALUES (2, 'Bob', 'Smith', TO_DATE('2023-03-15', 'YYYY-MM-DD'), 9500);

                          INSERT INTO employees (employee_id, first_name, last_name, hire_date, salary)
                          VALUES (3, 'Charlie', 'Brown', TO_DATE('2023-07-10', 'YYYY-MM-DD'), 7500);

                          INSERT INTO employees (employee_id, first_name, last_name, hire_date, salary)
                          VALUES (4, 'David', 'Wilson', TO_DATE('2023-09-01', 'YYYY-MM-DD'), 10000);

                          4.查询数据

                          1.查询所有员工信息:

                          SELECT * FROM employees;

                          2.查询特定员工(比如,员工 ID 为 2 的员工):

                          SELECT * FROM employees WHERE employee_id = 2;

                          3.查询薪水高于 8000 的员工:

                          SELECT first_name, last_name, salary FROM employees WHERE salary > 8000;

                          5.更新数据

                          比如,增加员工 Bob 的薪水:

                          UPDATE employees SET salary = 10500 WHERE employee_id = 2;

                          6.删除数据

                          删除员工 ID 为 3 的员工:

                          DELETE FROM employees WHERE employee_id = 3;

                          7.附加 SQL 查询示例

                          1.查询员工的薪资总和

                          SELECT SUM(salary) FROM employees;

                          2.查询薪资的平均值:

                          SELECT AVG(salary) FROM employees;

                          3.按照入职日期排序,显示前 2 个员工:

                          SELECT * FROM employees ORDER BY hire_date FETCH FIRST 2 ROWS ONLY;

                          8.筛选数据 (WHERE)

                          采用 WHERE 子句来筛选符合条件的数据。

                          SELECT * FROM employees WHERE salary > 8000;

                          采用逻辑运算符:

                          • AND:同时满足多个条件。

                          • OR:满足任意一个条件。

                          • NOT:排除某些条件

                          SELECT * FROM employees WHERE salary > 8000 AND EMPLOYEE_ID=2;

                          采用 BETWEEN 筛选范围:

                          SELECT * FROM employees WHERE salary BETWEEN 8000 AND 10000;

                          采用 IN 筛选多个值:

                          SELECT * FROM employees WHERE EMPLOYEE_ID IN (1, 2, 3);

                          采用 LIKE 进行模糊查询:

                          SELECT * FROM employees WHERE first_name LIKE 'A%';  -- 姓名以A开头

                          9.排序数据 (ORDER BY)

                          采用 ORDER BY 子句对查询结果进行排序,默认是按 升序 (ASC),如果需降序则采用 DESC

                          SELECT * FROM employees ORDER BY salary DESC;

                          10.限制查询结果 (LIMIT / ROWNUM)

                          Oracle 不兼容 LIMIT 语句,但能够采用 ROWNUMFETCH FIRST 来限制得到的行数。

                          SELECT * FROM employees WHERE ROWNUM <= 5;

                          11.聚合函数 (GROUP BY)

                          聚合函数 从实现思路看,用来对结果集进行汇总、统计或计算。常用的聚合函数有:SUMAVGCOUNTMAXMIN

                          示例:计算每个部门的平均薪资

                          SELECT department_id, AVG(salary) AS avg_salary
                          FROM employees
                          GROUP BY department_id;

                          示例:计算每个部门的员工人数

                          SELECT department_id, COUNT(*) AS num_employees
                          FROM employees
                          GROUP BY department_id;

                          示例:计算每个部门的薪资总和,同时筛选薪资总和大于 20,000 的部门

                          SELECT department_id, SUM(salary) AS total_salary
                          FROM employees
                          GROUP BY department_id
                          HAVING SUM(salary) > 20000;

                          12.联接查询 (JOIN)

                          Oracle 兼容多种类型的 联接在这个场景下,,用来在查询中连接多个表。常用的联接类型有:INNER JOINLEFT JOINRIGHT JOINFULL JOIN

                          示例:INNER JOIN(内联接)

                          得到两个表中匹配的行:

                          SELECT e.first_name, e.last_name, d.department_name
                          FROM employees e
                          INNER JOIN departments d ON e.department_id = d.department_id;

                          示例:LEFT JOIN(左外联接)

                          得到左表所有行,即使右表没有匹配的行:

                          SELECT e.first_name, e.last_name, d.department_name
                          FROM employees e
                          LEFT JOIN departments d ON e.department_id = d.department_id;

                          示例:RIGHT JOIN(右外联接)

                          得到右表所有行,即使左表没有匹配的行:

                          SELECT e.first_name, e.last_name, d.department_name
                          FROM employees e
                          RIGHT JOIN departments d ON e.department_id = d.department_id;

                          示例:FULL JOIN(全外联接)

                          得到两个表的所有行,不管是否有匹配的行:

                          SELECT e.first_name, e.last_name, d.department_name
                          FROM employees e
                          FULL JOIN departments d ON e.department_id = d.department_id;

                          13.常用的 Oracle 查询方法:

                          方法描述
                          SELECT用来从数据库中提取数据。
                          WHERE用来过滤查询结果。
                          ORDER BY用来对查询结果进行排序。
                          GROUP BY用来将结果按指定字段分组并进行聚合。
                          JOIN用来在多个表之间建立关系,进行联接查询。
                          子查询在查询中嵌套其他查询,用来更复杂的条件判断。
                          视图用来将复杂查询封装为一个虚拟表,简化查询。
                          ROWNUM / FETCH用来限制查询结果的行数,进行数据分页。

                          总结

                          到此这篇关于在Linux系统上安装部署Oracle Database保姆级教程的文章就介绍到这了,更多相关Linux安装部署Oracle内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多兼容脚本之家!

                          您可能感兴趣的文章:

                          • 在Linux下安装Oracle
                          • 在Linux下安装Oracle
                          • Linux安装Oracle出现乱码怎么解决
                          • linux系统下oracle11gR2静默安装的经验分享
                          • Linux虚拟机下安装Oracle 11G教程图文解说
                          • Linux一键部署oracle安装环境脚本(建议)
                          • Linux上oracle的安装部署与查询采用过程
                          • Linux安装Oracle12C全过程

                          相关资讯
                          点击查看更多
                          游戏推荐
                          推荐专题
                          热门阅读
                          推荐下载