Oracle的体系结构(2)--内存结构

一,内存结构
主要包括SGA和PGA.
PGA是当程序起来时,给进程用。(排序,)大小由pga_aggregate_target 决定。

SGA是由一组内存结构组成,它是由所有用户进程共享的一块内存区域。启动实例时,Oracle自动分配SGA,关闭实例时,oracle自动释放SGA所占用的内存空间。SGA的大小由sga_target决定。

二,SGA的基本组件:
1) shared pool
共享池是对SQL,PL/SQL程序进行语法分析,编译,执行的内存区域。共享池是由库缓存(library cache),和数据字典缓存(Data dictionary cache)以及结果缓存(Result cache)等组成。
共享池的大小直接影响数据库的性能

  library cache : sql 和plsql 的解析场所,存放着所有编译过的sql语句代码,以备所有用户共享。

  data dictionary cache: 存放重要的数据字典信息,以备数据库使用。

  server result cache : 存放服务器端SQL 结果集及PL/SQL函数返回值。

2)Database buffer cache
数据高速缓用于存储从磁盘文件中读入的数据,为所有用户共享。
服务器进程(server process)将读入的数据保存在数据缓存区中,当后续的请求需要这些数据时可以在内存中找到,则不需要再从磁盘读取。
数据缓冲区中被修改的数据块(脏块)由后台进程DBWR将其写入磁盘。
数据缓冲区的大小对数据库的读取速度有直接的影响。
3)Redo log buffer
日志条目(redo entries)记录了数据库的所有修改信息(包括DML和DDL),为的是数据库恢复。日志条目首先产生于日志缓冲区。日志缓冲区。日志缓冲区较小,它是以字节为单位的,它极其重要。
查看大小:> show parameter log_buffer;

日志缓存的大小在启动后是固定的,不能通过SGA自动分配,需要调整的话只能通过修改参数文件然后重新启动生效,不能动态修改。
ALTER SYSTEM SET LOG_BUFFER = 1 SCOPE=SPFILE;
STARTUP FORCE

4) Large pool
为了进行大的后台进程操作而分配的内存空间,与shared pool 管理不同,主要用于共享服务器的session memory ,RMAN备份恢复以及并行查询等。
5) Java pool
为了JAVA 虚拟机及应用而分配的内存空间,包含所有session指定的JAVA代码和数据。
6)Streams pool
为了stream process 而分配的内存空间。stream 技术是为了在不同数据库之间共享数据。因此,它只对使用了stream 数据库特性的系统是重要的。

posted @ 2020-10-26 11:46  冬雪abc  阅读(164)  评论(0)    收藏  举报