前言

这个章节主要想说的是Oracle的体系结构,这个也是理论强些。还有一些比较理论的知识点(比如表空间啊),就暂时先不写了,下一章节开始进入Oracle的操作阶段,比如表的查询啊、插入以及重点是和SQL 2005的一些区别和Oracle中特有的命令。

希望大家继续捧场。

Oracle体系结构分类

我们应该知道的是在Oracle数据库的体系结构包括以下四种结构:

那下面我比较粗略的说以下结构包括什么!~

一。物理存储结构

顾名思义,Oracle数据库在物理是由存储在磁盘中的操作系统文件所组成的,能被我们看见的文件。Oracle 数据库在物理上主要有3种类型的文件组成,分别是数据文件(*.dbf)、控制文件(*.ctl)、日志文件(*.log)

数据文件(Data File):指存储数据库数据的文件,也就是我们平时新建的数据库。比如表中的记录、索引都存储在数据文件中。我们需要注意的时候,用户在读取数据的时候,如果用户读取的数据不在缓冲区(就像我们操作系统也有一个缓存,在计算机中 为了提高系统的性能,把一些常用的数据放在内存中),那么就从数据库中读取出来,放到内存中去。存储数据的时候,也是先把数据保存到缓冲区中,然后再后台进程DBWn讲数据写入到数据文件中。

我们可以通过dba_data_files数据字典(数据字典就是存储一些系统数据)数据文件的状态。有一些字段解释一下:

Blocks:数据文件所占用的数据块数

autoextensible:数据文件是否允许扩展

tablespace_name:数据文件对应的表空间名

控制文件(Control File):是一个二进制文件,用来描述数据库的物理结构。主要存放着数据库中的数据文件和日志文件信息。如果在使用Oracle过程中,损坏了控制文件,那么数据库将无法正常工作。

Oracle一般会默认创建3个包含相同信息的控制文件,目的是为了当其中一个受损时,可以调用其他控制文件来继续工作。

日志文件(Log file):是记录数据库中所修改信息的文件,保证数据库安全,也可以实现数据的备份与恢复。

如果status位current表名系统正在使用该字段对应的日志文件。如果是inactive,则没有使用。

当一个日志文件组的空间被占用完了之后,Oracle系统会自动转换到另一个日志文件组。不过,也可以使用alter system swithch logfile 进行手动切换

其他文件

当然,除了上面的之外 还有其他的一些文件。

参数文件:记录Oracle数据库的基本信息,比如数据库名和控制文件所在的路径等。

备份文件:可以借助备份文件对受损文件进行备份

归档重做日志文件:对写满的日志文件进行复制并保存

警告、跟踪日志文件:如果一个进程发现了一个内部错误时,可以将关于错误的信息存储到它的跟踪文件中。

二。逻辑存储结构

Oracle数据库的表空间从逻辑存储结构上来说,包括表空间、段、区和数据快。他们之间的关系是多个数据库组成一个区,多个区组成一个段,多个段组成一个表空间,多个表空间组成数据库,所以图如下:

①表空间:Oralce中,最大的逻辑存储结构是表空间(tablespace)。表空间和物理上的数据文件相对应。具体 下面详解。

②段(Segment)是一组盘区,这组盘区组成了被Oracle视为一个单位的数据库对象,比如表或索引。因此,段是数据库终端用户将处理的最小单位。

分为5中段:

数据段:存储表中数据。

索引段:存储表中所有索引。

临时段:存储临时数据。

LOB段:用于存储表中的大型数据对象。

回退段:用于存储用户数据被修改之前的值。

③区:Oracle中,区是磁盘空间分配的最小单位。

段的增大是通过增加区的个数来实现的,在个数并非是没有限制的。创建段的时候,可以使用Min_extents和Max_extents来定义区的个数。

④块(Block)是用来管理存储空间的最基本单位,也是最小的逻辑存储单位。

在创建Oracle数据库时,初始化参数DB_BLOCK_SIZE用来指定一个数据库的大小。数据库创建之后,无法修改数据库的大小。比如:

