文档详情

数据库培训课件-oracle体系结构.pptx

发布:2025-04-05约5.66千字共41页下载文档
文本预览下载声明

;概述

1.数据库和实例

2.SGA

3.redo与undo

4.后台进程

5.物理结构

;数据库和实例

在Oracle领域中有两个词很容易混淆,这就是“实例”(instance)和“数据库”(database)。作为Oracle术语,这两个词的定义如下:

??数据库(database):物理操作系统文件或磁盘(disk)的集合。使用Oracle10g的自动存储管理(ASM)或RAW分区时,数据库可能不作为操作系统中单独的文件,但定义仍然不变。

??实例(instance):一组Oracle后台进程/线程以及一个共享内存区,这些内存由同一个计算机上运行的线程/进程所共享。这里可以维护易失的、非持久性内容(有些可以刷新输出到磁盘)。就算没有磁盘存储,数据库实例也能存在。

;数据库和实例

实例和数据库之间的关系是:数据库可以由多个实例装载和打开,而实例可以在任何时间点装载和打开一个数据库。实际上,准确地讲,实例在其整个生存期中最多能装载和打开一个数据库;数据库和实例

;数据库和实例

;数据库和实例

;数据库和实例

;数据库和实例

;SGA和后台进程

Oracle有一个很大的内存块,称为系统全局区(SGA),在这里它会做以下工作:

维护所有进程需要访问的多种内部数据结构;

缓存磁盘上的数据,另外重做数据写至磁盘之前先在这里缓存;

保存已解析的SQL计划;

其它。

;SGA和后台进程

在UNIX环境中,这些进程会物理地附加到一个很大的共享内存段,这是操作系统中分配的一个内存块,可以由多个进程并发地访问(通常要使用shmget()和shmat())。

在Windows中,这些进程只是使用C调用(malloc())来分配内存,因为它们实际上是一个大进程中的线程,所以会共享相同的虚拟内存空间。Oracle还有一组供数据库进程/线程读写的文件(只允许Oracle进程读写这些文件)。这些文件保存了所有的表数据、索引、临时空间、重做日志等。;SGA和后台进程;SGA和后台进程

SGA分为不同的池(pool):

??Java池(Javapool):Java池是为数据库中运行的JVM分配的一段固定大小的内存。在Oracle10g中,Java池可以在数据库启动并运行时在线调整大小。

??大池(Largepool):共享服务器连接使用大池作为会话内存,并行执行特性使用大池作为消息缓冲区,另外RMAN备份可能使用大池作为磁盘I/O缓冲区。在Oracle10g和9iRelease2中,大池都可以在线调整大小。

??共享池(Sharedpool):共享池包含共享游标(cursor)、存储过程、状态对象、字典缓存和诸如此类的大量其他数据。在Oracle10g和9i中,共享池都可以在线调整大小。

;SGA和后台进程

??流池(Streampool):这是Oracle流(Stream)专用的一个内存池,Oracle流是数据库中的一个数据共享工具。这个工具是Oracle10g中新增的,可以在线调整大小。如果未配置流池,但是使用了流功能,Oracle会使用共享池中至多10%的空间作为流内存。

??“空”池(“Null”pool):这个池其实没有名字。这是块缓冲区(缓存的数据库块)、重做日志缓冲区和“固定SGA”区专用的内存。

对SGA整体大小影响最大的参数如下:

??JAVA_POOL_SIZE:控制Java池的大小。

??SHARED_POOL_SIZE:在某种程度上控制共享池的大小。

;SGA和后台进程

??LARGE_POOL_SIZE:控制大池的大小。;SGA和后台进程

重做缓冲区

如果数据需要写到在线重做日志中,则在写至磁盘之前要在重做缓冲区(redobuffer)中临时缓存这些数据。由于内存到内存的传输比内存到磁盘的传输快得多,因此使用重做日志缓冲区可以加快数据库的操作。数据在重做缓冲区里停留的时间不会太长。实际上,LGWR会在以下某个情况发生时启动对这个区的刷新输出(flush):

??每3秒一次

??无论何时有人提交请求

??要求LGWR切换日志文件

??重做缓冲区1/3满,或者包含了1MB的缓存重做日志数据

显示全部
相似文档