Oracle体系结构(基于11g)

来源:互联网 发布:java技术专家 编辑:程序博客网 时间:2024/04/28 03:03

Oracle体系结构(基于11g)

Oralce体系结构图

image

Oracle体系具体分析

  • 在oracle数据库管理系统中有三个重要概念需要理解:实例(Instance),数据库(Database)和数据库服务器(Database Server)

实例

实例是指一组Oracle后台进程以及在服务器中分配的共享内存区域

数据库

数据库是由基于磁盘的数据文件、控制文件、日志文件、参数文件和归档日志文件等组成的物理文件集合

数据库服务器

数据库服务器指的是管理数据库的各种软件工具(比如sqlplush,OEM等),实例,数据库三个部分

  • 实例用于管理和控制数据库;而数据库为实例提供数据。一个数据库可以被多个实例装载和打开,而一个数据只能访问一个数据库

  • 数据库的主要功能是存储数据,Oracle数据的存储结构分为逻辑存储结构和物理存储结构。逻辑存储结构用于描述Oracle内部组织和管理数据的方式.而物理存储结构用于展示Oracle在操作系统中的物理文件组成情况

  • 启动Oracle数据库服务器实际上是在服务器的内存中创建一个ORacle实例,然后用这个实例来访问和控制磁盘中的数据文件。用户连接到数据库时,实际上连接的是数据库的实例,由实例和数据库进行通信,最后将处理结果返回给用户(由上图可看出)

逻辑存储结构

image

Oracle数据库由多个表空间,而表空间由多个段组成,段由多个数据区组成,数据区由多个数据块组成

数据块(Data Blocks)

数据块是Oracle逻辑存储结构中的最小逻辑单位,也是执行数据块输入输出操作的最小存储单位

查询Oracle数据块大小

image

数据块结构

image

  •  块头:存放数据块的基本信息,如块的物理地址,块所属的段的类型
  •  表目录:存放表的相关信息,如果有数据块存储的是表数据,则这些目录中存储有关这些表的相关信息
  •  行目录:如果块中有行数据存在,则这些行的信息将会被记录在行目录中
  •  空余目录:块中未使用的区域,用于新行插入和已经存放的行的更新
  •  行数据:用与存放表数据和索引数据的地方
  • 数据区(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:记录用户的对象信息机被授权访问的对象信息
1 0