《精编》ORACLE体系结构分析

上传人:tang****xu1 文档编号:133418148 上传时间:2020-05-27 格式:DOC 页数:26 大小:311.50KB
返回 下载 相关 举报
《精编》ORACLE体系结构分析_第1页
第1页 / 共26页
《精编》ORACLE体系结构分析_第2页
第2页 / 共26页
《精编》ORACLE体系结构分析_第3页
第3页 / 共26页
《精编》ORACLE体系结构分析_第4页
第4页 / 共26页
《精编》ORACLE体系结构分析_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《《精编》ORACLE体系结构分析》由会员分享,可在线阅读,更多相关《《精编》ORACLE体系结构分析(26页珍藏版)》请在金锄头文库上搜索。

1、窗体顶端DotNet Java DataMining知识改变命运,DataMining,Java,C/C+ 博客园: 首页: 新随笔: 联系: 订阅: 管理 posts - 29, comments - 22, trackbacks - 0 与我联系 发短消息 搜索常用链接 我的随笔 我的空间 我的短信 我的评论 更多链接 我的参与 我的新闻 最新评论 我的标签留言簿(9) 给我留言 查看留言随笔档案(29) 2006年3月 (1) 2006年2月 (5) 2006年1月 (10) 2005年11月 (1) 2005年7月 (1) 2005年1月 (6) 2004年12月 (2) 2004年1

2、1月 (3)文章档案(1) 2004年11月 (1)相册 什刹海数据挖掘blog 数据挖掘邮件列表 我的Google主页 我的Google主页,English Home Page数据挖掘经典资源 rabbit blog 月亮的别称 moon。如:兔魄,兔轮,兔月(月亮的别名);兔钩(弯月);兔宫(月宫);兔起鸟沉(月出日落);兔辉(月光);兔阙(月宫);兔华(明月)最新随笔 1.经过2个星期的日夜奋战,终于答辩完了 2.已经信息化的我们能否想起使用或第一想起用信息化的手段办事 3.对一个懒散的国家或个人,没有什么比成功更令人鼓舞 4.8小时是能做很多事的 5.这几天做论文,作为消遣看了一本很棒

3、的书金钱魔杖现代犹太商法 6.新的年又完全开始了,回到了北京,一切又是那么忙碌。 7.生活工作无小事 8.把有限的精力放在最有意义的事上 9.保尔柯察金的那句话太对了,原来人最不能忍受的是碌碌无为 10.sql交叉查询 11.SqlServer如何生成动态交叉表查询-zz 12.玖玖精品软件下载基地,当前最棒的软件基地 13.管理十大经典理论终生受用 14.成长中应该知道的20个故事-不错的噢 15.05年内最经典语言解析 16.2006年,希望是我更有收获的一年,也是大家更有成就的一年 17.ORACLE 体系结构(Architecture of ORACLE) 18.中国软件业失望与希望-

4、超有理的文章 19.论程序员应具备的职业素质 20.Oracle 常用命令大汇总最新评论 1.re: Internet与Intranet中的人工智能技术 不错的内容,内容信息很多,了解不少相关信息。幸苦了楼主。 -孤剑阅读排行榜 1.05年内最经典语言解析(3915) 2.JDBC的作用及重要接口(2040) 3.世界500强名称中英对照 (1877) 4.数据挖掘术语简介(1703) 5.Oracle 常用命令大汇总(1261) 评论排行榜 1.数据挖掘术语简介(5) 2.欢迎大家访问我的blog(4) 3.Internet与Intranet中的人工智能技术(3) 4.已经信息化的我们能否想

5、起使用或第一想起用信息化的手段办事(2) 5.ORACLE 体系结构(Architecture of ORACLE)(1) ORACLE 体系结构(Architecture of ORACLE) ORACLE 体系结构(Architecture of ORACLE)第一部分:ORACLE8i体系结构第一章. 概要在本章里你可以了解以下内容1、 理解ORACLE 实例的组成2、 理解ORACLE 数据库的组成3、 理解ORACLE内存结构的组成4、 理解后台进程的作用与分工5、 理解数据库的物理文件与对应的逻辑结构6、 理解ORACLE的整体构架第二章. 理解ORACLE实例2.1 ORACLE

6、 SERVERORACLE是一个可移植的数据库它在相关的每一个平台上都可以使用,即所谓的跨平台特性。在不同的操作系统上也略有差别,如在UNIX/LINUX上,ORACLE是多个进程实现的,每一个主要函数都是一个进程;而在Windows上,则是一个单一进程,但是在该进程中包含多个线程。但是从整体构架上来看,ORACLE在不同的平台上是一样的,如内存结构、后台进程、数据的存储。一个运行着的ORACLE数据库就可以看成是一个ORACLE SERVER,该SERVER由数据库(Database)和实例(Instance)组成,在一般的情况下一个ORACLE SERVER包含一个实例和一个与之对应的数据

7、库,但是在特殊情况下,如8i的OPS,9i的RAC,一个SERVER中一个数据库可以对应多个实例。一系列物理文件(数据文件,控制文件,联机日志等)的集合或与之对应的逻辑结构(表空间,段等)被称为数据库,简单的说,就是一系列与磁盘有关系的物理文件的组成。ORACLE内存结构和后台进程被成为数据库的实例,一个实例最多只能安装(Mount)和打开(Open)在一个数据库上,负责数据库的相应操作并与用户交互。实例与数据库的关系如下图所示:图一 ORACLE SERVER2.2 ORACLE内存结构 (Memory structure)2.2.1 内存结构的组成Oracle内存结构主要可以分共享内存区与

