oracle数据库的结构简析

来源:互联网 发布:周渝民演技 知乎 编辑:程序博客网 时间:2024/06/06 20:01

一、Oracle数据库与实例

实例:就是一组操作系统进程(或者是一个多线程的进程)和一些内存,这些进程可以操作数据库。

数据库:只是一个文件集合(包括数据文件、控制文件、临时文件、重做日志文件)。

两者关系:数据库可以由多个实例装载和打开,而实例可以在任何时间点装载和打开一个数据库。

实际上,准确地讲,实例在其整个生存期中最多能装载和打开一个数据库!

二、Oracle数据库的物理结构


数据文件、控制文件、临时文件、重做日志文件等.

这里参数文件能够操作控制文件,控制文件打开数据文件。

三、Oracle数据库的内存结构



SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。它是实例中的全局共享区,实例是由SGA和进程组成。


DBBuffer:缓冲区高速缓存(buffer cache )保存了最近使用过的数据库、或者是修改后已经写回的数据块(干净的数据块).

因为缓冲区高速缓存在保存数据块时使用了最近最多使用(most-recently-used)算法,因此最活跃的数据块儿可以驻留在内存中,从而减少IO、提高性能。包括默认缓存池、保持缓存池再生缓存池。


共享池:指SGA中存储共享内存结构的区域,如Library cache 中的 SQL区,以及数据字典中的内部信息等。

共享池非常重要,如果因为共享池分配的空间太小,可能导致性能降低。共享池由库缓存池(library cache),数据字

典缓冲池组成。


重做日志缓冲区:SGA的重做日志缓冲区保存着数据库的重做条目(redo entry)或修改日志。该缓冲区的内容总是会尽快写入重做日志。

 

大共享区: 提供分配大内存快的隔离内存区。

 

共享池:分为库缓存区字典缓存区。

        库缓存区 又包括 共享sql区 (保留sql语句执行版本)、 pl/sql区(保存编译版本所有用户共享)。

        字典缓存区 用于缓存数据字典信息存储频繁使用的数据字典。

 

固定SGA: 我们无法设置大小、oracle自己独立的去控制。

它是SGA的一个组件,其大小因平台和版本而异。安装时,固定SGA编译到”Oracle二进制可执行文件本身当中(所以它的名字里有固定一词)。在固定SGA中,有一组指向SGA中其他组件的变量,还有一些变量中包含了各个参数的值。我们无法控制固定SGA的大小,不过固定SGA通常都很小。可以把这个区想成是
SGA中的自启区,Oracle在内部要使用这个区来找到SGA的其他区。

 

四、Oracle数据库的逻辑结构

oracle的逻辑结构包括表空间(tablespace),段(segment),区(extent),数据块(data block) 以及数据文件。
表空间中存储的对象叫,比如数据段,索引段,和回退段。
组成,区是磁盘分配的最小单位。段的增大是通过增加区的个数来实现的。
每个的大小是数据大小的整数倍,区的大小可以不相同;
数据是数据库中最小的I/O单位,同时也是内存数据缓冲区的单位,及数据文件存储空间单位。块的大小由参数DB_BLOCK_SIZE设置,其值应设置为操作系统块大小的整数倍。

搜索发现了如下几篇文章解释的更加详细,参考:
Oracle物理结构 http://blog.csdn.net/bupt_zoucq/article/details/6694056
Oracle内存结构 http://blog.csdn.net/bupt_zoucq/article/details/6694514
Oracle 逻辑机构 http://blog.csdn.net/bupt_zoucq/article/details/6694177

0 0
原创粉丝点击