中间件速查手册
关系型数据库 · oracle

Oracle

银行核心系统的老牌商业库,稳,但贵

关系型数据库商业授权C / C++学习难度:较难

Oracle 是商业数据库里的标杆:RAC 让多台机器共享同一个库、PL/SQL 把逻辑写在库里、AWR 能直接告诉你哪条 SQL 在拖后腿。它的能力上限很高,代价是授权费和运维门槛——一套核心库的年费常常比整个技术团队的工资还高。

01

它解决什么问题

银行、运营商的核心账务要求 7×24 不中断、单库几个 TB、还要满足审计和容灾合规。开源库在十年前扛不住这种要求,只能上商业库。

真实场景:典型场景:银行核心系统两节点 RAC,一个节点挂了业务无感;日终批量用 PL/SQL 存储过程跑,归档日志保留 30 天供审计回溯。

02

核心概念

每个概念一句话 + 一个类比。点击卡片看更详细的解释。

03

数据流转动画

跟着步骤看一条数据从进入系统到被处理完的完整路径,可以暂停、重播和调速。

Flow animation

一条 UPDATE 在 Oracle 里是怎么走的

应用JDBC / OCIListener监听器SGABuffer Cache / 共享池Redo Log在线 + 归档数据文件.dbf / 表空间RAC 另一节点共享存储

← 左右滑动查看完整流程图 →

01 / 05
1. 建立连接

应用连到 SCAN 地址,监听器挑一个负载低的实例,把连接交给它的服务进程。

提示:注意 UNDO 和 Redo 的分工:UNDO 保证能回滚和一致性读,Redo 保证崩溃能恢复。 悬停图中的节点可以看概念解释。

04

优劣势

短句说清适合什么、不适合什么,选型时先看这一栏。

适合什么
  • RAC 真正做到了多活,单节点故障业务几乎无感
  • 优化器与执行计划极其成熟,复杂 SQL 表现稳定
  • PL/SQL、物化视图、分区表、AWR 等企业级能力齐全
  • 商业支持兜底,出问题有人负责
不适合什么
  • 授权费 + 服务费昂贵,扩容成本高
  • 运维门槛高,参数、表空间、RAC 都有专门的坑
  • 云原生与容器化支持较弱,弹性差
  • 人才和生态集中在金融、运营商,互联网公司用得少
05

常见使用场景

每个场景都配一句「为什么用它」。

01

银行核心账务

账户、流水、总账,要求零数据丢失和 7×24 可用。

为什么用它:RAC + Data Guard + 归档日志,容灾链路是现成的。

02

运营商计费与结算

海量话单入库,日终批量跑存储过程结算。

为什么用它:分区表 + PL/SQL 批处理 + 并行执行,跑批能力经过验证。

03

历史系统与合规审计

需要保留多年、可回溯、有审计要求的数据。

为什么用它:闪回查询、归档日志、审计视图都是内建能力。

06

同类对比

和同赛道的组件并排看,差异一目了然。

MySQLPostgreSQLOracle

选型顺序应该是:先看是不是单机嵌入式(是就 SQLite),再看预算和合规(要商业兜底就 Oracle),最后在 MySQL 和 PostgreSQL 之间按“功能复杂度 vs 生态成熟度”取舍。三者都能存好数据,差别在边界。

打开对比页
07

常见问题

上手第一个月最容易卡住的地方。

Q1Oracle 和 MySQL 最大的区别是什么?

架构上:Oracle 是实例与数据库分离、共享存储多活(RAC),MySQL 是单机主从。能力上:Oracle 的优化器、分区、物化视图、PL/SQL 更完整,适合复杂批处理和核心系统;MySQL 更轻、更便宜、生态更互联网化。选型本质是预算和场景,不是技术优劣。

Q2RAC 是不是就高枕无忧了?

不是。RAC 解决的是实例级故障,但共享存储仍然是单点,必须配 Data Guard 或存储双活。另外 RAC 的 Cache Fusion 对网络延迟敏感,跨机房部署基本不可行,同城双活要靠 Data Guard 而不是 RAC。

Q3为什么提交后数据文件里还没有?

因为提交只保证 Redo 落盘,数据块还是内存里的脏页。这时断电也不会丢——重启时 Oracle 会用 Redo 重放。理解这一点,才能明白“Redo 是持久化的真正边界”。

Q4现在还有必要学 Oracle 吗?

看你所在的行业。金融、运营商、大型 ERP 里 Oracle 仍然是主力,相关岗位薪资不低;纯互联网业务基本是 MySQL / PostgreSQL。学它的价值在于理解关系库的完整形态——执行计划、锁、一致性读这些概念在别的库里同样适用。