Oracle体系结构(基于11g)
Oralce体系结构图
Oracle体系具体分析
- 在oracle数据库管理系统中有三个重要概念需要理解:实例(Instance),数据库(Database)和数据库服务器(Database Server)
实例
实例是指一组Oracle后台进程以及在服务器中分配的共享内存区域
数据库
数据库是由基于磁盘的数据文件、控制文件、日志文件、参数文件和归档日志文件等组成的物理文件集合
数据库服务器
数据库服务器指的是管理数据库的各种软件工具(比如sqlplush,OEM等),实例,数据库三个部分
-
实例用于管理和控制数据库;而数据库为实例提供数据。一个数据库可以被多个实例装载和打开,而一个数据只能访问一个数据库
-
数据库的主要功能是存储数据,Oracle数据的存储结构分为逻辑存储结构和物理存储结构。逻辑存储结构用于描述Oracle内部组织和管理数据的方式.而物理存储结构用于展示Oracle在操作系统中的物理文件组成情况
-
启动Oracle数据库服务器实际上是在服务器的内存中创建一个ORacle实例,然后用这个实例来访问和控制磁盘中的数据文件。用户连接到数据库时,实际上连接的是数据库的实例,由实例和数据库进行通信,最后将处理结果返回给用户(由上图可看出)
逻辑存储结构
Oracle数据库由多个表空间,而表空间由多个段组成,段由多个数据区组成,数据区由多个数据块组成
数据块(Data Blocks)
数据块是Oracle逻辑存储结构中的最小逻辑单位,也是执行数据块输入输出操作的最小存储单位
查询Oracle数据块大小
数据块结构
- 块头:存放数据块的基本信息,如块的物理地址,块所属的段的类型
- 表目录:存放表的相关信息,如果有数据块存储的是表数据,则这些目录中存储有关这些表的相关信息
- 行目录:如果块中有行数据存在,则这些行的信息将会被记录在行目录中
- 空余目录:块中未使用的区域,用于新行插入和已经存放的行的更新
- 行数据:用与存放表数据和索引数据的地方
- 数据区(Extent)
数据区:
数据区由多个数据块组成,数据区是Oracle存储分配的最小单位
- 段(Segment)
段:
段由多个数据区构成,是为特点的数据对象(表,索引,回滚)分配的一系列数据区
一个Oracle数据块通常有下列类型的段
数据段:表中的数据记录
索引段:提供系统性能的索引
回滚段:保存回滚条目
临时段:用于存储解析过的查询语句以及排序过程中产生的临时数据
- 表空间(TableSpace)
SYSTEM表空间
系统表空间,用于存放Oracle系统内部表和数据字典的数据
SYSAUX表空间
Oracle11g新增加,用于存储数据字典以外的其他数据对象,充当SYSTEM表空间,降低SYSTEM表空间的负荷
UODO表空间
撤销表空间,用于存储撤销信息
USERS表空间
用户表空间,Oracle建议用户使用的表空间,创建各种数据对象,比如创建表,索引,用户等数据对象
物理存储结构
- 数据文件(保存用户应用程序数据和Oracle系统内部数据的文件)
- 系统数据文件
- 撤销数据文件
- 用户数据文件
- 控制文件(记录数据库的物理结构,主要是数据库名、数据文件和日志文件的名字和位置、数据库建立日期等信息)
- 日志文件
- 重做日志文件
- 归档日志文件
- 服务器参数文件
-
查看服务器参数
-
select name,value,ismodified from v$parameter或者show parameter
-
-
修改参数
-
alter system set db_block_size=4096
-
-
- 密码文件、警告文件和跟踪文件
Oralce 11g服务器结构
Oracle服务器主要由实例、数据库、程序全局区和前台进程组成
实例可以进一步划分为系统全局区(SGA)和后台进程(PMON、SMON)
系统全局区(SGA)
- 高速数据缓冲区(Database buffer cache)
- 重做日志缓冲区(Red log buffer cache)
- 共享池(Shared Pool)
- 大型池(Large pool)
- Java池
- 流池
程序全局区(PGA)
把代码、全局变量和数据结构存放其中,但其是每个Oracle服务器进程私有
- 私有SQL区
- 会话区
前台进程
- 用户进程
- 服务器进程
后台进程
数据字典
数据字典Oracle存放数据库内部信息的地方
- dba_:包含数据库实例的所有对象信息
- v$:当前实例的动态视图,包含系统管理和系统优化等所使用的视图
- user_:记录用户的对象信息
- gv_:分布式环境下所有实例的动态信息,包括系统管理和系统优化所使用的视图
- all:记录用户的对象信息机被授权访问的对象信息