MyException - 我的异常网
当前位置:我的异常网» 数据库 » 关于Oracle的内存有关问题

关于Oracle的内存有关问题

www.MyException.Cn  网友分享于:2015-08-26  浏览:0次
关于Oracle的内存问题

Oracle中内存结构主要包括两大类分别是SGA和PGA,其中SGA代表的是系统全局区,PGA代表程序全局区。

Oracle内存主要存储的有执行程序代码(PL/SQL,JAVA);关于已经连接的会话的信息,包括当前所有活动和非活动会话;程序运行时必须的相关信息;例如查询计划;Oracle进程之间共享的信息和相互交流的信息,例如锁;程序运行期间所需要的数据以及存储在外存储上的缓冲信息等。

内存是数据库体系结构中非常重要的一部分,也是影响数据库性能的主要因素之一。在数据库运行时,内存主要用于存储各种信息。按照系统对内存的使用方法不同,Oracle数据库的内存主要可以分为以下的五种结构,分别是系统全局区(SGA),程序全局区(PGA),排序区(SORT AREA)大池(LARGE POOL)以及java池(JAVA POOL)。

1系统全局区(SGA)

  系统全局区(SGA)有一组内存结构组成,是所有的用户进程共享的一块内存区域。其中可以包含一个数据库实例的数据和控制信息。在一个数据库实例中,可以有多个用户进程,这些用户进程可以共享系统全局区中的数据,因此系统全局区又称为共享全局区。

系统全局区(SGA)的总内存大小由参sga_max_size决定,通过使用SHOW PARAMETER语句可以查看该参数的信息,如下:

SQL> SHOW PARAMETER SGA_MAX_SIZE;

NAME                         TYPE                  VALUE

----------------------------------------------- ------------------------------

sga_max_size             big integer         2432M

系统全局区(SGA)按照不同的作用可以分为:数据缓冲区,日志缓冲区和共享池。

(1) 数据缓冲区

数据缓冲区主要存放最近访问的数据块信息,当用户向数据库请求数据时,如果所需的数据已经位于数据缓冲区,则Oracle将直接冲数据缓冲区中提取数据并返回给用户,而不必再从数据文件中读取数据。数据缓冲区的大小由参数db_cache_size决定,可以通过SHOW PARAMETER语句查看该参数的信息,如下:

SQL> SHOW PARAMETER DB_CACHE_SIZE;

NAME                            TYPE               VALUE

-------------------------------------------------------------- ----------

db_cache_size              big integer         0

(2) 日志缓冲区

(3) 日志缓冲区用于存储数据的修改操作信息。当日志缓冲区

(4) 的日志数据达到一定限度时,由日志写入进程LGWR将日志写入磁盘的日志文件。日志缓冲区的大小由参数log_buffer决定,通过SHOW  PARAMETER语句查看参数的信息,如下:

SQL> SHOW PARAMETER LOG_BUFFER;

NAME                       TYPE             VALUE

----------------------------------------------- ----------------- ----------

log_buffer                 big integer        12896K

(3)共享池

共享池是对sql语句和PL/SQL程序进行语法分析,编译和执行的内存区域,用于保存最近执行的SQL语句,PL/SQL程序的数据字典信息。

共享池主要包括三种缓存分别是:库缓存,数据字典缓存和用户全局区。其中库缓冲白村sql语句的分析代码和执行计划;数据字典缓冲区保存数据字典中得到的表,列定义和权限;用户全局区保存用户的会话信息。

共享池的大小由参数shared_pool_size决定,可以通过show parameter语句查询该参数的信息,如下:

SQL> SHOW PARAMETER SHARED_POOL_SIZE;

NAME                                  TYPE         VALUE

----------------------------------------------- ----------------------

shared_pool_size                big integer     0

2.程序全局区(PGA)

程序全局区包含单个用户或服务器数据和控制信息,是Oracle系统分配给一个进程的私有内存区域。其在用户进程连接到Oracle数据库并创建一个会话时,由Oracle自动分配。程序全局区的大小由参数pga_aggregate_target决定,可以通过show parameter语句查询该参数的信息,如下:

SQL> SHOW PARAMETERPGA_AGGREGATE_TARGET;

NAME                                    TYPE         VALUE

----------------------------------------------- -------

pga_aggregate_target           big integer    807M

3.排序区

排序区是Oracle系统为排序操作所产生的临时数据提供的内存空间。实际上,在Oracle中,存放用户排序操作所产生的临时数据的区域有两个分别是内存排序区和磁盘临时段。

  当进行排序操作时,Oracle系统会优先使用内存排序区进行排序,如果内存空间不够,才会使用磁盘临时段进行排序。

排序区的大小由参数sort_area_size决定,通过SHOW PARAMETER语句查询该参数的信息,如下:

SQL> SHOWPARAMETER SORT_AREA_SIZE;

NAME                            TYPE      VALUE

----------------------------------------------- --------

sort_area_size                     integer    65536

4.大型池

大型池是系统全局区中可选的一个内存结构,用于提供一个大的缓冲区供数据库的备份与恢复操作使用。大型池的大小由参数large_pool_size决定,通过SHOW PARAMETER语句查询该参数的信息,如下:

SQL> SHOWPARAMETER LARGE_POOL_SIZE;

 

NAME                                 TYPE         VALUE

----------------------------------------------- --------

large_pool_size                 big integer      0

5.java池

Java池,用于在数据库中支持java的运行。例如使用java编写一个存储过程,这时Oracle通过java的虚拟机就会使用java池来处理用户会话中的java存储过程。其大小由参数java_pool_size决定,通过SHOW PARAMETER语句查询该参数的信息,如下:

SQL> SHOWPARAMETER JAVA_POOL_SIZE;

NAME                                    TYPE         VALUE

----------------------------------------------- ----------- ----------- ----------- ----

java_pool_size                       big integer        0

文章评论

10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
老程序员的下场
老程序员的下场
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
代码女神横空出世
代码女神横空出世
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
鲜为人知的编程真相
鲜为人知的编程真相
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
总结2014中国互联网十大段子
总结2014中国互联网十大段子
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
程序员都该阅读的书
程序员都该阅读的书
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
中美印日四国程序员比较
中美印日四国程序员比较
旅行,写作,编程
旅行,写作,编程
为什么程序员都是夜猫子
为什么程序员都是夜猫子
那些争议最大的编程观点
那些争议最大的编程观点
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
程序员的鄙视链
程序员的鄙视链
我是如何打败拖延症的
我是如何打败拖延症的
漫画:程序员的工作
漫画:程序员的工作
我的丈夫是个程序员
我的丈夫是个程序员
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
编程语言是女人
编程语言是女人
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
如何成为一名黑客
如何成为一名黑客
每天工作4小时的程序员
每天工作4小时的程序员
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
 程序员的样子
程序员的样子
10个调试和排错的小建议
10个调试和排错的小建议
程序员必看的十大电影
程序员必看的十大电影
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有