【小白学习Oralce】Oracle 与 MySQL 的风云对决,SQL*Plus 的独特舞台

1.Oracle简介

1.1什么是Oracle?

Oracle是一家公司,他的核心产品是Oracle数据库。Oracle数据库是以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S 体系结构的数据库之一。

ORACLE 通常应用于大型系统的数据库产品。

ORACLE 数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。

ORACLE 数据库具有以下特点:
(1)支持多用户、大事务量的事务处理
(2)数据安全性和完整性控制
(3)支持分布式数据处理
(4)可移植性

1.2Oracle数据库体系结构

1.2.1数据库

Oracle 数据库是数据的物理存储。这就包括(数据文件 ORA 或者 DBF、控制文件、联机日志、参数文件)。其实 Oracle 数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。可以看作是 Oracle 就只有一个大数据库。

1.2.2实例

一个Oracle实例(Oracle Instance)有一系列的后台进程(Backguound Processes)
和内存结构(Memory Structures)组成。一个数据库可以有 n 个实例。

1.2.3数据文件(dbf)

数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,
真正是在某一个或者多个数据文件中。而一个表空间可以由一个或多个数据文件
组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,
就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才
行。

1.2.4表空间

表空间是 Oracle 对物理数据库上相关数据文件(ORA 或者 DBF 文件)的逻辑映射。一个数据库在逻辑上被划分成一到若干个表空间,每个表空间包含了在逻辑上相关联的一组结构。每个数据库至少有一个表空间(称之为 system 表空间)。
每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件
(datafile)。一个数据文件只能属于一个表空间。
在这里插入图片描述
注:表的数据,是有用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。

由于 oracle 的数据库不是普通的概念,oracle 是有用户和表空间对数据进行
管理和存放的。但是表不是由表空间去查询的,而是由用户去查的。因为不同用
户可以在同一个表空间建立同一个名字的表!这里区分就是用户了!
在这里插入图片描述

1.2.5用户

用户是在表空间下建立的。用户登陆后只能看到和操作自己的表。ORACLE的用户与 MYSQL 的数据库类似,每建立一个应用需要创建一个用户。

1.2.6 总的结构

在这里插入图片描述
实例与用户、表空间的关系:图中有实例 1 和实例 2 ,每个实例与用户、表空间都是一对多(1:N)的关系。即一个实例下可以有多个用户和多个表空间。

用户与表空间的关系:用户和表空间是多对一(N:1)的关系,意味着多个用户可以对应同一个表空间。比如实例 1 下的用户 LHB、LSZ 对应同一个表空间;实例 2 下的用户 LHB、ZZY 也对应同一个表空间。

表空间与数据文件的关系:一个表空间可以包含多个数据文件,像实例 1 的表空间下有 A.dbf、B.dbf、C.ora 这几个数据文件;实例 2 的表空间下有 D.dbf、E.ora、C.ora 这几个数据文件。

表与数据文件的关系:每个表随机存储在一个或者多个 dbf/ora 数据文件中,如实例 1 中用户 LHB 的表 1 和表 4,用户 LSZ 的表 2 和表 3,都分散存储在不同数据文件中;实例 2 中用户 LHB 的表 a ,用户 ZZY 的表 b 和表 c 也是如此 。

2.Oracle数据库和Mysql数据库的区别

2.1 基本区别

分类MySQLOracle
厂商Oracle 公司(开源社区版免费)Oracle 公司(商业闭源,需付费授权)
定位轻量级、开源、适合中小型应用企业级、高可靠、适合大型复杂系统
默认事务隔离REPEATABLE - READREAD COMMITTED
并发模型多线程(单进程多线程)多进程(通过后台进程协作)
存储引擎支持多引擎(InnoDB、MyISAM等)单一存储引擎(Oracle Storage)
成本社区版免费,企业版收费商业授权费用高

2.2 架构差异

  1. 实例与数据库关系

    • MySQL:一个实例对应一个数据库(逻辑上可创建多库,但物理上通常单库)。
    • Oracle:一个实例可管理多个数据库(通过“表空间”和“用户”逻辑隔离)。
  2. 内存管理

    • MySQL:内存分配相对简单,依赖参数如 innodb_buffer_pool_size。
    • Oracle:通过 SGA(系统全局区)和 PGA(程序全局区)精细控制内存,支持动态调整。
  3. 后台进程

    • MySQL:后台线程(如主线程、IO线程)管理存储引擎。
    • Oracle:多个独立进程(如 DBWn 写数据、LGWR 写日志、SMON 维护)协作。

