# 数据库教程FGMT01‑Oracle数据库基础知识与版本特性
## 前言
Oracle数据库作为企业级关系型数据库的主流产品,广泛应用于金融、运营商、政务、大型制造等核心业务场景,是数据库工程师、DBA、运维、开发人员必须掌握的核心技术栈。在企业实际运维工作中,版本选型、生命周期评估、体系架构理解是数据库实施、升级、故障排查的前置基础。风哥教程 itpux‑com
本文围绕Oracle版本演进、官方生命周期策略、物理与逻辑存储、内存进程架构、多租户、RAC集群、ADG容灾等核心技术点展开,兼顾理论原理与生产可落地的实操命令。面向具备基础Linux操作能力的IT从业人员,帮助读者建立完整的Oracle底层认知框架,为后续安装部署、性能调优、故障处理打下基础。本文内容分为版本与生命周期、数据库体系理论、实战操作步骤、总结四个部分,覆盖从版本识别、架构查询、基础状态检查到集群与容灾信息采集的实操流程。
**内容大纲:**
1. Oracle数据库简介、版本演进与官方生命周期策略
2. Oracle各主流版本核心技术新特性(9i/10g/11g/12c/18c/19c/21c/26ai)
3. Oracle数据库体系架构理论:数据库与实例、物理存储结构、逻辑存储结构
4. Oracle内存结构SGA、PGA与后台进程工作机制
5. 多租户CDB/PDB架构原理、RAC集群、ADG与OGG容灾体系
6. 生产环境实战操作:版本识别、生命周期信息采集、存储结构查询、内存参数检查、实例状态管理、多租户查询、集群与容灾状态采集
7. 内容总结,生产实践建议
## 一、Oracle数据库版本与生命周期理论
### 1.1 Oracle数据库产品简介
Oracle数据库是面向企业级OLTP、OLAP混合负载的关系型数据库软件,支持单机、集群、容灾、云化部署模式,具备高可用、高并发、数据强一致性、横向纵向扩展能力。软件版本迭代伴随硬件、业务需求不断演进,不同大版本之间存在架构革新、功能新增、废弃参数、语法变更,生产环境版本选型必须结合官方生命周期、业务需求、硬件平台综合评估。风哥教程 itpux‑com
Oracle的版本命名规则经历多次变化:9i、10g、11g后缀i代表Internet,g代表Grid网格;12c开始c代表Cloud云;18c、19c延续云版本编号;21c为创新版本;26ai增加AI能力,面向智能化数据库方向演进。
### 1.2 Oracle数据库官方生命周期策略
Oracle为每个数据库版本定义明确的支持周期,分为基础支持、扩展支持、付费延伸支持三个阶段。超出基础支持周期之后,官方不再提供常规BUG补丁、安全补丁,仅付费可获取有限修复,生产环境禁止使用已经完全终止支持的版本,避免安全风险与故障无官方解决方案的问题。
|版本|核心状态说明|
| —- | —- |
|Oracle 9i|早已终止全部支持,存量系统必须规划迁移升级|
|Oracle10g|生命周期完全结束,无任何官方补丁支持|
|Oracle11g R2(11.2.0.4)|基础支持结束,扩展支持到期,仅付费延伸支持|
|Oracle12cR1/R2|12cR1已终止,12cR2扩展支持窗口有限|
|Oracle19c|长期支持LTS版本,企业生产首选版本,补丁周期最长|
|Oracle21c|创新版本,适合技术验证,不建议核心业务直接上线|
|Oracle26ai|最新版本,内置AI能力,面向新业务场景试点|
> 生产选型原则:核心业务优先选择LTS长期支持版本,尽量避开生命周期即将到期的版本;测试环境可以使用创新版本验证新功能。
### 1.3 各版本重要新特性梳理
#### 1.3.1 Oracle 9i、10g核心特性
Oracle9i完善RAC集群基础能力,引入闪回查询初步能力,改进排序内存管理。
Oracle10g是网格时代里程碑版本,完整推出ASM自动存储管理,简化磁盘存储运维;引入AWR自动负载信息库、ADDM自动数据库诊断监控工具,把性能分析从手工脚本升级为内置自动化工具;实现大文件表空间,简化超大表空间管理;引入闪回表、回收站功能,降低误删数据恢复难度。
#### 1.3.2 Oracle11g版本核心特性
11g R1/R2在稳定性、高可用、压缩技术大幅增强。引入Data Guard ADG实时查询备库,备库打开只读同时同步重做日志,实现读写分离;高级压缩、分区增强;增加AMM自动内存管理,实现SGA与PGA内存自动动态调配;ASM支持OCR、Voting磁盘存放,集群存储架构简化;新增RMAN增量备份、块介质恢复,备份恢复能力增强。同时引入Result Cache结果集缓存,提升重复查询性能。
#### 1.3.3 Oracle12c、18c、19c版本核心特性
12c最大架构革新是**多租户Multitenant架构**,CDB容器数据库,PDB可插拔数据库,一套实例托管多个业务PDB,实现数据库云化隔离,硬件资源池化;引入In‑Memory内存列存储,混合负载场景大幅提升分析查询速度;ADG滚动升级,降低主备库版本升级停机时间;支持在线重定义表增强。
18c作为12cR2后续迭代版本,更多是功能完善,BUG修复。
19c为12c家族最终LTS长期支持版本,是目前企业部署最广泛版本。19c增强ADG能力,支持`RECOVER STANDBY DATABASE FROM SERVICE`,备库直接通过网络从主库获取缺失归档修复GAP;True Cache内存缓存;RAC集群运维简化,补丁与RU更新机制优化,大量废弃旧的不兼容参数,稳定性得到市场大规模验证。
#### 1.3.4 Oracle21c与26ai版本特性
21c属于创新版本,JSON数据类型增强,图数据库原生支持,自动索引,更多自动化运维能力。
26ai主打AI增强,内置向量检索,支持大模型向量数据存储;SQL语法增强,简化开发;进一步强化自动化运维,降低DBA运维工作量,适合新系统试点验证。
## 二、Oracle数据库体系架构理论
### 2.1 数据库与实例的关系
Oracle数据库(Database)是磁盘上物理文件集合:数据文件、控制文件、重做日志文件、归档日志等持久化存储。
Oracle实例(Instance)是内存结构+后台进程,运行在内存中。实例挂载打开磁盘上的数据库文件对外提供服务。**一个实例可以打开一个数据库;RAC架构下多个实例可以共同打开同一份数据库磁盘文件,实现集群。单机环境实例和数据库一一对应;RAC是多实例单数据库模型**。
> 核心概念区分:数据库是磁盘数据;实例是内存进程;实例启动后mount、open数据库文件,业务访问实例读写磁盘数据库。
### 2.2 Oracle物理存储结构
物理存储是磁盘上真实存在的文件,核心文件类型:
1. **数据文件(*.dbf)**:存放表、索引、数据,属于表空间载体,一个表空间由一个或多个数据文件组成。
2. **控制文件(*.ctl)**:二进制元数据文件,记录数据库名称、数据文件、日志文件路径、SCN号、RAC配置信息,必须多路复用,至少2份不同磁盘,防止单点损坏导致数据库无法启动。
3. **联机重做日志(redo log)**:循环写入,所有DML变更首先写入redo buffer,刷入联机重做日志,崩溃恢复依赖redo日志。至少两组日志组。
4. **归档日志(archivelog)**:开启归档模式后,联机日志切换时把内容保存归档,用于介质恢复、ADG容灾复制。生产库必须开启归档模式。
5. 参数文件spfile/pfile:实例启动读取初始化参数,spfile为二进制服务器参数文件;pfile是文本参数文件。
### 2.3 Oracle逻辑存储结构
逻辑结构自上而下:数据库 → 表空间 → 段(segment) → 区(extent) → 数据块(block)。
– 表空间:逻辑容器,把一组数据文件封装,业务对象存放在指定表空间;分为yong久表空间、undo回滚表空间、临时表空间。
– 段:表段、索引段、undo段、临时段;一个对象对应一个段。
– 区:连续的数据块集合,Oracle分配空间最小粒度。
– 数据块block:IO读写最小单元,db_block_size参数定义,常见8KB。
逻辑结构与物理结构映射:逻辑段的数据最终分布在一个或多个磁盘数据文件之上。
### 2.4 内存结构SGA与PGA
#### 2.4.1 SGA系统全局区(所有进程共享内存)
SGA是实例启动分配的共享内存区域,主要组件如下:
1. **Database Buffer Cache数据库缓冲区缓存**:磁盘数据块的内存缓存,减少磁盘IO,业务最核心内存区域。
2. **Shared Pool共享池**:包含库缓存(缓存解析后的SQL、PL/SQL执行计划),数据字典缓存(表、用户权限元数据)。
3. **Redo Log Buffer重做日志缓冲区**:事务变更临时缓存,LGWR进程定期写入磁盘联机重做日志。
4. Large Pool大池:RMAN备份、并行查询、共享服务器使用;Java Pool用于Java存储过程。
内存管理模式:AMM自动内存管理,设置memory_target,数据库自动动态分配SGA与PGA大小;ASMM自动SGA管理,仅自动调节SGA内部各个组件。
#### 2.4.2 PGA程序全局区
PGA属于私有内存,每个服务进程独立分配,不共享。存储会话变量、排序操作、hash join中间数据、游标状态。专有服务器模式每个连接对应独立PGA;共享服务器模式PGA分配有所变化。
### 2.5 Oracle核心后台进程
|进程名称|核心作用|
| —- | —- |
|DBWn|数据库写进程,将buffer cache脏块刷入磁盘数据文件|
|LGWR|日志写进程,redo buffer写入联机重做日志,提交触发写redo|
|SMON|系统监控,实例崩溃后执行崩溃恢复;清理临时段,合并空闲区|
|PMON|进程监控,清理异常断开用户进程,释放资源,注册监听|
|ARCn|归档进程,归档模式下切换日志,生成归档日志文件|
|CKPT|检查点进程,触发检查点,更新控制文件、数据文件头SCN号|风哥 + itpux-com
### 2.6 多租户、RAC、容灾体系架构
1. **多租户CDB/PDB架构(12c+)**
CDB是容器数据库实例,内部包含ROOT根容器,SEED种子PDB,多个业务PDB可插拔数据库。PDB业务隔离,能够插拔迁移,一套实例运行多个业务库,硬件资源池化。普通用户传统非CDB数据库为Non‑CDB模式,19c后官方推荐CDB模式。
2. **RAC真实应用集群**
多实例共享一套磁盘数据库文件,多节点同时对外提供服务;共享存储ASM管理数据;包含CRS集群栈,OCR、Voting磁盘维护集群元数据;节点故障时,剩余节点可以接管业务,实现高可用。RAC必须部署集群软件GI(Grid Infrastructure)。
3. **ADG Active Data Guard与OGG GoldenGate**
ADG基于重做日志复制,物理备库,主备库物理块完全一致;备库支持只读打开,同时同步日志,实现容灾、读写分离。OGG是逻辑复制,解析redo日志,支持异构版本、异构数据库之间数据同步,可以做双活、数据迁移。ADG适合同构灾备;OGG适合异构复制、双活场景。
## 三、Oracle生产实战操作
> 说明:实操环境为Linux x86‑64,Oracle 19c企业版,所有命令生产执行前务必在测试环境验证;登录方式为操作系统oracle用户,设置ORACLE_SID环境变量,通过sqlplus / as sysdba登录。风哥教程 itpux‑com
### 3.1 环境准备与登录数据库
1.操作系统环境变量配置示例(bash)
“`bash
# 设置Oracle家目录与实例SID
export ORACLE_HOME=/oracle/app/oracle/product/19.0.0/dbhome_1
export ORACLE_SID=fgedudb
export PATH=$ORACLE_HOME/bin:$PATH
“`
2.登录sysdba
“`bash
sqlplus / as sysdba
“`
### 3.2 数据库版本信息查询(生产必做,用于评估生命周期)
#### 方式1:v$version视图,获取完整版本banner
“`sql
SELECT * FROM v$version;
“`
输出示例会返回数据库版本号,组件版本信息,确认主版本号19c/11g等。
#### 方式2:product_component_version
“`sql
SELECT * FROM product_component_version;
“`
#### 方式3:查看实例动态视图v$instance
“`sql
SELECT instance_name,host_name,version,status FROM v$instance;
“`
操作系统层面查看sqlplus二进制版本(仅代表软件介质版本,不一定等于打开的数据库版本)
“`bash
sqlplus -v
“`
### 3.3 数据库启动关闭,查看数据库open状态 风哥 itpux-com
数据库启动三阶段:nomount(启动实例,读参数文件)→ mount(读取控制文件)→ open(打开所有数据文件、重做日志)。
“`sql
–关闭数据库
SHUTDOWN IMMEDIATE;
–启动分步
STARTUP NOMOUNT;
ALTER DATABASE MOUNT;
ALTER DATABASE OPEN;
–直接完整启动
STARTUP;
–查询数据库状态,归档模式状态
SELECT name,open_mode,log_mode FROM v$database;
“`
log_mode字段如果为`ARCHIVELOG`代表归档模式;`NOARCHIVELOG`非归档,生产库必须开启归档。
### 3.4 物理存储结构文件信息查询
1.查询所有数据文件位置、大小、所属表空间
“`sql
SELECT file_name,tablespace_name,bytes/1024/1024 size_mb,status
FROM dba_data_files ORDER BY tablespace_name;
“`
2.查询控制文件多路复用配置,生产必须大于等于2份 风哥数据库 itpux-com
“`sql
SELECT name FROM v$controlfile;
“`
3.查询联机重做日志组、成员文件路径
“`sql
SELECT group#,member,status FROM v$logfile ORDER BY group#;
SELECT group#,bytes/1024/1024 size_mb,status FROM v$log;
“`
4.查看参数文件spfile位置
“`sql
SHOW PARAMETER spfile;
“`
### 3.5 逻辑存储结构查询:表空间、段、区、块
1.查看所有表空间信息,类型、状态
“`sql
SELECT tablespace_name,block_size,status,contents
FROM dba_tablespaces;
“`
contents字段:PERMANENTyong久表空间;UNDO回滚表空间;TEMPORARY临时表空间。
2.查看数据库块大小参数
“`sql
SHOW PARAMETER db_block_size;
“`
### 3.6 SGA与PGA内存参数检查实操
1.查看内存管理相关参数memory_target、sga_target、pga_aggregate_target
“`sql
SHOW PARAMETER memory_target;
SHOW PARAMETER sga_target;
SHOW PARAMETER pga_aggregate_target;
“`
2.查看SGA各个组件实际分配大小
“`sql
SELECT component,current_size/1024/1024 curr_mb
FROM v$sga_dynamic_components;
“`
3.查看PGA统计信息
“`sql
SELECT name,value/1024/1024 value_mb FROM v$pgastat;
“`
### 3.7 后台进程信息查看
Linux操作系统查看Oracle后台进程
“`bash
ps -ef | grep ora_
“`
数据库内部查看后台进程视图:
“`sql
SELECT paddr,program,background FROM v$process WHERE background=’1′;
“`
### 3.8 多租户CDB/PDB架构查询(12c+版本)
1.判断当前数据库是CDB容器数据库还是Non‑CDB
“`sql
SELECT name,cdb FROM v$database;
“`
CDB字段YES代表容器数据库;NO代表传统非容器库。
2.查看全部PDB可插拔数据库
“`sql
SELECT con_id,name,open_mode FROM v$pdbs;
“`
3.切换PDB会话
“`sql
ALTER SESSION SET CONTAINER=PDBORCL;
“`
### 3.9 RAC集群信息采集(RAC环境执行)
> 注意:Non‑RAC单机执行会返回空结果。
“`sql
–查看RAC实例信息
SELECT instance_number,instance_name,host_name,status FROM gv$instance;
–查看集群投票磁盘OCR信息(需要grid用户执行ocmd工具)
su – grid
crsctl query css votedisk
ocrcheck
“`
### 3.10 ADG容灾状态查询(备库执行)
物理备库查看备库状态、保护模式
“`sql
SELECT database_role,open_mode,protection_mode FROM v$database;
SELECT sequence#,applied FROM v$archived_log ORDER BY sequence# DESC;
“`
`applied=’YES’`代表归档日志已经在备库完成应用。 风哥数据库 itpux-com
### 3.11 基础参数运维查询常用命令汇总
“`sql
–查看全部初始化参数
SHOW PARAMETER;
–查询数据字典,获取undo表空间配置
SHOW PARAMETER undo_tablespace;
–临时表空间文件
SELECT file_name,bytes/1024/1024 size_mb FROM dba_temp_files;
“`
## 四、总结
Oracle数据库的版本选择、生命周期评估、底层体系架构是DBA开展运维工作的基石。不同版本之间,从9i、10g传统架构,到12c引入多租户云原生架构,再到19c作为当前生产LTS主力版本,直至26ai引入AI向量能力,架构持续迭代升级。生产系统选型应当优先选择长期支持版本,规避已经终止官方支持的旧版本,减少运维风险。
从底层架构上,必须分清数据库(磁盘持久文件)和实例(内存进程)的边界;理解物理文件、逻辑存储的映射;掌握SGA共享内存、PGA私有内存,核心后台进程的工作逻辑。多租户CDB/PDB、RAC集群、ADG容灾共同构成Oracle高可用体系。
通过本文中的实操命令,可以完成版本识别、存储文件巡检、内存参数采集、多租户、集群、容灾环境状态检查。在实际项目中,这些脚本经常用于数据库上线前检查、升级前评估、故障环境信息采集。后续在部署安装、备份恢复、SQL调优、故障排查工作中,都会反复使用这些基础视图与命令。DBA需要把理论知识结合生产实操,理解每一条查询输出字段的业务含义,而不是机械复制脚本执行。在真实业务环境,所有变更操作,务必严格遵守变更流程,先测试环境验证,再实施生产操作,保障业务系统稳定性。
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