数据块的结构如下:

块头部:数据库中的一搬性信息,比如数据库的物理地址。

表目录:存储表的信息。

行目录:存储数据库中有效的行信息。

空闲空间:还没有使用的存储空间。

行空间:存储表或索引的数据。

三。内存结构

当用户发出一条SQL命令时,服务器进程会对这条SQL语句进行语法分析并执行它,然后将用户所需要的数据从磁盘的数据文件中读取出来,存放在系统全局区中的数据缓冲区中。如果用户进程对缓冲区中的数据进行了修改,则修改后的数据将由数据库写入进程DBWn希尔磁盘数据文件中。

按照系统对内存的使用方法不同,Oracle数据库的内存分为以下几部分:

①系统全局区(SGA)

是Oracle位系统分配的一组可共享的一组共享的内存结构,可以保护一个数据实例的数据或控制信息。系统全局区按照作用的不同可以分为:

  • 数据缓冲区

用于存储从磁盘数据文件中读取的数据,供所有用户共享。

  • 日志缓冲区

    用于存储数据库的修改操作信息。

  • 共享池

共享池用来保存最近执行的SQL语句、PL/SQL程序的数据字典信息,它是对SQL语句和PL/SQL程序进行语法分析、编译和执行的内存区域。

共享池的大小由shared_pool_size 确定。

②程序全局区(Program Global Area,PGA)

是包含单个用户或服务器数据和控制信息的内存区域,它在用户进程连接到Oracle数据库并创建一个会话是,由Oracle自动分配。

③排序区(Sort Area)

是Oracle系统为排序操作所产生的临时数据提供的内存空间。

④大池(Large Pool)

提供一个大的缓冲区供数据库的备份与恢复操作使用。

四。实例进程结构

① DBWn(DataBase Write,数据库写入)进程是赋值管理数据缓冲区的后台进程,用于将缓冲区中的数据写入到数据文件。

②LGWR(Log Write,日志写入)进程是负责管理日志缓冲区的一个后天进程,用于将日志缓冲区中的日志数据写入磁盘的日志文件。

③CKPT(Check Point)进程保存所有修改过的数据缓冲区中的数据都被写入磁盘数据文件中。

默认情况是1800秒。

④SMON(System Monitor)进程:用于在实例启动时执行实例恢复,并负责清理不在使用的临时段。

⑤PMON(Process Monitor)进程:用于在用户进程出现故障时执行恢复操作。

⑥ARCn(Archive Process,归档):将写满日志文件复制到归档日志文件中。

⑦RECO (Recovery)进程:用在分布式数据库系统中,用于自动解决在分布式数据库中出现的事物故障。

⑧LCKn(Lock)进程:存在于并行服务器系统中,用于实现多个实例间的封锁。

⑨Dnnn(Dispatchers)进程:存在于多线程服务器体系结构中,用于将用户进程连接到服务器进程中。

五。数据字典

在我的这篇和前篇文章用到了很多数据字典(是oracle数据库用来存贮数据库结构信息的地方)。这个很有用,网上资料也很多!~~

Oracle的数据字典-----Brad Miller

转载自:http://www.cnblogs.com/damonlan/archive/2012/07/27/2604132.html

