2. Oracle学习笔记-Oracle的体系结构
2. Oracle的体系结构概述
graph LR A[Oracle的体系结构]-->体系结构概述 A-->逻辑存储结构 A-->物理存储结构 A-->服务器结构 A-->数据字典
2.1 Oracle体系结构图
2.2 用户进程和服务器进程的关系
2.3 存储结构分类
2.3.1 逻辑存储结构
数据块
数据块是Oracle逻辑存储结构中的最小的逻辑单位
一个数据库对应一个或者多个物理块, 大小由参数
DB_BLOCK_SIZE
决定数据块的结构包括块头和存储区的两个部分
数据区
- 数据区是由连续的数据块结合而成的
- 数据区是Oracle存储分配的最小单位
段
- 数据段:存储表中所有数据
- 索引段:存储表上最佳查询的所有索引数据
- 临时段:存储表排序操作期间建立的临时表的数据
- 回滚段:存储修改之前的位置和值
表空间
- 表空间是数据库的最大逻辑划分区域
- 一个表空间由一个或多个数据文件组成,一个数据文件只属于一个表空间
- 表空间的大小是它所对应的数据文件大小的总和
- 默认创建的表空间
- 系统表空间
- 辅助表空间
- 撤销表空间
- 用户表空间
2.3.2 物理存储结构
物理结构包含三种数据文件
控制文件
- 是数据库中最小的文件同时也是数据库中最重要的文件
数据文件
数据文件的种类
- 系统数据文件(
SYSTEM01.DBF
和SYSAUX01.DBF
) - 回滚数据文件(
UNDOTBS01.DBF
) - 用户数据文件(
USERS01.DBF
) - 临时数据文件(
TEMP01.DBF
)
重做日志文件
日志文件 .LOG
- 重做日志文件:记录所有的数据变化、提供恢复机制
- 归档日志文件:重做日志文件的历史备份,有归档模式和非归档模式之分
其他文件
- 服务器参数文件 (
orcl.ora
) - 密码文件 (
PWDorcl.ora
) - 警告文件 (
alert_orcl.log
) - 跟踪文件
2.4 Oracle 服务器结构
Oracle服务器主要由以下部分组成:
2.4.1 系统全局区SGA
高速数据缓冲区
作用:用来存放Oracle系统最近访问过的数据块
经常或最近被访问的数据块会被放置到高速数据缓冲区的前端,不经常被访问的数据块会被放置到高速数据缓冲区的后端共享池
作用:存储最近执行过的SQL语句和最近使用过的数据定义
共享池包含:库高速缓冲区 和 字典高速缓冲区
2.4.2 程序全局区(PGA)
程序全局区PGA又称作用户进程全局区, 可以把代码、全局变量和数据结构都存储在其中, 每个Oracle服务器进程只拥有自己的那部分PGA资源
程序全局区由两部分组成:私有SQL区 和 会话区
2.4.3 前台进程
- 用户进程: 使用SQL Plus连接成功后生成。包含两个重要概念:连接和会话
- 服务器进程:处理用户会话过程中的SQL语句和SQL Plus命令
2.4.4 后台进程
- 数据写入进程
- 检查点进程
- 日志写入进程
- 归档进程
2.4.4 实例
2.4.5 数据库
2.5 数据字典
数据字典是Oracle存储数据库内部信息的地方,描述了数据库内部的运行和管理情况。
Oracle数据字典的名称由前缀和后缀组成,使用下划线“_”连接
- dba_: 包含数据库实例的所有对象信息。_
- v$_:当前实例的动态视图,包含系统管理和系统优化等使用的视图。
- user_:记录用户的对象信息。
- gv_:分布式环境下所有实例的动态视图,包含系统管理和系统优化使用的视图
- all_:记录用户的对象信息及被授权访问的对象信息。
2.5.1 基本的数据字典
字典名称 | 说明 |
---|---|
DBA_TABLES | 所有表的信息,包括所有者(用户) |
DBA_TAB_COLUMNS | 所有表的列信息,包括所有者(用户) |
DBA_VIEWS | 所有视图的信息,包括所有者(用户) |
DBA_TAB_COMMENTS | 所有表的注释信息,包括所有者(用户) |
DBA_COL_COMMENTS | 所有列的注释信息,包括所有者(用户) |
DBA_INDEXES | 所有索引的信息,包括所有者(用户) |
DBA_IND_COLUMNS | 所有索引列的信息,包括所有者(用户) |
DBA_CONSTRAINTS | 所有约束的信息,包括所有者(用户) |
DBA_CONS_COLUMNS | 所有约束列的信息,包括所有者(用户) |
DBA_TAB_PRIVS | 所有表的权限信息,包括所有者(用户) |
DBA_TAB_PRIVS_RECD | 所有表的详细权限信息,包括所有者(用户) |
DBA_TAB_COLUMNS_STATISTICS | 所有表的列统计信息,包括所有者(用户) |
DBA_TAB_MODIFICATIONS | 所有表的最后修改时间信息,包括所有者(用户) |
DBA_TAB_PARTITIONS | 所有表的分区信息,包括所有者(用户) |
DBA_TAB_SUBPARTITIONS | 所有表的子分区信息,包括所有者(用户) |
DBA_TRIGGERS | 所有触发器的信息,包括所有者(用户) |
DBA_PROCEDURES | 所有存储过程和函数的信息,包括所有者(用户) |
DBA_ARGUMENTS | 所有存储过程和函数参数的信息,包括所有者(用户) |
DBA_ERRORS | 所有存储过程、函数和包中的错误信息,包括所有者(用户) |
DBA_TAB_STATISTICS | 所有表的统计信息,包括所有者(用户) |
DBA_TAB_PENDING_STATS | 所有表的等待统计信息,包括所有者(用户) |
DBA_SCHEDULER_JOBS | 所有调度任务的信息,包括所有者(用户) |
DBA_SCHEDULER_JOB_RUN_DETAILS | 所有调度任务运行详情信息,包括所有者(用户) |
2.5.2 常用动态性能视图
视图名称 | 说明 |
---|---|
V$SESSION | 提供有关当前会话的信息,如会话 ID、用户名、状态等 |
V$SQL | 包含所有当前正在执行的 SQL 语句的信息 |
V$SQLAREA | 包含有关 SQL 语句执行计划和性能的信息 |
V$SESSION_EVENT | 提供与会话相关的等待事件信息 |
V$SYSTEM_EVENT | 提供与系统相关的等待事件信息 |
V$SQL_PLAN | 提供 SQL 语句执行计划的信息 |
V$SQL_PLAN_STATISTICS | 提供 SQL 语句执行计划的统计信息 |
V$INSTANCE | 提供有关数据库实例的信息,如实例名称、状态等 |
V$WAITSTAT | 提供有关等待事件统计信息的汇总 |
V$LOCK | 提供有关数据库锁的信息 |
V$TRANSACTION | 提供有关数据库事务的信息 |
V$ROLLSTAT | 提供有关回滚段的信息 |
V$SYSSTAT | 提供有关系统级统计信息 |
V$SESSION_LONGOPS | 提供有关长时间运行的操作的信息 |
V$RESOURCE_LIMIT | 提供有关资源限制和使用情况的信息 |
V$DATABASE | 提供有关数据库的全局信息,如数据库名称、状态等 |
V$PARAMETER | 提供有关初始化参数的信息 |
V$INSTANCE_PARAMETER | 提供有关实例初始化参数的信息 |
V$SQLSTATS | 提供 SQL 语句的统计信息,包括执行次数、等待时间等 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 技术匝记簿!
评论