`
Tiwen
  • 浏览: 84434 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Oracle的结构体系的抽象

 
阅读更多

老王一家的幸福生活

Oracle的结构体系的抽象

一个狂热摄影爱好者—老王的幸福家庭

每一本介绍ORACLE的书籍第一章节一般都会介绍ORACLE的结构体系,当打开该章节时候,读者会一下子陷入一个充满了大量晦涩难懂的、陌生的概念之深渊。读下去的兴趣一下子没有了,产生了ORACLE是一个深奥难懂的一个数据库的想法。但是如果不知道oracle的结构体系,即使使用oracle多年了,仍然处于低档次应用水平。为了帮助大家理解结构体系的内容,我写了一个《一个狂热摄影爱好者—老王的幸福家庭》的介绍,通过对比与联想,希望有助于您对ORACLE数据库的结构体系有所理解。

家庭成员与角色(注意这家人的别名,它们会出现在附件文档中)

成员

关系

别名

角色功能

老王

一家

之主

SID

用特殊的相机(不用换胶卷的一次产生一张照片和一张底片的)照相,并将照片放在DB_BUFFER_CACHE,将底片交给大儿子, 并作标记SCN;

王妻

妻子

DBWR

王妻是一个传统的中国女性,她的一项工作是不断地看看DB_BUFFER_CACHE上是否有新的照片,如有,她就放在照片空间(照片空间有照片剪贴簿、挂在墙壁上,照相簿几部分组成)上。墙上的照片框架一样大小,有时候一个框架放一张照片,有时候,一个框架放多张照片,有时候一张照片占用多个框架(照片链),每个框架上用SCN(system change number)作记录,每一张照片有唯一的ID(rowid),这个ID包含墙壁与框架的信息,

有时候,老王在看墙上照片,觉得不满意,拿下来进行修改,他就将包含这张照片的框架进行拷贝(也叫快照),并将拷贝放在一个叫回退的储藏室, 如果对修改满意并得到确认,王妻则将修改后的照片放回墙壁的原处,并把新的SCN放在框架上。如果不满意,则从回退的储藏室取回框架放在墙上,墙壁上的照片回到原来的样子。

王伯当

大儿子

LDWR

老王照一张照片的同时,产生了一张底片,他将底片放在家里的厨房里的一个架子上,在架子上,老王贴了一个标签,标签上标记底片,这个标签叫“LOG-BUFFER”,当大儿子王伯当发现架子上有底片,他立即将底片放在一个笔记本里,这个笔记本叫做“重做笔记本”,使用这个名字,是因为可以用里面的底片恢复一张照片。大儿子王伯当将底片按照顺序将底片放入到“重做笔记本”,一旦当前的笔记本满了,他就换另一个笔记本,并在“告警日记本上”作一次记录。

注意:不是所有照片都有底片的保存,老王可以指定那些照片不必做日志。

王仲和

二儿子

ARCH

尽管已经这样做了,老王还是不放心,他担心如果来了一场大火,或者其他什么意外,他的照片底片还是有可能被损坏,他赋予他的二儿子仲和一项任务,一旦大儿子更换“重做笔记本”时候,他就拿出那些“重做笔记本”中的底片,将他放在房子外面的一个安全的地方—后院的地下室,作了一份“重做笔记本”的拷贝,这个拷贝被称为“归档的重做笔记本”,同时他更新“控制笔记本”,并在并在“告警日记本上”作一次记录。

王小三

小儿子

CKPT

小儿子王小三是一个动作迅速的小家伙,他的任务将每一个墙壁,照相簿,剪贴册的照片与控制笔记本中的数字协调起来,当他得到指令,他就飞奔起来,在每一个墙面上写下数字,并将同样的数字记录在“控制笔记本”中,使得每一件事情协调起来。

王管家

管家

SMON

有时候,全家早晨起来,房子显得凌乱,这是因为昨晚大家休息前,没有来得及清理各自的事情,SMON负责在开门前处理一下没有完成的照片与回退(从回退储藏室中取出照片框架,把旧的版本放回原来的墙上)

王管家妻

女佣

PMON

老王家干完一天的工作,准备休息,他要求全家休息前,把东西放好,关掉或者停下手里的工作。让房间里参观的客人离开,一般有4种情况:

1:老王很有耐心,等待所有客人自行离开,再休息;

2:老王没有耐心,他亲自监督每一个客人,但客人看完照片后,他给客人指出出门的方向;

3:老王非常没有耐心,他揪着客人的衣领,送出门,不让他们干完自己的事情;

4:老王,拉下电闸,说,时间到。屋子里一片狼藉,第二天早上,由王管家来收拾。

当一个客人走后,老王叫来女佣,她监控每一个客人的活动,在这些客人走后,这位女佣不厌其烦地将客人留下的垃圾扫尽垃圾桶里,并妥善处理。

如果老王没有拉闸,每个人开着灯,进行清理:王妻会从DB_BUFFER_CACHE架子上取走所有照片,放在合适的墙壁上,大儿子王伯当确定LOG_BUFFER的架子上是空的,所有的底片都在“重做笔记本”中,小儿子王小三在整个房间里兜了一圈,用最高与最低的目录编号SCN来更新墙壁与笔记本;老二王仲和把最后的一张底片放在“重做笔记本”,并放到后院的地下室,然后更新控制与告警笔记本。每一件事情做完后,老王关灯,全家休息。


下面是一些角色活动中涉及到的一些名词,在这里单独说明:

控制笔记本:老王家的主要成员,要想将照片与底片处理的井井有条,需要制作很详细的笔记(如我们的工作周报),每个人都将自己的事情写入这个笔记本,这个笔记本叫做“控制笔记本”。“控制笔记本”记录了每一面墙,剪贴簿等家庭财产的清单条目,当老王觉得要增加一个房间,来放置更多的照片,他必须在“控制笔记本”增加相应的记录。当老大更换“重做笔记本”时候,他需要在“控制笔记本”增加相应的记录。当老二作了一份“重做笔记本”的拷贝的时候,他需要在“控制笔记本”增加相应的记录。当王小三在房间里跑了一圈,他需要在“控制笔记本”增加相应的记录。这个特殊的笔记本动态地保存了所有地方的资产情况,和房子里以数字表示的工作进程。

告警笔记本:每个家庭成员将遇到的问题写在这个日志里。如果需要某个情形下的额外信息,需要“跟踪笔记本”,它与告警笔记本配合使用,使得告警笔记本不会那么凌乱。

老王家的其他问题:

如果发生以下问题,老王无法开展一天的工作:

1:找不到新的一日工作的工作计划(初始化文件)

2:后院的地下室满了,老二没有空间放置新的底片,全家人只有等着;

3:老王的妻子患了感冒,老王很伤心,他会伤心地关上门,全家停工。

4:有时候老王需要用后院地下室的底片恢复一张(些)照片。如果他丢失一张底片,或者在恢复过程中损坏了一张底片,那他无法恢复那张损坏了底片以后拍的所有照片。

5:老王在工作中有时候不小心,在工作的时候,相机里的胶卷曝光,他会要求相机厂家提供有两个胶卷仓的照相机,万一一个胶卷仓的胶卷曝光,他还能指望另一个胶卷仓,这第二个胶卷仓叫“镜像”。

ORACLE内存的体系结构SGA

数据库启动的时候,能够看到以下主要参数信息

名称

角色功能

共享池

(shared pool)

库缓存、字典等

large pool:RMAN 并行处理 多线程服务器分时记忆

java pool:java代码数据使用

缓冲存储区

(buffer cache)

新的数据或者更新的数据工作先在缓存中进行,然后写回磁盘

重做日志缓冲区

(redo log buffer)

当数据被更新后,对于他们所作的修改被保存在重做日志缓冲区,当这个区满了1/3或者有了1M的重做日志记录时,这个区的数据写道联机重做日志里。

数据库的体系结构---老王家与ORACLE的基本内容的对照

ORACLE概念

老王家的对比物

ORACLE数据库

老王家保存照片与相关的笔记本、墙壁、储藏室。

一张照片。老王通过察看、修改、删除来处理照片,数据库的行保存了数据,可以查看,修改、删除、添加。

行标示(ROWID)

照片的ID

数据块

保存照片的框架。

表空间

保存照片的房间

系统更改号SCN

小三来回兜圈子协调墙壁与各个笔记本中内容的依据

数据文件

保存照片的房间的每一个墙壁

联机重做日志文件

控制文件

控制笔记本内容

参数文件

老王在一家开工前必须阅读的老王家一天工作的活动指南。

数据写入器

王妻从DB_BUFFER_CACHE架子上取照片,并放在墙壁上

日志写入器

大儿子王伯当将底片放入重做笔记本。

归档器

二儿子仲和拿出“重做笔记本”中的底片,放入“归档的重做笔记本”(在后院的地下室)

系统监视器

王管家

进程监视器

保姆王管家妻子

打开\关闭\启动数据库

王家的房子对客人开放\全家休息\早上常规程序

事务

处理一张或者多张照片

检查点

王小三同步墙上照片与控制笔记本的内容

活动流程:

1、写入一条数据

INSERTINTO DEPTVALUES(........) 2、生成重做 保存在重做缓存区

3、生成UNDO 保存在回滚段中

无论是否提交,都要生成重做

COMMIT;1、读取一致性(原理SCN)

2、将重做日志缓冲写入联机重做日志

继续其他工作,如果一个联机重做日志写满,LGWR关闭这个日志,打开写下一个日志,LGWR还会通知ARCH,将刚刚完成的重做日志写入到归档重作日志中。

分享到:
评论

相关推荐

    oracle数据库dba管理手册

    第1章 Oracle体系结构 1 1.1 数据库概述及实例 1 1.2 数据库 1 1.2.1 表空间 2 1.2.2 文件 2 1.3 实例 3 1.4 数据库内部结构 3 1.4.1 表、列和数据类型 4 1.4.2 约束条件 5 1.4.3 抽象数据类型 6 1.4.4 分区和子分区...

    Java面向对象程序设计笔记

    O-O的体系 5 O-O程序设计与结构化程序设计的区别 5 3. Java应用程序 5 搭建开发环境 5 4. 类的设计与对象的构造 6 类的两个要素 6 构造函数 7 Java对内存的管理 7 Java源文件的结构 7 第三章 Java语法 8 1...

    enerko-reports2:ENERKOs报告引擎

    具有不同体系结构的Web应用程序。 它适合于2层应用程序以及3层应用程序,因为报表存储在中心点(数据库)中, PL / SQL函数 查询或 意见。 它包括2个部分: Java实现 一个PL / SQL api来访问Java存储过程 ...

    legosdn站点:LegoSDN

    乐高SDN 是SDN控制器体系结构的重新设计,它围绕一组抽象来消除命运共享关系(在SDN-App和控制器之间以及在SDN-App和网络之间),并使控制器和网络可应对SDN-App故障。 您可以在了解有关该项目的更多信息。先决条件...

    公司职工管理系统.zip

    1、该题目以某公司的组织架构、岗位体系、人员结构、职工资源等业务为背景;通过先进的信息化平台,整合业务,规范和优化公司职工管理,全面提高公司职工管理的质量与效率。通过调研、分析现有的管理模式和已有的...

    浅谈数据仓库和大数据.pdf

    浅谈数据仓库和⼤数据 浅谈数据仓库和⼤数据 前⾔ 前⾔ 数据仓库是今年来适应利⽤数据⽀持决策分析的强烈需求⽽发展起来的数据库应⽤技术,诚然,数据仓库以数据库为基础,但是他在需求、 客户、体系结构与运⾏机制...

    二十三种设计模式【PDF版】

    2.设计模式是比 J2EE 等框架软件更小的体系结构,J2EE 中许多具体程序都是应用设计模式来完成的,当你深入到 J2EE 的内 部代码研究时,这点尤其明显,因此,如果你不具备设计模式的基础知识(GoF 的设计模式),你很难...

    大数据开发工程师的岗位职责.docx

    2、熟悉Hadoop、Mpp、Oracle等至少一种数据仓库工具 3、具备良好的编程语言基础如:java/python/scala/c++/shell等 4、二本以上学历,计算机相关专业或者有相关培训经历者优先 5、 个人素质要求:目光长远、态度...

    疯狂JAVA讲义

    6.5.1 抽象方法和抽象类 188 6.5.2 抽象类的作用 191 6.6 更彻底的抽象:接口 192 6.6.1 接口的概念 192 6.6.2 接口的定义 193 6.6.3 接口的继承 195 6.6.4 使用接口 195 6.6.5 接口和抽象类 197 6.6.6 面向...

    个性化智能推荐系统分析与调研.pdf

    ETL服务器负责将⽇志⽂件和结构化数 据导⼊Hadoop分析集群,并将分析结果导出到Oracle数据库;数据解析服务器负责连接Hadoop环境,完成数据分析各项计 算;Hadoop和Hive提供数据分布式存储和计算的基础框架;调度...

    linq2db:Linq到数据库提供程序

    从体系结构上讲,它比Dapper,Massive或PetaPoco之类的微型ORM领先一步,因为您可以使用LINQ表达式(而不是魔术字符串),同时在代码和数据库之间保持一薄层抽象层。 您的查询由C#编译器检查,并允许轻松进行重构...

    支持多数据库的ORM框架ef-orm.zip

     JPA1.0和早期的H框架,其思想是将关系型数据库抽象为对象池,这极大的限制了本来非常灵活的SQL语句的发挥空间。而本质上,当我们调用某H框架的session.get、session.load、session.delete时,我们是想传递一个以...

    亮剑.NET深入体验与实战精要2

    11.4.3 Windows服务应用程序体系结构 411 11.5 调试Windows服务 414 11.5.1 日志调试法 414 11.5.2 附加进程断点调试法 414 本章常见技术面试题 416 职场智慧之初入江湖 416 本章小结 418 第12章 新技术初探 419 ...

    亮剑.NET深入体验与实战精要3

    11.4.3 Windows服务应用程序体系结构 411 11.5 调试Windows服务 414 11.5.1 日志调试法 414 11.5.2 附加进程断点调试法 414 本章常见技术面试题 416 职场智慧之初入江湖 416 本章小结 418 第12章 新技术初探 419 ...

    asp.net知识库

    革新:.NET 2.0的自定义配置文件体系初探 关于如何在ASP.NET 2.0中定制Expression Builders 怎么在ASP.NET 2.0中使用Membership asp.net 2.0-实现数据访问(1) ASP.NET 2.0 新特性 .NET 2.0里使用强类型数据创建...

    java面试题

    72.6. Struts体系结构中的组件 69 72.7. struts如何实现国际化 70 72.8. struts2.0的常用标签 71 72.9. action是单实例还是多实例,为什么? 73 72.10. Struts的validate框架是如何验证的? 74 72.11. ...

Global site tag (gtag.js) - Google Analytics