Oracle的体系结构

时间:2022-12-20 19:07:53

前言

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

希望大家继续捧场。

Oracle体系结构分类

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

Oracle的体系结构

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

一。物理存储结构

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

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

Oracle的体系结构

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

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

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

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

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

Oracle的体系结构

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

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

Oracle的体系结构

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

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

其他文件

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

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

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

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

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

二。逻辑存储结构

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

Oracle的体系结构

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

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

分为5中段:

数据段:存储表中数据。

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

临时段:存储临时数据。

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

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

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

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

Oracle的体系结构

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

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

Oracle的体系结构

数据块的结构如下:

Oracle的体系结构

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

表目录:存储表的信息。

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

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

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

三。内存结构

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

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

①系统全局区(SGA)

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

  • 数据缓冲区

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

  • 日志缓冲区

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

    Oracle的体系结构

  • 共享池

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

Oracle的体系结构

共享池的大小由shared_pool_size 确定。

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

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

③排序区(Sort Area)

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

Oracle的体系结构

④大池(Large Pool)

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

四。实例进程结构

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

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

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

Oracle的体系结构

默认情况是1800秒。

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

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

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

Oracle的体系结构

⑦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. NSCharacter​Set在字符串操作中得使用

    NSCharacterSet以及它的可变版本NSMutableCharacterSet,用面向对象的方式表示一组Unicode字符,它经常与NSString及NSScanner组合起来使用,在不同的字 ...

  2. 【Toolkit】关闭Closeable的简单工具类

    Java中有很多连接类的类实现java.io.Closeable,而关闭资源是一项重复的劳动,写一个简单的工具类避免重复劳动. > JDK7.0中,哪些类实现java.io.Closeable?

  3. hdu 4870 Rating

    题目链接:hdu 4870 这题应该算是概率 dp 吧,刚开始看了好几个博客都一头雾水,总有些细节理不清楚,后来看了 hdu 4870 Rating (概率dp) 这篇博客终于有如醍醐灌顶,就好像是第 ...

  4. mysql问题总结,远程登录

    http://blog.sina.com.cn/s/blog_4550f3ca0101axzd.html 更改mysql数据库的数据库名 http://tech.sina.com.cn/s/s/200 ...

  5. MySQL中UTF8编码的数据在cmd下乱码

    MySQL中UTF8编码的数据在cmd下乱,在数据库ide中看到的却是中文. 其实,原因是cmd用gbk的格式来显示数据,那么我们只需要将utf-8存储的数据用gbk的格式输出到cmd即可. 解决方法 ...

  6. eShopOnContainers 知多少[10]:部署到 K8S | AKS

    1. 引言 断断续续,感觉这个系列又要半途而废了.趁着假期,赶紧再更一篇,介绍下如何将eShopOnContainers部署到K8S上,进而实现大家常说的微服务上云. 2. 先了解下 Helm 读过我 ...

  7. System.Diagnostics.Process 测试案例

    1.System.Diagnostics.Process 执行exe文件 创建项目,编译成功后,然后把要运行的exe文件拷贝到该项目的运行工作目录下即可,代码如下: using System; usi ...

  8. java 各种循环遍历

    遍历方式选择: 实现了 RandomAccess 接口的 list,优先选择普通 for 循环 ,其次 foreach: 未实现 RandomAccess 接口的 list, 优先选择 iterato ...

  9. OnContextMenu实现禁止鼠标右键

    OnContextMenu事件 定义和使用:oncontextmenu 事件在元素中用户右击鼠标时触发并打开上下文菜单.注意:所有浏览器都支持 oncontextmenu 事件, contextmen ...

  10. Python 基础之class魔术方法

    类的常用魔术方法:无需人为调用,基本是在特定的时刻自动触发,方法名被前后两个下划线包裹 魔术方法,总结表: __init__:构造函数.初始化的时候调用. __new__:对象实例化方法,其实这才是类 ...