Oracle内存参数配置及版本问题

Oracle的内存配置与Oracle性能息息相关。从总体上讲,可以分为两大块:共享部分(主要是SGA)和进程独享部分(主要是PGA)。在 32 位操作系统下 的Oracle版本,不时有项目反馈关于内存的错误(如ORA-04030、04031错误)都是十分令人头疼的问题。查阅资料了解到,ORA-04030的问题一般是PGA过度分配造成的(对应的操作是sort/hash_join)。在Oracle中pga_aggregate_target指定了所有session总共使用的最大PGA上限。经测试验证,32位Oracle版本使用的物理内存保持在 1.6G以下为佳(SGA+PGA),超过 1.7G左右系统开始不稳定,推荐的内存配置为:SGA=1200M,PGA=360M;

调整内存参数的命令示例如下:

alter system set sga_max_size=1200M scope=spfile;
alter system set sga_target=1200M scope=spfile;
alter system set pga_aggregate_target=360M scope=spfile;

另外,建议使用的Oracle版本:10.2.0.5、11.2.0.3/4;对于64位版本,建议先把20%的内存留给操作系统,剩余80%分配给Oracle(其中SGA=物理内存*80%*80%,PGA=物理内存*80%*20%)。

曾经在多个项目上发现过奇怪的现象,一个较复杂的SQL,直接执行或查看执行计划,操作系统中可以看到CPU立刻飙到99%,而且即使等待很长时间(比如2分钟,对于一个各表数据量小于10K的查询,哪怕都走全表扫描也应该执行完的,2分钟实在是太久了),CPU也不会降下来,SQL命令也无法正常结束,只能强制终止该会话或Oracle进程。该SQL访问的所有表的数据量都不是很大(小于10K),更新统计信息等都没有效果。我分别在Windows和Linux平台下的测试环境验证过,问题都能够重现,当然如果将SQL脚本简化也能解决,但没有明显的规律、规则,感觉应该是Oracle的bug,最后都是通过升级到最新版本解决的。

如分页SQL脚本(MV_118_CTLIST_03为视图):

SELECT MV_118_CTLIST_03."CTLIST_Name"
    , MV_118_CTLIST_03."CTLIST_Depart_LSBMZD_BMMC"
    , MV_118_CTLIST_03."CTLIST_Value"
    , MV_118_CTLIST_03."CTLIST_Handler_LSZGZD_ZGXM"
    , QRY_WORKITEM.STARTEDDATE
    , QRY_WORKITEM.COMPLETEDDATE
    , QRY_WORKITEM.PROCESSINSTANCEID
    , QRY_WORKITEM.ACTIVITYDEFINITIONID
    , QRY_WORKITEM.PROCESSDEFINITIONID
    , QRY_WORKITEM.ActivityInstanceId
    , QRY_WORKITEM.WORKITEMID
    , QRY_WORKITEM.WORKTYPE
FROM QRY_WORKITEM
    JOIN MV_118_CTLIST_03 ON ROOTPROCINSTID = MV_118_CTLIST_03."CTLIST_SPID"
    JOIN (SELECT PK
          FROM (SELECT PK, rownum rowNumber
                FROM (SELECT WORKITEMID AS PK
                      FROM QRY_WORKITEM
                          JOIN MV_118_CTLIST_03 ON ROOTPROCINSTID = MV_118_CTLIST_03."CTLIST_SPID"
                      WHERE QRY_WORKITEM.Participant = ‘5b181b7c-8ea8-45a5-b35d-a90aed0725dc‘
                        AND QRY_WORKITEM.State = ‘2‘
                        AND QRY_WORKITEM.BIZPROCID = ‘0fad699e-a787-4fb6-bbff-8d3382f6d37f‘
                      ORDER BY STARTEDDATE)
                WHERE rownum <= 20)
          WHERE rowNumber >= 1) tblPK ON workitemid = tblPK.PK
WHERE QRY_WORKITEM.Participant = ‘5b181b7c-8ea8-45a5-b35d-a90aed0725dc‘
    AND QRY_WORKITEM.State = ‘2‘
    AND QRY_WORKITEM.BIZPROCID = ‘0fad699e-a787-4fb6-bbff-8d3382f6d37f‘
