4Oracle服务器结构和组成

上传人:cn****1 文档编号:556677447 上传时间:2023-08-12 格式:DOC 页数:29 大小:286.51KB
返回 下载 相关 举报
4Oracle服务器结构和组成_第1页
第1页 / 共29页
4Oracle服务器结构和组成_第2页
第2页 / 共29页
4Oracle服务器结构和组成_第3页
第3页 / 共29页
4Oracle服务器结构和组成_第4页
第4页 / 共29页
4Oracle服务器结构和组成_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《4Oracle服务器结构和组成》由会员分享,可在线阅读,更多相关《4Oracle服务器结构和组成(29页珍藏版)》请在金锄头文库上搜索。

1、Oracle服务器体系结构【学习目标】Oracle服务器的结构和组成是学习Oracle数据库必不可少的基础知识,具备这些知识才能深入学习Oracle数据库的工作原理。所以本章内容对于学习以后章节的内容都是至关重要的。一个好的DBA,对Oracle数据库的工作原理应该有清楚明确的了解。本章内容介绍Oracle服务器的结构和组成,对Oracle服务器从实例结构和数据库结构两个方面予以分析。数据库的结构又可划分为物理结构和逻辑结构,两者既有联系又有区别。【本章要点】 Oracle服务器的总体结构 Oracle实例的内存结构和进程结构 Oracle数据库的物理和逻辑结构【关键术语】Architectu

2、re 结构 Component 组成部件 Process 进程 Parameter 参数 Instance 实例 Memory 内存Database buffer cache 数据库高速缓存 Shared pool 共享池Library cache 库缓存 Data dictionary cache 数据字典缓存Redo log buffer 重做日志缓存 Large pool 大池Java pool java池 Background process 后台进程Connection 连接 Session 会话 Online redo log 联机重做日志 Dynamic 动态的 SGA(Syst

3、em Global Area) 系统全局区 PGA(Program Global Area) 程序全局区Server process 服务器进程 User process 用户进程Parsing 分析1.1 Oracle服务器的构成Oracle服务器是一个具有高性能和高可靠性面向对象关系型数据库管理系统,也是一个高效的SQL语句执行环境,Oracle服务器在结构上包含很多部分,将在以下各节中分别论述。1.1.1 Oracle服务器总体结构Oracle服务器同运行在操作系统下的很多程序一样,通过在后台运行一组可执行程序、在内存中开辟程序运行的存储区域并在磁盘上存储数据来进行运作。在结构上,Ora

4、cle服务器(Oracle Server)由实例(Instance)和数据库(Database)两大部分构成。实例是一组内存结构和Oracle后台进程的集合;数据库在物理上由多个操作系统文件组成, 其中主要包括数据文件、控制文件和重做日志文件。Oracle服务器=实例+数据库。在Oracle服务器的组成部分中,有些部分是处理SQL语句必须的,其他的部分则是为了改进数据库的性能,在发生软硬件故障时确保能够对数据库进行恢复,或完成其它的数据库维护工作。图4-1是Oracle服务器的构成示意图。Oracle服务器具备以下的特点: 能够可靠的进行多用户环境下大量数据的处理,允许多用户同时访问相同的数据

5、。 保证数据访问的高性能。 有效防止对数据的非法访问。 对于故障恢复提供高效的解决方案。实例SGA重做日志缓冲区共享池数据字典高速缓存库高速缓存PMON数据库高速缓冲区Java 池大 池SMONLGWRCKPTARCHDBWR服务进程用户进程PGA数据文件控制文件日志文件归档日志文件数据库参数文件口令文件图 4-1 Oracle服务器结构示意图除了以上部分,Oracle服务器还包含用于验证用户权限、进行系统配置和用于数据库故障恢复的一些非数据库文件;以及用于处理SQL语句执行的用户进程和服务进程。1.1.2 Oracle实例如前所述,实例由内存结构和后台进程组成,如图4-2所示。要访问数据库,

6、首先要启动实例,启动实例时会分配内存并启动后台进程。每个实例在同一时刻只能打开一个数据库,这样数据库才能够使用。实例运行后,用户就可以访问实例,由实例来访问数据库。实例在用户和数据库之间充当中间层。Oracle实例=内存结构+后台进程。内存结构描述的就是Oracle数据库对内存的使用构成。Oracle内存结构被总称为SGA(System Global Area),主要包括数据高速缓存、重做日志缓冲区和共享池三部分。而后台进程则主要包括以下几个进程SMON、PMON、DBWn、CKPT、LGWR和ARCn。实例SGA重做日志缓冲区共享池数据字典高速缓存库高速缓存PMON数据库高速缓冲区Java

7、池大 池SMONLGWRCKPTARCnDBWn内存结构后台进程图4-2 实例结构示意图1.1.3 Oracle数据库Oracle数据库不仅包含了用于存放数据的数据文件(Data files),而且也包含了用于维护这些数据信息所需要的控制文件(Control files)和重做日志文件(Online redo log files),如图4-3所示。数据文件控制文件日志文件归档日志数据库参数文件口令文件图4-3 数据库结构示意图数据文件是用于存储数据库数据的物理文件。在数据文件中存储着数据字典、用户数据以及回滚段(Rollback Segment)数据,Oracle数据库至少要包含一个数据文件。

