本教程操作环境:Windows7系统、Oracle 11g版、Dell G3电脑。
内存结构是oracle数据库最重要的组成部分之一,在数据库中的操作或多或少都会依赖到内存,是影响数据库性能的重要因素Oracle数据库中包括3个基本的内存结构:
下面给大家介绍一些内存结构中的sga。
oracle sga简介
sga全称“System Global Area”,中文意思为“系统全局区”,是ORACLE为实例分配的一组共享缓冲存储区,主要用于存放数据库数据和控制信息,该信息为数据库进程所共享(PGA不能共享的),以实现对数据库数据的管理和操作。
它包含Oracle 服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。
SGA是一组共享内存结构, 被所有的服务和后台进程所共享。当数据库实例启动时,系统全局区内存被自动分配。当数据库实例关闭时,SGA内存被回收。 SGA是占用内存最大的一个区域,同时也是影响数据库性能的重要因素。
查询SGA区的情况:
SQL> show SGA Total System Global Area 3290345472 bytes Fixed Size 2217832 bytes Variable Size 1795164312 bytes Database Buffers 1476395008 bytes Redo Buffers 16568320 bytes SQL> select * from v$sga; NAME VALUE -------------------- ---------- Fixed Size 2217832 Variable Size 1795164312 Database Buffers 1476395008 Redo Buffers 16568320
登录后复制
-
Fixed Size表示固定区域,存储SGA各个组件的信息。不能修改大小。
-
Variable Size表示可变区域,比如共享池、java池、大池等。
-
Database Buffers表示数据库高速缓冲区。
-
Redo Buffers表示日志缓冲区。
SGA主要包括:
系统全局域SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。
1、共享池(shared pool) :用来存储最近执行的SQL语句和最近使用的数据字典的数据。
它主要由两个内存结构构成:Library cache和Data dictionary cache
修改共享池的大小:ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;
Library Cache缓存被执行的SQL和PL/SQL的相关信息,即存放SQL语句的文本,分析后的代码及执行计划。实现常用语句的共享,使用LRU算法进行管理,由以下两个结构构成:Shared SQL area、Shared PL/SQL area;
Data Dictionary Cache缓存被使用的数据库定义,即存放有关表、列和其它对象定义及权限。它包括关于数据库文件、表、索引、列、用户、权限以及其它数据库对象的信息。在语法分析阶段,Server Process访问数据字典中的信息以解析对象名和对存取操作进行验证。数据字典信息缓存在内存中有助于缩短响应时间。
2、数据缓冲区 (database buffer cache):用来存储最近从数据文件中读写过的数据。
在数据高速缓冲区中存放着Oracle系统使用过的数据块(即用户的高速缓冲区),当把数据写入数据库时,它以数据块为单位进行读写,当数据高速缓冲区填满时,则系统自动去掉一些不常被用户访问的数据。如果用户要查的数据不在数据高速缓冲区时,Oracle自动从磁盘中去读取。数据高速缓冲区包括三个类型的区:
1) 脏数据区(Dirty Buffers):包含有已经改变过并需要写回数据文件的数据块。
2) 自由区(Free Buffers):没有包含任何数据并可以再写入的区,Oracle可以从数据文件读数据块该区。
3) 保留区(Pinned Buffers):此区包含有正在处理的或者明确保留用作将来用的区。
3、重作日志缓冲区(redo log buffer):用来记录服务或后台进程对数据库的操作。
主要用于恢复其中的每一项修改记录都被称为redo 条目。利用Redo条目的信息可以重做修改。
另外在SGA中还有两个可选的内存结构:
4、Java池(Java Pool): 用来存储Java代码。
5、大型池(Large Pool): 用来存储不与SQL直接相关的大型内存结构。备份、恢复使用。
推荐教程:《Oracle教程》
以上就是oracle sga是什么的详细内容,更多请关注风君子博客其它相关文章!