Oracle的体系结构
前言
这个章节主要想说的是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数据库用来存贮数据库结构信息的地方)。这个很有用,网上资料也很多!~~
转载自:http://www.cnblogs.com/damonlan/archive/2012/07/27/2604132.html
Oracle的体系结构的更多相关文章
- Oracle物理体系结构
一.ORACLE 物理体系结构 原理结构图 各部分解释: PGA: 私有内存区,仅供当前发起用户使用. 三个作用 用户登录后的session信息会保存在PGA. 执行排序,如果内存不够,oracle会 ...
- Oracle数据库体系结构、启动过程、关闭过程
一.Oracle数据库体系结构体系结构由下面组件组成:1.Oracle服务器(Server):由数据库实例和数据库文件组成,另外在用户建立与服务器的连接时启动服务器进程并分配PGA(程序全局区) (1 ...
- Oracle基础(九) Oracle的体系结构
一.Oracle体系结构概述: Oracle的体系结构是指数据库的组成.工作过程与原理,以及数据在数据库中的组织与管理机制.要了解Oracle数据库的体系结构,必须理解Oracle系统的重要概念和主要 ...
- Oracle学习笔记--第2章 oracle 数据库体系结构
第2章 oracle 数据库体系结构 目录: ————————————— 2.1物理存储结构 2.1.1数据文件 2.2.2控制文件 2.1.3重做日志文件 2.1.4其他文件 2.2逻辑存储结构 2 ...
- Oracle学习笔记之二,Oracle 11g体系结构
Oracle 11g体系结构概述 实例(Instance),是指一组Oracle后台进程以及在服务器中分配的共享内存区域: 数据库(Database),是由基于磁盘的数据文件.控制文件.日志文件.参数 ...
- Oracle数据库体系结构(2)数据库实例
Oracle实例的概念: 实例(Instance):就是数据库管理系统,处于用户与物理数据库之间的一个中间层软件,由一系列内存结构和后台进程组成. 用户操作数据库的过程实质上与数据库实例建立连接,然后 ...
- oracle数据库体系结构
一.oracle数据库体系结构 基本组成: Oracle server:一般情况下是一个instance和一个database组成 一般:1个instance只能对应一个数据库. 特殊:1个数据库可以 ...
- Oracle数据库------体系结构
ORACLE体系结构包括:实例(Instance),数据库文件,用户进程(User process),服务器进程以及其他文件. 1.ORACLE实例(instance) 1).要访问数据库必须 ...
- oracle 11g体系结构
1.数据库体系结构 1.1 数据库和实例的关系database server = instance 实例 + database 数据库instance 实例 =内存 memory + 进程 pr ...
随机推荐
- 【解题报告】zju-1145 Dreisam Equations
原题地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=145 题目大意:在给定的等式右边数字之间加上加.减.乘运算符,使等式成 ...
- Android手机部分名词浅谈
1.什么是Radio? Radio是无线通信模块的驱动程序,ROM是系统程序,radio负责网络通信,ROM和Radio可以分开刷,互不影响.如果您的手机刷新了ROM后有通讯方面的问题可以刷新radi ...
- MySQL server has gone away 的解决方法
原文引用至:http://www.jb51.net/article/23781.htm,感谢! 可能原因:1.发送的SQL语句太长,以致超过了max_allowed_packet的大小,如果是这种原因 ...
- Android下实现tab页个人比较推崇的方法
使用fragment实现tab页的效果: 三个页面是单独的三个Fragment 主Activity的实现: package com.hsx.tab; import android.os.Bundle; ...
- 【转】Eclipse常用快捷键
原文网址:http://denver.blog.51cto.com/272871/52219 编辑相关快捷键 1.[Alt+/] 为用户提供内容的辅助. 2.[Ctrl+O] 显示类中方法和属性的大纲 ...
- Android 着色器 Tint 研究
Tint 这个东西 主要用来减少apk体积的,比如说我现在有一个textview,他的背景图 有两种,一种是当获得焦点时显示的a图,另一种是 失去焦点时显示的b图. 相信大家开发的时候 这种需求做过很 ...
- MySQL基础之第17章 MySQL日志
17.1.日志简介 二进制日志错误日志通用查询日志慢查询日志 17.2.二进制日志 二进制日志也叫作变更日志(update log),主要用于记录数据库的变化情况.通过二进制日志可以查询MySQL数据 ...
- 搭建Eclipse、Resin Web开发环境
搭建Eclipse.Resin Web开发环境 一.当然是安装java开发环境 参看: Java环境的搭建 http://www.cnblogs.com/ghj1976/archive/2010/04 ...
- Web表格
HTML元素学习 1:表格:表格的作用是显示表格数据,小范围内布局 表格的框架 <!doctype html> <html lang="en"> <h ...
- @Html.Raw()
asp.net mvc中把html字符串以html效果输出来, @string变更输出的是HTML代码, 如果想以HTML标签效果输出来可以用函数@Html.Raw(str) 输出来的就是网效果了, ...