您的位置:首页 > 数据库 > Oracle

Oracle体系结构介绍

2012-03-13 12:14 447 查看
开始详细学习oracle体系结构,并且将自己的学习总结记录下来,以便自己的查看,并且将自己的心得和大家分享,

一、mos说明:

Introduction to the Oracle Database Instance

A database
instance is a set of memory structures that manage database files. Adatabase is a set of physical files on disk
created by the
CREATE DATABASE
statement. The instance manages its associated data and serves the users of the database.

--数据库实例是一组管理数据库文件的内存结构。数据库是磁盘上的一组物理文件。数据库实例通过数据库管理与它关联的数据和服务。

此段mos说明其实阐明了两个概念:

1、数据库(database):物理操作系统文件或磁盘disk的集合。

2、实例(instance):一组oracle后台进程/线程以及一个共享的内存区。

实例和数据库之间的关系:数据库可以由一个或多个实例装载和打开(RAC下多个),而实例可以在任何时间点装载和打开一个数据库。实例可以不依赖于数据库单独存在。

oracle想要对外提供数据管理的服务,就必须先启动实例。实例启动时,会在内存中分配一块共享空间,这部分空间就叫做SGA(System Global Area)。分配了SGA以后,oracle会启动一组后台进程。这时候我们就说数据库实例已经生成。

实例启动以后,oracle会将启动的实例与某个数据库关联,一个实例只能mount或打开一个数据库。这种情况就是所谓的单实例数据库;而一个数据库被多个实例关联,这就是所谓的RAC.

oracle数据库所包含的文件主要分为两类:一类叫做关键文件(Key File);另一类叫做非关键文件(Non-key File)。如果丢失关键文件,oracle数据库必须进行介质恢复(Media recovery)以后才能继续使用,而丢失非关键文件,则只需要重建丢失的文件即可,不需要进行介质恢复,同时在重建之前,数据库仍然可以继续使用。

关键文件:

数据文件(datafile)、联机日志文件(online redo log file)、控制文件(control file)

非关键文件:

参数文件(parameter file)、密码文件(password file)、归档日志文件(archived redo log file)、告警文件和跟踪文件(alert file、trace file)、备份文件(backup file)




SGA本身是一块内存区域,根据作用的不同,在该区域中又可以再次细分为多个不同的内存池。下面分别阐述个中池及后台进程:

共享池(shared pool):

shared pool的主要作用是提高sql和pl/sql代码的执行效率。在该池中会缓存曾经执行过的sql语句,以及sql的执行计划,此外区域中还包含着执行sql和pl/sql代码是参照的数据字典信息。

大池(Large pool):

Large pool是一个可选的内存池,其主要在于分担shared pool的压力。在某种情况下,比如备份恢复操作、I/O从属进程、并行查询等,如果没有配Large pool的话,则这些操作所需要的内存就会从shared pool里进行分配,就会增大shared pool的负担。

Java池(Java pool):

用于存放java的程序的调用方法。

数据块缓存区(database buffer cache):

用于缓存曾经读取过的数据,同时如果用户要修改某个数据,也都在这个区域里进行修改,然后在写入数据文件中。这里应该是SGA里最大的内存区域,我么应该尽可能的延长数据驻留在这个区域'的时间,这样的话,如果下次读取同样的数据的时候就无需从数据文件中读取了。

重做日志缓存区(redo log buffer):

数据库里的变化首先存放到这个区域,之后再被写入到联机日志文件中。

流池(Stream pool):

数据库中的流在工作中时所需要用到的内存区域。

对于oracle实例的另一组成部分,也就是后天进程:

系统监控进程(SMON System Monitor):

其主要任务是在实例启动时,判断该实例上次是否正常启动,如果非正常关闭的,则进行实例恢复。另外。它还会合并相邻的可用空间等。

进程监控进程(PMON Process Monitor):

其主要作用是监控用户进程,如果每个用户连上来但是由于某种原因非正常终止,则PMON负责清理该用户锁占用的资源,比如事务所、用户占用的内存等。

数据库写进程(database Write DBWn)

其作用是将buffer cache里面那些被更改的,但是还没有写到数据文件的数据写到数据文件中,

日志写进程(Log Write LGWR):

将log buffer里的内容写到联机日志文件中。

检查点进程(Checkpoint CKPT):

检查点进程启动时,会触发DBWn进程,并将检查点位置写到控制文件以及数据文件的头部。

数据库存储简介:

为了更好的管理物理磁盘上的数据文件,oracle引入了逻辑存储的概念。所谓逻辑存储可以理解为,oracle把数据在物理文件里的位置摆放都以数据行的形式存放在了相关表中。

为了有效的管理逻辑结构,oracle对整个物理结构在逻辑上进行分组:

最大的逻辑分组叫做数据库(database)

表空间tablespace--表空间对应的物理存储为数据文件

段(segment) 表和索引的逻辑载体

盘区(extent) 逻辑上连续的一段空间,是段增长的单位

数据块(block)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: