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

oracle内存结构

2016-05-29 16:03 375 查看
oracle 10g的特点

网格计算:其中g即grid computing

服务器虚拟:将多个普通计算机的处理资源集中使用

存储虚拟:提供了数据库和存储之间的一个虚拟层,这样多个磁盘可以被看作一个磁盘组

网格管理:可以管理网格中独立的节点,集中维护各组系统的配置和安全设置

 

oracle的逻辑结构和物理结构

 


oracle例程:当数据库服务器上的一个数据库启动时,oracle将分配一块内存区间(SGA),并启动一个或多个oracle进程,SGA和oracle进程组成了oracle例程。

 

oracle的内存结构:SGA和PGA

SGA:System Global Area 系统全局区,共享缓冲存储区,数据库各种操作主要在SGA中进行。由所有服务进程和后台进程共享。SGA主要由三部分构成:SQL共享池、数据库缓冲区、重做日志缓冲区。

PGA:Program Global Area程序全局区,非共享缓冲存储区。由每个服务进程和后台进程专有,每个进程都有一个PGA。

数据库缓冲区:Datebase Buffer Cache 用于缓存最近从数据文件中读取的数据块,可以大大提高查询和更新数据的性能。两个参数影响DBC,DB_BLOCK_SIZE缓冲区数据块大小,DB_BLOCK_BUFFERS 缓冲区数据块个数。PGA是为每个连接到oracle database的用户进程保留的内存。数据库缓冲区分为脏的区、自由区和保留区。

脏的区:Dirty Buffer 被修改过但尚未写到数据文件中的缓冲块。

自由区:Free Buffer 没有包含任何数据并可以再写入的区,oracle可从数据文件中读数据块到该区。

保留区:此区包含有正在处理的或者明确保留用于将来使用的区。

SQL共享池:Shared Pool 用于缓存最近被执行的SQL语句和最近被使用的数据定义,主要包括Library cache(共享SQL区)和Date dictionary cache(数据字典缓冲区)。共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据字典信息行。SHARED_POOL_SIZE确定共享池的大小。

重做日志缓冲区:Redo Log Buffer Cache 当执行DML(如update、delete、insert等语句)时,oracle会为这些操作生成重做记录,重做日志高速缓冲区就是用于存储重做记录的缓存。为提高效率,重做记录并不直接写入磁盘的重做日志文件,而是先写入重做日志缓存,当重做记录达到一定数量时,由LGWR进程写入重做日志文件。LOG_BUFFER确定日志缓冲区的大小。应该把重做日志文件保存在单独的磁盘上以获取良好的性能。最大限度的提高重做日志的吞吐量是oracle性能优化首先考虑的因素。

大池:Large Pool是SGA中可选的内存结构,需要大池的操作有数据库备份和恢复、大量排序的SQL语句、并行化的数据库操作。

Java:Java Pool用于存放JAVA代码和JAVA程序等。

 


oracle进程包括服务进程和后台进程

服务进程:处理用户进程的请求。处理过程:1、语法检查;2、语义检查;3、对SQL语句进行解析;4、执行SQL,返回结果。

后台进程:为所有数据库用户异步完成各种任务

主要的后台进程有

DBWR  数据库写进程,将数据库缓冲区中所有修改过的缓冲块数据写到数据文件中,并用LRU算法来保持缓冲区中的数据块为最近经常使用的,以减少I/O次数。

LGWR  日志写进程,将日志缓冲区中的所有记录项写到日志文件中。

CKPT   检查点写进程,在控制文件中记录检查点。参数CHECKPOINT_PROCESS确定了检查点的启动/不启动状态。

SMON  系统监控进程,负责完成自动实例恢复。

PMON  进程监控进程,撤消异常中断的用户进程,并释放该进程已获得的系统资源或锁。

ARCH   归档进程,在日志文件组出现切换时,将旧日志文件的内容拷贝到脱机存储介质上,出现介质失败时用于恢复数据。LOG_ARCHIVE_START确定了该进程的启动/不启动状态

RECO  恢复进程,在分布式操作的情况下,恢复一个事务的失败。

LCKn    加锁进程,在并行服务器系统上加锁,最多可加10个锁,分别是LCK0,LCK1......LCK9

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