当前位置:  数据库>oracle

关于Oracle的内存问题

    来源: 互联网  发布时间:2017-06-14

    本文导语: Oracle中内存结构主要包括两大类分别是SGA和PGA,其中SGA代表的是系统全局区,PGA代表程序全局区。 Oracle内存主要存储的有执行程序代码(PL/SQL,JAVA);关于已经连接的会话的信息,包括当前所有活动和非活动会话;程序运行时...

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


    
 
 

您可能感兴趣的文章:

  • Oracle 监听内存泄露问题
  • fedora10安装oracle11g提示物理内存不足怎么办?
  • 通过进程id号知道一个Oracle会话所占用的内存
  • ■帮一个朋友维护网站,oracle运行半小时就自动锁死,用top发现是其狂吃内存,直到吃完为止。怎么办啊
  • Linux操作系统下Oracle数据库多实例启动方式及修改内存
  • 我准备装linux 7.3,大家能给点意见吗,我1GB的内存,那么交换区设多大? oracle9i能在7.3上通过吗?
  • Oracle安装过程中物理内存检查及临时temp空间不足问题解决
  • 读一个10M的txt文件到Oracle数据库中,用C实现,请问有什么好的方法吗?即不怎么占内存,又不怎么占Cpu!
  • 甲骨文宣布推出Oracle内存数据库11g
  • Oracle内存数据库11g和高速缓存11g上市
  • Oracle Siebel Option Pack for IE ActiveX控件内存初始化漏洞
  • Oracle专用服务器的内存结构分布原则
  • 问一个简单的问题,我装了oracle 8.05,我并没有发有发现JDBC这个目录,是不是我要下载jdbc for oracle。
  • Linux下的Oracle安装问题(非常问题)
  • Oracle 10g中导出到Oracle 9的问题小结
  • oracle JDBC的问题
  • Suse linux使用oracle问题
  • 请教: Javaswing 和 Oracle JDBC thin 连接的问题
  • oracle版本问题
  • 关于oracle的一个恼火的小问题!
  • Javabeen+oracle的问题
  • 安装ORACLE的问题
  • 再问java 连接oracle 问题,急!
  • Oracle乱码问题
  • oracle环境变量保存问题求教
  • Oracle高级官员回答Sun雇员的问题
  • 请问一个oracle的jdbc问题
  • Jsp连接Oracle的问题 ???
  • oracle的job不能运行问题的解决方法
  • 请教JSP与ORACLE连接问题。
  • JAVA连接ORACLE问题(100分)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,