8、重做日志用于记录数据库变化,当执行DML(INSERT、UPDATE、DELETE)或DDL(CREATE、ALTER、DROP)语句时,Oracle会将这些变化信息记载到重做日志中,以避免出现意外情况时的数据丢失,使用重做日志的目的是为了在出现意外情况时恢复数据库,Oracle数据库至少要包含两个或两个以上的重做日志。控制文件是用于记录完整性和维护Oracle数据库的重要物理文件,Oracle数据库至少要包含一个控制文件。Oracle数据库=数据文件+控制文件+重做日志文件。除了以上三种文件之外,Oracle还包含了参数文件(Parameter file)、口令文件(Password fil

9、e)、归档日志(Archived redo log files)、以及跟踪文件和警告文件等,这些文件属于非数据库文件,会在以后的部分进行详细介绍。1.2 Oracle内存结构Oracle的内存由系统全局区(System Global Area,简称SGA)和程序全局区(Program Global Area,简称PGA)组成。SGA是一组由Oracle分配的共享内存区域,用户和进程可以共享其中的信息,在实例启动时分配。当实例启动时,SGA存储区被自动分配,当实例关闭时,存储区被回收。在启动数据库实例时,可以看到SGA分配的信息SQL STARTUP NOMOUNTORACLE 例程已经启动。T

10、otal System Global Area 34675092 bytesFixed Size 453012 bytesVariable Size 29360128 bytesDatabase Buffers 4194304 bytesRedo Buffers 667648 bytes在实例启动后也可用SHOW SGA(或SELECT * FROM v$sga)显示SGA信息。PGA是数据库服务器内存中为进程分配的专用的内存区域,是进程私有的内存区,在进程启动时分配。1.2.1 系统全局区SGASGA由以下部分组成,如图4-4所示: 数据高速缓冲区(Data Buffer Cache) 重做

11、日志缓冲区(Redo Log Buffer) 共享池(Shared Pool) Java池(Java Pool) 大池(Large Pool)SGA重做日志缓冲区共享池数据字典高速缓存库高速缓存数据库高速缓冲区Java 池大 池图4-4 SGA结构示意图SGA越大系统的性能越好,但SGA过大也会起到反作用。一般情况下,SGA不应超过系统实际内存的1/2。但从Oracle 9i开始支持动态SGA特性,即无需关闭实例就可以改变数据高速缓冲区、共享池和大池的大小。数据高速缓冲区、共享池的大小也可以根据工作负载自动调整,但SGA的总大小不能超过初始化参数SGA_MAX_SIZE的设置。初始化参数的设置

12、在后续章节介绍。影响SGA大小的主要初始化参数有以下几个: DB_CACHE_SIZE:用于缓冲标准数据块的数据高速缓冲区大小。UNIX系统下默认为 48 MB NT系统下默认52 MB。 LOG_BUFFER:重做日志缓冲区大小,以字节为单位。 SHARED_POOL_SIZE:共享池大小,以字节为单位。用于存储共享SQL和PL/SQL的,默认16M,对64位默认64 MB。 LARGE_POOL_SIZE:大池的大小,默认为0。 JAVA_POOL_SIZE:Java 池大小,默认24 MB。SGA的总容量=数据高速缓冲区+重做日志缓冲区+共享池+Java池+大池。SGA的分配单位是gra

13、nule,granule是连续的虚拟内存分配单位,它的大小取决于参数SGA_MAX_SIZE 的大小,当SGA小于128M时为4M,否则为16M。当动态改变SGA大小时,也是取值为granule的整数倍。假设当前granule的大小为4M,如果要把DB_CACHE_SIZE设置为14M,实际分配时将为16M,取granule的整数倍。1数据高速缓冲区(Database Buffer Cache)在Oracle中无论是读取还是修改数据,都是由服务器进程在数据高速缓冲区中完成的。数据高速缓冲区的作用就是用来缓存最近从数据库中读出的数据块,并可供其他客户进程共享。用户进程查看数据时,首先检查需要的信

14、息是否在缓冲区内,如果在缓冲区中,就可以直接访问,否则访问物理文件并读取数据块到缓冲区。我们知道内存的读写速度要比物理设备的读写速度快很多,这样就可以大大提高Oracle数据库的性能。数据库高速缓冲区分为默认缓冲区、保留缓冲区和循环缓冲区3个子缓冲区,由以下参数决定每部分的大小: DB_CACHE_SIZE,默认缓冲区的大小,不能设置为0。 DB_KEEP_CACHE_SIZE,保留缓冲区的大小,用来保留在内存中最有可能重用的数据块。 DB_RECYCLE_CACHE_SIZE,循环缓冲区的大小,用来消除在内存中很少有机会重用的数据块。在Oracle 9i中可以定义非标准块,即不同于标准块尺寸的数据块。非标准块将使用不同的数据高速缓冲区。其中DB_BLOCK_SIZE用于定义标准块的尺寸,DB_CACHE_SIZE用于指定标准块的数据高速缓存尺寸,而DB_nK_CACHE_SIZE可用于指定其他非标准块的数据高速缓冲区尺寸,其中N为2、4、8、16或32。数据高速缓存的实际尺寸就是标准块和非标准块的

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

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