Oracle的体系结构的更多相关文章

  1. Oracle物理体系结构

    一.ORACLE 物理体系结构 原理结构图 各部分解释: PGA: 私有内存区,仅供当前发起用户使用. 三个作用 用户登录后的session信息会保存在PGA. 执行排序,如果内存不够,oracle会 ...

  2. Oracle数据库体系结构、启动过程、关闭过程

    一.Oracle数据库体系结构体系结构由下面组件组成:1.Oracle服务器(Server):由数据库实例和数据库文件组成,另外在用户建立与服务器的连接时启动服务器进程并分配PGA(程序全局区) (1 ...

  3. Oracle基础(九) Oracle的体系结构

    一.Oracle体系结构概述: Oracle的体系结构是指数据库的组成.工作过程与原理,以及数据在数据库中的组织与管理机制.要了解Oracle数据库的体系结构,必须理解Oracle系统的重要概念和主要 ...

  4. Oracle学习笔记--第2章 oracle 数据库体系结构

    第2章 oracle 数据库体系结构 目录: ————————————— 2.1物理存储结构 2.1.1数据文件 2.2.2控制文件 2.1.3重做日志文件 2.1.4其他文件 2.2逻辑存储结构 2 ...

  5. Oracle学习笔记之二,Oracle 11g体系结构

    Oracle 11g体系结构概述 实例(Instance),是指一组Oracle后台进程以及在服务器中分配的共享内存区域: 数据库(Database),是由基于磁盘的数据文件.控制文件.日志文件.参数 ...

  6. Oracle数据库体系结构(2)数据库实例

    Oracle实例的概念: 实例(Instance):就是数据库管理系统,处于用户与物理数据库之间的一个中间层软件,由一系列内存结构和后台进程组成. 用户操作数据库的过程实质上与数据库实例建立连接,然后 ...

  7. oracle数据库体系结构

    一.oracle数据库体系结构 基本组成: Oracle server:一般情况下是一个instance和一个database组成 一般:1个instance只能对应一个数据库. 特殊:1个数据库可以 ...

  8. Oracle数据库------体系结构

    ORACLE体系结构包括:实例(Instance),数据库文件,用户进程(User process),服务器进程以及其他文件. 1.ORACLE实例(instance)     1).要访问数据库必须 ...

  9. oracle 11g体系结构

    1.数据库体系结构 1.1 数据库和实例的关系database server  = instance 实例 + database 数据库instance 实例  =内存 memory + 进程  pr ...

随机推荐

  1. Android内存控制小技巧-使用矢量图来节省你的内存并简化你的开发。

    先上一个 位图和矢量图的 说明.http://zhidao.baidu.com/link?url=xwvs5CBzWeh15O3Ee4bICwCqg4PCQWwg5oZ0a6CVydbVZzufqrI ...

  2. Android开发如何在4.0及以上系统中自定义TitleBar

    本文将通过一个实例讲解怎么实现在4.0及以上系统版本中实现自定义TitleBar,这只是我自己找到的一种方法; xml布局文件 activity_main.xml <RelativeLayout ...

  3. web开发利器 fiddler

    http://mccxj.github.io/blog/20130531_introduce-to-fiddler.html

  4. object does not contain a definition for get_range

      原因[1] 在VS2012中调用COM Interop DLL操作Excel通过get_Range去获取Range时,会发生Object does not contain a definition ...

  5. lua的三目运算符

    会lua的都知道三目运算符在lua中的写法是 a and b or c 但这里有个问题,就是当b是nil的时候会返回c的值 今天无意中看到一个大神的写法 (a and {b} or {c})[1] 不 ...

  6. WCF服务通过防火墙怎么设置

    设置防火墙 1.首先点击控制面板->系统与安全->Window防火墙->点击允许程序通过Windows防火墙 2.查找Windows Communication Foundation ...

  7. win 7 下Maven环境的搭建

    Apache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具. Maven是什么? 比较正式的定义:Maven是一个项目管理工具,它包含了: 一个项目对象模型 (Project O ...

  8. ASP.NET 如何做出简单的验证码

    如果说要做验证码,那不得不提的就是GDI+绘图了.我们都知道验证码是以图片形式展示的,而且是动态生成的,这样就需要我们去画出它. 科普一下,什么是GDI+? GDI+是图形设备接口(GDI)的高级版本 ...

  9. JS方式调用本地的可执行文件

    看到一个方法,有些用,先存下来,有用的时候再用. 前几天,在IE,FIREFOX中实现了用JS方式调用本地的可执行文件.地址:www.yihaomen.com/article/js/211.htm , ...

  10. [转]Java Web乱码过滤器

    本文转自http://blog.csdn.net/l271640625/article/details/6388690 大家都知道,在jsp里乱码是最让人讨厌的东西,有些乱码出来的莫名其妙,给开发带来 ...