8、非共享内存区,共享内存区主要包含SGA(System Global Area),非共享内存区主要由PGA(Program Global Area)组成,可以用如下图形表示。图二 ORACLE MEMOERY STRUCTRUE2.2.2全局共享区System Global Area(SGA) System Global Area 是一块巨大的共享内存区域,他被看做是Oracle 数据库的一个大缓冲池,这里的数据可以被ORACLE的各个进程共用。其大小可以通过如下语句查看:SQL select * from v$sga;NAME VALUE- -Fixed Size 39816Variable

9、Size 259812784Database Buffers 1.049E+09Redo Buffers 327680更详细的信息可以参考V$sgastat、V$buffer_pool主要包括以下几个部分:2.2.2.1共享池(Shared pool)共享池是SGA中最关键的内存片段,特别是在性能和可伸缩性上。一个太小的共享池会扼杀性能,使系统停止,太大的共享池也会有同样的效果,将会消耗大量的CPU来管理这个共享池。不正确的使用共享池只会带来灾难。共享池主要又可以分为以下两个部分:1、SQL语句缓冲(Library Cache)当一个用户提交一个SQL语句,Oracle会将这句SQL进行分析(

10、parse),这个过程类似于编译,会耗费相对较多的时间。在分析完这个SQL,Oracle会把他的分析结果给保存在Shared pool的Library Cache中,当数据库第二次执行该SQL时,Oracle自动跳过这个分析过程,从而减少了系统运行的时间。这也是为什么第一次运行的SQL 比第二次运行的SQL要慢一点的原因。下面举例说明parse的时间SQLStartupSQL select count(*) from usertable;COUNT(*)-243Elapsed: 00:00:00.08这是在Share_pool 和Data buffer 都没有数据缓冲区的情况下所用的时间SQL

11、 alter system flush SHARED_POOL;System altered.清空Share_pool,保留Data bufferSQL select count(*) from usertable;COUNT(*)-243Elapsed: 00:00:00.02SQL select count(*) from usertable;COUNT(*)-243Elapsed: 00:00:00.00从两句SQL 的时间差上可以看出该SQL 的Parse 时间约为00:00:00.02对于保存在共享池中的SQL语句,可以从V$Sqltext、v$Sqlarea中查询到,对于编程者来说

12、,要尽量提高语句的重用率,减少语句的分析时间。一个设计的差的应用程序可以毁掉整个数据库的Share pool,提高SQL语句的重用率必须先养成良好的变成习惯,尽量使用Bind变量。2、数据字典缓冲区(Data Dictionary Cache)显而易见,数据字典缓冲区是ORACLE特地为数据字典准备的一块缓冲池,供ORACLE内部使用,没有什么可以说的。2.2.2.2块缓冲区高速缓存(Database Buffer Cache)这些缓冲是对应所有数据文件中的一些被使用到的数据块。让他们能够在内存中进行操作。在这个级别里没有系统文件,,户数据文件,临时数据文件,回滚段文件之分。也就是任何文件的数

13、据块都有可能被缓冲。数据库的任何修改都在该缓冲里完成,并由DBWR进程将修改后的数据写入磁盘。这个缓冲区的块基本上在两个不同的列表中管理。一个是块的“脏”表(Dirty List),需要用数据库块的书写器(DBWR)来写入,另外一个是不脏的块的列表(LRU List),一般的情况下,是使用最近最少使用(Least Recently Used,LRU)算法来管理。块缓冲区高速缓存又可以细分为以下三个部分(Default pool,Keep pool,Recycle pool)。如果不是人为设置初始化参数(Init.ora),ORACLE将默认为Default pool。由于操作系统寻址能力的限制

14、,不通过特殊设置,在32位的系统上,块缓冲区高速缓存最大可以达到1.7G,在64位系统上,块缓冲区高速缓存最大可以达到10G。2.2.2.3重做日志缓冲区(Redo log buffer)重做日志文件的缓冲区,对数据库的任何修改都按顺序被记录在该缓冲,然后由LGWR进程将它写入磁盘。这些修改信息可能是DML语句,如(Insert,Update,Delete),或DDL语句,如(Create,Alter,Drop等)。重做日志缓冲区的存在是因为内存到内存的操作比较内存到硬盘的速度快很多,所以重作日志缓冲区可以加快数据库的操作速度,但是考虑的数据库的一致性与可恢复性,数据在重做日志缓冲区中的滞留时间不会很长。所以重作日志缓冲区一般都很小,大于3M之后的重作日志缓冲区已经没有太大的实际意义。2.2.2.4 Java程序缓冲区(Java Pool)Java 的程序区,Oracle 8I 以后,Oracle 在内核中加入了对Java的支持。该程序缓冲区就是为Java 程序保留的。如果不用Java程序没有必要改变该缓冲区的默认大小。2.2.2.5大池(Large Pool)大池的得名不是因为大,而是因为它用来分配大块的内存,处理比共享池更大的内存,在8.0开始引入。下面对象使用大池:1、 MTS在SGA的Large Pool中分配

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号