在Linux系统上安装部署Oracle Database保姆级教程实用指南
平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“在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
原因解释:
libaio、glibc、libstdc++是 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 语句,但能够采用 ROWNUM 或 FETCH FIRST 来限制得到的行数。
SELECT * FROM employees WHERE ROWNUM <= 5;
11.聚合函数 (GROUP BY)
聚合函数 从实现思路看,用来对结果集进行汇总、统计或计算。常用的聚合函数有:SUM、AVG、COUNT、MAX、MIN。
示例:计算每个部门的平均薪资
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 JOIN、LEFT JOIN、RIGHT JOIN、FULL 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全过程
-
09.02
掌握Excel跨表格提取数据实用技巧提升工作效率的关键
-
09.02
链上 AI 服务的混沌工程实践:故障注入、弹性验证与自动化恢复演练
-
09.02
如何高效比对Excel两个表格中的数据确保准确性?
-
09.02
两份Excel表格如何比对不同数据以提升工作效率和信息管理能力
-
09.02
紫光国微要注意什么-核心信息和使用场景
-
09.02
宇树科技王兴兴要注意什么-核心信息和使用场景
-
-
- 关于Dart中的异步编程实用指南
- 09.02
-
-
-
- 如何高效将多个表格数据汇总到一个表格中?
- 09.02
-
- 如何在PPT中快速找到和使用布尔运算工具?
- 09.02
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