Oracle学习笔记之二,Oracle 11g体系结构
Oracle 11g体系结构概述
- 实例(Instance),是指一组Oracle后台进程以及在服务器中分配的共享内存区域;
- 数据库(Database),是由基于磁盘的数据文件、控制文件、日志文件、参数文件和归档日志文件等组成的物理集合;
- 数据库服务器(Database Server),是指管理数据库的各种软件工具(比如:SQLPLUS,OEM等)、实例及数据库3个部分。
1. 逻辑存储结构
1.1 数据块(Data Blocks)
数据块是Oracle逻辑存储结构中的最小的逻辑单位,也是执行数据库输入输出操作的最小存储单位。
通常Oracle数据块是操作系统块的整数倍,如果操作系统快的大小为2048B,并且Oracle数据块的大小为8192B,则表示Oracle数据块由4个操作系统块构成。Oracle数据块有一定的标准大小,其大小被写入到初始化参数DB_BlOCK_SIZE中。
1.2 数据区(Extent)
数据区(也可称作数据扩展区)是由一组连续的Oracle数据块所构成的Oracle存储结构,一个或多个数据块组成一个数据区,一个或多个数据区再组成一个段(Segment)。
当一个段中的所有空间被使用完后,Oracle系统将自动为该段分配一个新的数据区,这也正符合Extent这个单词所具有的“扩展”的含义,可见数据区是Oracle存储分配的最小单位,Oracle就以数据区为单位进行存储控件的扩展。
1.3 段(Segment)
段是由一个或多个数据区组成的,它不是存储空间的分配单位,而是一个独立的逻辑存储结构,用于存储表、索引或簇等占用空间的数据对象。
一个段只属于一个特定的数据对象,段内的数据区可以不连续,并且可以跨越多个文件,使用段的目的是用来保存特定的对象。一个Oracle数据库通常有以下4种类型的段:
数据段、索引段、回滚段、临时段。
1.4 表空间(TableSpace)
Oracle使用表空间将相关的逻辑结构(比如段、数据区等)组合在一起,表空间是数据库的最大逻辑划分区域,通常用来存放数据表、索引、回滚段等数据对象(即Segment),任何数据对象在创建时都必须被指定存储在某个表空间中。一个表空间由一个或多个数据文件组成。
2. 物理存储结构
3. Oracle 11g服务器结构
实例(Instance)可以进一步划分为系统全局区(SGA)和后台进程(PMON、SMON)两部分。SGA使用操作系统内存资源,而后台进程需要使用CPU与内存资源。
3.1 系统全局区(SGA)
SGA是所有用户进程共享的一块内存区域,主要由高速数据缓冲区、共享池、重做日志缓存区、Java池和大型池等内存结构组成。
- 高速数据缓冲区(Database buffer cache),存放着Oracle系统最近访问过的数据块。
- 重做日志缓冲区(Redo log buffer cache),用于存放对数据库进行修改操作时产生的日志信息,这些日志信息在写入到重做日志文件之前,首先存放到重做日志缓冲区中,然后在检查点发生或重做日志缓冲区中的信息量达到一定的峰值时,由日志写入进程(LGWR)将此缓冲区的内容写入到重做日志文件。参数名:LOG_BUFFER
- 共享池(Shared pool),用于缓存SQL语句、PL/SQL语句、数据字典、资源锁、字符集以及其他控制结构等。参数名:SHARED_POOL
- 大型池(Large pool),在SGA区中不是必需的内存结构,只在某些特殊情况下,实例需要使用大型池来减轻共享池的访问压力,常用情况有:备份和恢复、执行具有大量排序操作的SQL语句、使用并行查询时。参数名:LARGE_POOL_SIZE
- Java池,用来提供内存空间给Java虚拟机使用,目的是支持在数据库中运行Java程序包。参数名:JAVA_POOL_SIZE
3.2 后台进程
放一张Oracle 11g整体结构图,作为本章的结束,原文参考:
http://blog.csdn.net/tianlesoftware/article/details/5587788