ORDER BY STARTEDDATE
 
时间: 2024-10-23 20:01:39

Oracle内存参数配置及版本问题的相关文章

Oracle Study之案例--安装Oracle内核参数配置

Oracle Study之案例--安装Oracle内核参数配置 在Linux系统下,安装Oracle之前,除了检查操作系统的硬件和软件是否满足安装需要之外,一个重点就是修改内核参数,其中最主要的是和内存相关的参数设置. 案例分析: 查看当前系统的内核参数配置: [[email protected] ~]# sysctl -p net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.acce

Oracle 内存参数调优设置

Oracle 数据库系统中起到调节作用的参数叫初始化参数,数据库管理员根据实际情况需要适当调整这些 初始化参数以优化Oracle系统. 1 主要系统参数调优介绍 2 系统内存参数的分配 2.1 Oracle 实例= 内存结构 + 进程结构 内存结构 = SGA + PGA SGA(系统全局区): 用户存储数据库信息的内存区,该区域为数据库进程所共享.它包含服务器的数据和控制信息,主要包含高速数据缓冲区.共享池.重做日志缓存区.Java池,大型池等内存结构. SGA的设置,理论上SGA的大小应该占

MySQL性能优化-内存参数配置

Mysql对于内存的使用,可以分为两类,一类是我们无法通过配置参数来配置的,如Mysql服务器运行.解析.查询以及内部管理所消耗的内存:另一类如缓冲池所用的内存等. Mysql内存参数的配置及重要,设置不当很有可能会造成很大的性能问题甚至是服务器宕机,内存相关参数的配置需要考虑以下两点: (1)确定可以使用的内存上限: (2)确定Mysql每个连接使用的内存: 在Mysql的体系中(如下图所示),简单来说可以分为两层,第一层代表各种可以用过Mysql连接协议连接到Mysql的客户端,例如PHP.

修改oracle内存参数

Linux主机16g内存,修改oracle数据库内存参数: 1.编辑/etc/fstab文件:针对tmpfs行将defaults改成defaults,size=12g(千万注意格式,不能出现错误) 修改贡献内存参数后,reboot重启服务器. 2.sqlplus登录oracle数据库,备份参数文件: 以下语句备份参数文件(必须): SQL>create pfile='/u01/app/oracle/pfile20161625.ora' from spfile; 3.Show parameter

weblogic端口号修改和内存参数配置

1 端口号修改 如图 是详细路径 注:我用的weblogic版本是10.3 当刚创建完域的时候这个配置文件下没有Listen-port参数  第一次去控制台修改端口后就这个参数了

oracle 内存参数示意图

jvm的内存分布,参数配置 和 GC处理机制

转载 url: http://blog.csdn.net/ning109314/article/details/10411495 url:http://www.cnblogs.com/sunada2005/p/3577799.html url:http://www.open-open.com/lib/view/open1437834571349.html url:http://www.cnblogs.com/redcreen/archive/2011/05/04/2037056.html url

Weblogic内存溢出及常用参数配置

    http://www.360doc.com/content/14/0306/14/16134804_358216319.shtml 一.WebLogic内存溢出 最近访问量门户访问量突然增大,总是内存溢出,频繁宕机,调整了很多参数没起作用,偶然发现Weblogic域在不断增大,罪魁祸首竟然是Weblogic的诊断文件,也是造成Weblogic内存溢出的主要原因.当Weblogic启动时就加载了每个Server上的诊断文件,占用了大部分内存分配,用户访问量越大这个文件也随之越大,将他删除后

配置Tomcat-8.5.15 JVM内存参数

配置Tomcat-8.5.15内存参数 apache-tomcat-8.5.15与之前的版本存在些许差异,配置方式有所改变,并且针对JVM一些参数不再支持.故本文档主要简介一下如何在apache-tomcat-8.5.15容器上配置JVM内存参数. 1.       创建环境变量文件 在%TOMCAT_HOME%\bin\目录下创建文件setenv.bat, 文件内容如下所示: SET JAVA_OPTS=-server  -Xms4g  -Xmx4g 或者内容为: SET  "JAVA_OPT