当前位置:我的异常网» 数据库 » Oracle体系结构详解(物理构造,内存结构和逻辑结构

Oracle体系结构详解(物理构造,内存结构和逻辑结构)

www.myexceptions.net  网友分享于:2013-07-23  浏览:14次

Oracle体系结构详解(物理结构,内存结构和逻辑结构)

一、oracle实例:

oracle实例是由一组后台进程和内存结构组成,可以看成是用户与数据库之间的桥梁;

oracle数据库是一系列物理数据文件的集合(如控制文件,数据文件,参数文件,日志文件,临时文件等)。

它们的关系:实例可以在没有数据文件的情况下单独启动,(startup nomount)通常没有意义;一个实例在生成期内只能装载(alter database mount)和打开(alter database open)数据库;一个实例只能装载和打开一个数据库;一个数据库可以同时被多个实例装载和打开(即RAC)

二、物理结构:

物理结构指一系列Oracle文件系统,主要包括数据文件,控制文件,日志文件,参数文件等;首先是通过参数文件找控制文件,再通过控制文件找数据文件和日志文件。可以在一下视图中查询 v$controlfile控制文件;v$datafile数据文件;v$logfile日志文件;

参数文件(pfile和spfile):init.ora或initSID.ora,通常位于:$ORACLE_BASE/admin//pfile;在oracle数据库启动的时候加载(Nomount时加载),初始化文件记载了数据启动参数,内存,控制文件,进程数等。

控制文件:是个二进制文件,主要记录了数据库名,数据库创建的时间戳,数据文件和日志文件的名字和位置,数据库恢复所需要的同步信息;一个数据库只有一个控制文件,但有时候为了防止控制文件损坏导致数据库无法启动,可以对控制文件做镜像。   所有修改数据库结构的命令都会引起控制文件的修改,并在跟踪文件中做记录。

数据文件:主要是存储用户和应用程序的所有数据,一个数据库至少包含多个或一个数据文件,一个表空间由一个或多个数据文件组成。用户请求的信息在内存中不存在则从数据文件中读取出来存储在内存中,如果用户修改了某些信息并不是立马更新到数据库中,先存储在内存中,而是

由后台读写进程决定何时更新到数据文件中,这样是位了减少磁盘IO。

日志文件:(也叫重做日志文件redo log),是oracle记录数据库中数据的变化,每一条数据进行了修改,重做日志都会有记录;日志文件是oracle物理结构中最复杂的一类文件,也是数据库系统安全的重要保证,如果某些异常操作可以通过日志来恢复。日志文件组和日志成员:一个oracle数据库至少包含两个日志文件组,每个日志文件组至少包含一个和多个日志成员,成员之间是镜像关系。如果要将日志文件永久的保存下来,就形成了归档日志了(归档日志archive log是当数据库运行在归档模式下时,一个redo log file(group)写满后,由ARCn进程将重做日志的内容备份到归档日志文件下,然后这个redo log file(group)才能被下一次使用),归档日志必须在归档模式下,(重做日志是循环写的)。

控制文件,数据文件,日志文件的位置:E:\app\hongzhong\oradata\orcl;

三、内存结构:

oracle的内存结构有:系统全局区(SGA),程序全局区(PGA);

1、系统全局区下的所有数据被当前实例下所有的后台所共享,当数据库被启动时,系统全局区的内存被自动分配;

高速缓冲区:是oracle读取数据的时候先从数据文件中把数据读取到该区域,对数据进行更新操作先保存在此区域,然后再由读写进程写入数据文件;主要有保持缓冲池,默认缓冲池和再生缓冲池;保持缓冲池主要是保存类似于代码表常用的不便的数据,再生缓冲池主要保存类似于大表的数据。

共享池:

日志缓冲区:主要是用于缓冲事务日志,存放需要写入文件的日志,是一种先进先出的方式缓存的。

大共享区:(可选的)主要是一些大的进程和数据备份操作的时候用到的。

固定SGA: 是由oracle自动设置的大小。

查看当前系统的SGA大小:show parameter sga_max_size; 要修改:alter system set sga_max_size=1200m scope=spfile;

2、程序全局区(PGA)

是每个用户进程连接Oracle用户保留的内存,进程创建时分配,进程结束时释放。PGA包括了以下几个结构:

排序区,游标状态区,会话信息区,堆栈区

四、逻辑结构:

oracle逻辑结构主要是:数据块(block),数据扩展(extent),段(segment)和表空间(tablespace)之间的关系,数据块是oracle存储的最小单位,表空间是数据库存储的基本逻辑单位;连续的数据块形成一个数据扩展,多个数据扩展形成一个段,数据段和表空间是多对一的关系;一个表空间可以对应多个数据文件,一个数据文件只能对应一个表空间,但是数据文件和段之间不存在对应关系。

【我们分析一个Update 语句的完成 】

①. 用户提交一个Update 语句

②. Server Process 检查内存缓冲.

如果没有该数据块的缓冲,则从磁盘读入

i. 如果没有内存的有效空间,DBWR被启动将未写入磁盘的脏缓冲写入磁盘

ii. 如果有有效空间,则读入

③. 在缓冲内更新数据

i. 申请一个回滚段入口,将旧数据写如回滚段

ii. 加锁并更新数据

iii. 并在同时将修改记录在Redo log buffer中

④. 用户提交一个Commit 语句

i. SCN增加

ii. 将Redo log buffer 写入Redo log file

iii. 返回用户Commit 完成

段:

段是对象在数据库中占用的空间,虽然段和数据库对象是一一对应的,但段是从数据库存储的角度来看的。一个段只能属于一个表空间,当然一个表空间可以有多个段。 表空间和数据文件是物理存储上的一对多的关系,表空间和段是逻辑存储上的一对多的关系,段不直接和数据文件发生关系。一个段可以属于多个数据文件,关于段可以指定扩展到哪个数据文件上面。 数据库的段可以分为四类:数据段、索引段、回退段、临时段。

1.数据段

数据段是用于存储数据的段,他存储在数据表空间中。每一个表都有一个数据段(聚簇除外),表的数据存储在数据段中,默认情况下段名与表名相同。以下语句查询段的信息:

SQL>SELECT SEGMENTNAME,TABLESPACE,NAME,BYTES,BLOCKS FROM USER_EXTENTS;

2.索引段

索引段用于存储索引,以下语句查询索引信息:

SQL>SELECT * FROM ALL_INDEXS

SQL>SELECT * FROM USER_INDEXS

3.回退段

回退段用于存储用户数据修改之前的值,因而可以在特定条件下回退数据。回退段与事务是一对多的关系,一个事务只能使用一个回退段,而一个回退段可存放一个或多个事务的回退数据。

4.临时段

临时段用于order by语句的排序以及一些汇总。

数据块:oracle存储的最小的单位,一个块的大小默认为8KB,

文章评论

oracle有哪两种内存结构,Oracle体系结构详解(物理构造,内存结构和逻辑结构)...相关推荐

  1. 两种CSS3圆环进度条详解

    晚上睡觉之前,我抽了1个多小时,研究了一下圆环进度条,结合从网上查阅的资料,我终于掌握了两种圆环的生成方法. 这次的效果就是单纯的CSS3效果,也没有写具体的JS,等以后有时间在好好整理一下吧~. 第 ...

  2. Spring依赖注入的两种方式(根据实例详解)

    1,Set注入    2,构造注入 Set方法注入: 原理:通过类的setter方法完成依赖关系的设置 name属性的取值依setter方法名而定,要求这个类里面这个对应的属性必须有setter方法. ...

  3. Git恢复之前版本的两种方法reset、revert详解

    一.问题描述 在利用github实现多人合作程序开发的过程中,我们有时会出现错误提交的情况,此时我们希望能撤销提交操作,让程序回到提交前的样子,本文总结了两种解决方法:回退(reset).反做(rev ...

  4. OpenLayers 6 代码绘制/draw交互组件绘制两种方式绘制椭圆过程详解

    引言 OpenLayers可以通过代码绘制多种几何形状,也可以通过draw类型的交互组件绘制几何形状,官方实例提供了类如圆.折线.矩形.星形等方法.除此之外,椭圆这种图形其实也是非常常见的几何图形,但 ...

  5. Java SE 第四十八,九,五十讲 Map深入详解及遍历Map的两种实现手段 Map.Entry详解与作业要求,作业讲解...

    1.Map接口:Map的实现类:HashMap类 Map没有add()方法,但是有put()方法. put()将指定的值关联到map中的特定key. 2.HashMap类: 3.vice versa: ...

  6. mstsc 加密oracle修正,mstsc远程报:这可能是由于CredSSP 加密Oracle修正的两种完美解决方法...

    win10很完美,用的也很舒服!当然人无完人,也总有不尽如人意的时候.比如说我们经常用的远程mstsc,就出现了一个坑,既然出现坑了,我们就得把坑解决掉吧!下面就记录一下这个坑的解决方法. 查看微软C ...

  7. 有效创建Oracle dblink的两种方式

    有效创建Oracle dblink的两种方式 两台不同的数据库服务器,从一台数据库服务器的一个用户读取另一台数据库服务器下的某个用户的数据,这个时候可以使用dblink. 其实dblink和数据库中的 ...

  8. Oracle启用scott两种方法

    Oracle启用scott两种方法 第一种情况下,以system账户+自己安装时设置的密码,登录SQL Plus,然后使用命令"alter user scott account unlock ...

  9. Oracle数据库的两种授权收费方式介绍!

    首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...

最新文章

  1. 【Python】SyntaxError: unexpected EOF while parsing
  2. npoi css,NPOI颜色对照表
  3. Vivado联合ModelSim仿真设置(附图步骤)
  4. boost::gil::get_num_bits用法的测试程序
  5. [深度学习基础] 深度学习基础及数学原理
  6. MySQL 5.6.5之前版本不支持多条DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT TIMESTAMP
  7. 一个人动情之后的表现......
  8. 数据库笔记13:创建与使用游标
  9. python语言实现rsa公钥密码算法_python 实现 rsa 算法加解密密码
  10. “System.AccessViolationException”类型的未经处理的异常在 System.Data.dll 中发生
  11. 机电传动控制大作业第一阶段
  12. python入侵个人电脑的步骤图解台式_入侵渗透专用的python小脚本脚本安全 -电脑资料...
  13. 基于Keil 5编写汇编程序
  14. IT之家精华:苹果iOS系统发布/固件下载/升级更新大全表~
  15. Android好用的桌面小工具,Android桌面小工具Widget功能实现
  16. 毁三观:从 onSavedInstanceState 中取值竟为空?!
  17. 摘几个陈年高校BBS的冷笑话
  18. 为什么ppt图形卡配置不正确_PPT:PowerPoint 检测到您的图形卡配置不正确,可能无法获得最佳幻灯片放映体验...
  19. 某B2B自动发帖 v1.0
  20. 上班族的英语学习计划

热门文章

  1. eclipse spring mysql,eclipse环境下的springboot框架+mybatis访问MySQL报错空指针
  2. Java 8 新特性:Comparator.naturalOrder | 自然排序
  3. Java类加载过程梳理,一篇搞定
  4. 死磕18个Java8日期处理,工作必用!收藏起来~
  5. 基础强化:深入理解JVM中的方法调用
  6. 万字长文+思维导图帮你梳理 Java IO 流,还学不会你来打我(值得收藏)
  7. 前端js嵌套遍历优化_2020web前端最新面试面经:阿里、字节、小红书
  8. ES6中对象新增方法
  9. Eclipse的vim插件viPlugin的安装
  10. Laravel Migrate