前言

这个章节主要想说的是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. 【原创】牛顿法和拟牛顿法 -- BFGS, L-BFGS, OWL-QN

    数据.特征和数值优化算法是机器学习的核心,而牛顿法及其改良(拟牛顿法)是机器最常用的一类数字优化算法,今天就从牛顿法开始,介绍几个拟牛顿法算法.本博文只介绍算法的思想,具体的数学推导过程不做介绍. 1 ...

  2. 多线程&多进程解析:Python、os、sys、Queue、multiprocessing、threading

    当涉及到操作系统的时候,免不了要使用os模块,有时还要用到sys模块. 设计到并行程序,一般开单独的进程,而不是线程,原因是python解释器的全局解释器锁GIL(global interpreter ...

  3. 【转】使用Xcode中的iOS SDK给iphone开发出第一个App程序

    之前已经折腾过用Xcode开发OS X的程序了,现在继续折腾,用iOS SDK开发移动设备(iphone/ipad/ipod touch)的程序. 1.从iOS Developer Library中找 ...

  4. 百度地图API开发指南

    简介什么是百度地图API? 百度地图API是一套由JavaScript语言编写的应用程序接口,它能够帮助您在网站中构建功能丰富.交互性强的地图应用.百度地图API包含了构建地图基本功能的各种接口,提供 ...

  5. Codeforces Round #218 (Div. 2) C题

    C. Hamburgers time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  6. C# Datatable的Select方法

    lubiaopan 原文 Datatable的Select()方法简介 DataTable是我们在进行开发时经常用到的一个类,并且经常需要对DataTable中的数据进行筛选等操作,下面就介绍一下Da ...

  7. 6、Android中的NFC技术

    Android对NFC技术的支持 Android2.3.1(API Level = 9)开始支持NFC技术,但Android2.x和Android3.x对NFC的支持非常有限.而从Android4.0 ...

  8. 分享一些Comet开发经验

    前言 本comet技术主要用于数据库持久层的 穿越防火墙 远程访问.只要有一台中继网站,任意地点的数据库都能被访问. Comet概念介绍 WebIM.网页的客服.meebo等大家听说过了.最近还有个兄 ...

  9. 用physdiskwrite在VMware虚拟机上安装m0n0wall【转】

    在一台PC机上安装m0n0wall,相信大家都有经验.一般采用两种方法:1.在一台Windows XP或Windows 2000的PC上,下载physdiskwrite软件和m0n0wall映像文件( ...

  10. .NET下用C#实现邮箱激活功能

    最近要用到安全邮箱激活的功能,故写篇博客记录下. 思路:在表中增加一个字段State来记录邮箱是否激活(0激活,1未激活.) 1.发送邮件.     1-1,给邮箱发送邮件.内容:激活地址+GUID. ...