admin管理员组

文章数量:1598887

一、Oracle体系结构概述:

  Oracle的体系结构是指数据库的组成、工作过程与原理,以及数据在数据库中的组织与管理机制。要了解Oracle数据库的体系结构,必须理解Oracle系统的重要概念和主要组件。

  Oracle系统体系结构由三部分组成:内存结构,进程结构,存储结构。。如下图所示:

  

    1、内存结构(SGA、PAG)

  内存结构包括系统全局区(System Global Area,SGA)程序全局区(Program Gloabl Area,PGA)


  2、进程结构(process)

  进程结构包括前台进程后台进程。前台进程是指服务进程和用户进程。前台进程是根据实际需要而运行的,并在需要结束后立刻结束。后台进程是指在Oracle数据库启动后,自动启动的几个操作系统进程。

 

  3、存储结构(Database)

  Oracle的存储结构主要包含逻辑结构物理结构。物理结构指系统中的一组文件。逻辑结构是一种层次结构。主要由:表空间、段、区和数据块等概念组成。

 

二、内存结构

  内存结构是Oracle中最为重要的部分,内存也是影响数据库性能的第一因素。

  Oracle的内存存储的主要内容如下:

  1、程序代码(PL-SQL、Java)。

  2、关于已经连接的会话的信息,包括当前所有活动和非活动会话。

  3、程序运行时必须的相关信息,如查询计划。

  4、Oracle进程之间共享的信息和相互交流的信息,如锁。

  5、哪些别永久存储在外围存储介质上,被缓存在内存中的数据。(如数据块)。

 

  按照内存的使用方法不同,又将Oracle的内存分为系统全局区(SGA),程序全局区(PGA)

  1、SGA:(System Global Area,SGA)所有用户都可以访问的实例共享内存区域。数据块、事务处理日志、数据词典信息等都存储在SGA中。

  SGA是Oracle系统为实例分配的一组共享缓冲存储区,用于存放数据库数据和控制信息,以实现对数据库数据的管理和操作。

  SGA主要包括:

  1)数据缓冲区:    

  数据块缓存区(datablockbuffercache)是SGA中的一个高速缓存区域,用来存储从数据库中读取数据段的数据块(如表、索引和簇)。数据块缓存区的大小由数据库服务器init.ora文件中的DB_LOCK_BUFFERS参数决定(用数据库块的个数表示)。在调整和管理数据库时,调整数据块缓存区的大小是一个重要的部分。

  因为数据块缓存区的大小固定,并且其大小通常小于数据库段所使用的空间,所以它不能一次装载下内存中所有的数据库段。通常,数据块缓存区只是数据库大小的1%~2%,Oracle使用最近最少使用(LRU,leastrecentlyused)算法来管理可用空间。当存储区需要自由空间时,最近最少使用块将被移出,新数据块将在存储区代替它的位置。通过这种方法,将最频繁使用的数据保存在存储区中。

  然而,如果SGA的大小不足以容纳所有最常使用的数据,那么,不同的对象将争用数据块缓存区中的空间。当多个应用程序共享同一个SGA时,很有可能发生这种情况。此时,每个应用的最近使用段都将与其他应用的最近使用段争夺SGA中的空间。其结果是,对数据块缓存区的数据请求将出现较低的命中率,导致系统性能下降。


  2)字典缓冲区:

  数据库对象的信息存储在数据字典表中,这些信息包括用户帐号数据、数据文件名、段名、盘区位置、表说明和权限,当数据库需要这些信息(如检查用户查询一个表的授权)时,将读取数据字典表并且将返回的数据存储在字典缓存区的SGA中。

  数据字典缓存区通过最近最少使用(LRU)算法来管理。字典缓存区的大小由数据库内部管理。字典缓存区是SQL共享池的一部分,共享池的大小由数据库文件init.ora中的SHARED_POOL_SIZE参数来设置。

  如果字典缓存区太小,数据库就不得不反复查询数据字典表以访问数据库所需的信息,这些查询称为循环调用(recuesivecall),这时的查询速度相对字典缓存区独立完成查询时要低。


  3)日志缓冲区:

  重做项描述对数据库进行的修改。它们写到联机重做日志文件中,以便在数据库恢复过程中用于向前滚动操作。然而,在被写入联机重做日志文件之前,事务首先被记录在称作重做日志缓冲区(redologbuffer)的SGA中。数据库可以周期地分批向联机重做日志文件中写重做项的内容,从而优化这个操作。重做日志缓冲区的大小(以字节为单位)由init.ora文件中的LOG_BUFFER参数决定。

本文标签: 体系结构基础ORACLE