一、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数据库的逻辑结构