2.3功能对比

功能MySQLOracle
事务支持InnoDB 支持 ACID完整 ACID,支持分布式事务(XA)
高可用主从复制、InnoDB ClusterData Guard、RAC(实时集群)
分区表支持简单范围/列表分区支持范围、列表、哈希、复合分区
优化器基于规则的优化器(简单场景快)基于成本的优化器(CBO),复杂查询优
并行查询有限支持(如 8.0+)强大的并行执行(PQO)
物化视图不支持支持物化视图及查询重写
闪回技术支持闪回查询、闪回表(恢复误操作)

2.4SQL 语法差异

  1. 分页查询

    • MySQL:LIMIT offset, row_count

      SELECT * FROM table LIMIT 10 OFFSET 20;
      
    • Oracle:ROWNUM 或 FETCH(12c+)

      SELECT * FROM (SELECT t.*, ROWNUM rn FROM table t) WHERE rn BETWEEN 21 AND 30;
      -- 或 12c+
      SELECT * FROM table OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;
      
  2. 字符串连接

    • MySQL:CONCAT(str1, str2)

    • Oracle:str1 || str2 或 CONCAT(str1, str2)

  3. 日期处理

    • MySQL:NOW() 获取当前时间

    • Oracle:SYSDATE 或 CURRENT_TIMESTAMP

  4. 自增主键

    • MySQL:AUTO_INCREMENT

    • Oracle:通过序列(Sequence)和触发器实现:

      CREATE SEQUENCE seq_table_id;
      CREATE TRIGGER trg_table BEFORE INSERT ON table
      FOR EACH ROW BEGIN
        SELECT seq_table_id.NEXTVAL INTO :NEW.id FROM DUAL;
      END;
      

2.5性能优化

  1. 锁机制

    • MySQL:行级锁(InnoDB),表级锁(MyISAM)。
    • Oracle:行级锁 + 多版本并发控制(MVCC),支持更细粒度的锁。
  2. 索引类型

    • MySQL:B-Tree、全文索引(InnoDB)、空间索引。
    • Oracle:B-Tree、位图索引、函数索引、反向键索引。
  3. 执行计划

    • MySQL:EXPLAIN 输出简单,适合基础优化。
    • Oracle:EXPLAIN PLAN 提供详细步骤,支持 DBMS_XPLAN 高级分析。

2.6扩展与高可用

  1. 复制机制

    • MySQL:异步主从复制(基于 binlog),半同步复制。
    • Oracle:Data Guard(物理/逻辑同步),支持零数据丢失模式。
  2. 集群方案

    • MySQL:InnoDB Cluster(基于 Group Replication)。
    • Oracle:RAC(Real Application Clusters),多节点共享存储。

2.7安全性

安全功能MySQLOracle
权限控制基于用户/库/表的权限细粒度权限(如列级权限、VPD)
加密表空间加密(企业版)TDE(透明数据加密)
审计企业版支持审计标准审计 + 细粒度审计(FGA)

2.8适用场景

  1. MySQL
    Web 应用、中小型系统(如电商、博客)。
    需要快速开发、低成本、轻量级部署的场景。
    读写分离或分库分表的分布式架构(如通过 ShardingSphere)。

  2. Oracle
    金融、电信等对事务一致性和高可用性要求高的领域。
    复杂查询、海量数据(如数据仓库)、高并发 OLTP 系统。
    需要企业级支持(如 24x7 服务、灾备方案)的场景。

2.9总结

选择 MySQL:成本敏感、轻量级、快速迭代、社区支持。
选择 Oracle:企业级需求、复杂业务逻辑、高可用性、预算充足。

3.什么是SQLPLUS?

3.1作用

SQL*Plus 是 Oracle 数据库提供的一个命令行交互工具,用于连接 Oracle 数据库并执行 SQL 语句、PL/SQL 程序,以及管理数据库对象。它是 Oracle 数据库的“经典工具”,类似于 MySQL 的 mysql 命令行客户端,但功能更强大且深度集成 Oracle 特性。

3.2SQL*PLUS与MySQL客户端的对比

特性SQL*Plus (Oracle)MySQL 命令行客户端
交互模式支持变量绑定、脚本控制基础交互,支持 \G 格式化输出
格式化通过 COLUMN、SET 精细控制简单表格或垂直格式(\G)
脚本功能支持复杂脚本和动态替换变量支持基本脚本执行
管理功能可直接启停数据库实例仅支持查询和用户管理
扩展性可调用操作系统命令(HOST)无直接操作系统交互
评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值