查看SGA有关的系统参数即介绍

SQL> show parameter sga

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE 该参数被设为true时,整个SGA将会被锁定在物理内存中,可避免部分SGA分配到到虚拟磁盘中,可以提高效率。该参数是静态的
pre_page_sga boolean FALSE 设为true时,整个SGA会被读入到物理内存中,增加了所需要的物理内存和实例启动时间,但会提高系统的效率。该参数是静态的。
sga_max_size big integer 1600M 所有内存缓冲区的总和不能超过这一参数所定义的值,该参数是静态的,即修改spfile中该参数的值,需要重启数据库才能生效。
sga_target big integer 0 主管SGA的自动管理,Oracle称之为自动共享内存管理,ASMM
查看重做日志缓冲区的大小
在DML很频繁的事物处理数据库系统时,可能就需要修改该参数的值。
SQL> show parameter log_buffer

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_buffer integer 6782976 单位是字节

调整log_buffer为10M,然后重启数据库生效。

SQL> select 10*1024*1024  from dual;

10*1024*1024
------------
10485760 SQL> alter system set log_buffer = 10485760 scope = spfile; --该参数只接受字节单位 System altered

调整sga_max_size,lock_sga,pre_page_sga的值。

SQL> alter system set sga_max_size = 4G scope=spfile;
SQL> alter system set lock_sga = true scope = spfile;
SQL> alter system set pre_page_sga = true scope = spfile;

注意:这四个静态参数修改一定的加上scope = spfile,并且需要重启才能生效。

使用ASSM功能

怎么才能使用ASSM功能呢? sga_target为非零的值,并且statistics_level的值为TYPICAL或者ALL。

SQL> alter system set sga_target = 512M;     ---调整sga_target的大小

System altered

SQL> show parameter statistics_level         --查看值,默认是TYPICAL

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
statistics_level string TYPICAL

启用ASMM后内存缓冲区的大小将由Oracle自动进行管理,例如下面的参数:db_cache_size,java_pool_size ,shared_pool_size,并接他们的值自动设置为零。

重启后发现错误

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORA-00844: Parameter not taking MEMORY_TARGET into account
ORA-00851: SGA_MAX_SIZE 4294967296 cannot be set to more than MEMORY_TARGET 1677721600.

查阅资料得知:memory_target 是oracle11g用于自动内存管理的,它与memory_max_target是成对出现的,是11g内存管理上的新特 性,这一特性的出现使得 pga+sga做为整体内存使用被一致的纳入自动管理范畴。简而言之memory_target就是整个实例所能使用的内存大小, 包括PGA和SGA的 整体大小,在MEMORY_TARGET的内存大小之内,PGA和SGA所用的内存可以根据当前负载情况自动相互转换。 

如果当初始设定的MEMORY_TARGET的内存不够当前数据库使用的时候,Oracle11g还提供了另外一个初始化参 数 MEMORY_MAX_TARGET,当原始设定的内存不够使用的时候,可以手工来动态 调节MEMORY_TARGET的大小,但是不允许超过 MEMORY_MAX_TARGET的值。  

由此可见sga的尺寸是不能大于memory_target的。所以我们要调整memory_target和memory_max_target的值高于sga_max_size。

下面是解决改错误的方法:
1. create pfile='D:\temp\pfile20150115.txt' from spfile; 2.修改pfile20150115.txt中的memory_target=1669332992成memory_target=5368709120。 3.在D:\app\zy\product\11.2.0\dbhome_1\database下找到SPFILEMYDEV.ORA,并将其备份成SPFILEMYDEV.ORA20160402. 4.创建新的动态参数文件: SQL>  create spfile from pfile='D:\temp\pfile20150115.txt'; 5.启动数据库,OK,问题得到解决。 再次启动又出现报错:
SQL> startup
ORA-00847: MEMORY_TARGET/MEMORY_MAX_TARGET and LOCK_SGA cannot be set together

原来是lock_sga把整个内存锁住,如果memory_target和memory_max_target都设置了,锁定哪个值呢?所以只能有一个,回过头再把spfile中的lock_sga给关掉。

SQL> show parameter sga

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean TRUE
sga_max_size big integer 4G
sga_target big integer 512M
总结一下,以后调整sga的顺序是,先调整tmpfs的大小,再调整MEMORY_TARGET 的大小,最后调整sga,保证tmpfs>MEMORY_TARGET >sga+pga

SGA内存的优化的更多相关文章

  1. phpexcel 内存溢出 优化

    最近我们公司的项目的在导出excel的时候偶尔出现内存溢出错误,经过测试发现当数据量大于5000条就出现这个问题(默认php.ini memory 是128M) Allowed memory size ...

  2. android app性能优化大汇总(内存性能优化)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上 ...

  3. mysql大内存高性能优化方案

    mysql优化是一个相对来说比较重要的事情了,特别像对mysql读写比较多的网站就显得非常重要了,下面我们来介绍mysql大内存高性能优化方案 8G内存下MySQL的优化 按照下面的设置试试看:key ...

  4. Tomcat 内存与优化篇

    Tomcat 内存与优化一.Tomcat 运行环境介绍 1.Tomcat 本身无法直接在计算机上运行,需要依赖硬件基础上的操作系统和Java虚拟机: 2.Java 程序启动时JVM都会分配一个初始内存 ...

  5. Android 内存泄漏优化汇总

    android内存泄漏优化摘要 博客分类: android android内存溢出OutOfMemoryError . android移动应用程序的内存分配一般是8凯瑟琳约,不正确地假定处理内存处理非 ...

  6. Flex内存泄露解决方法和内存释放优化原则

    Flex内存泄露解决方法和内存释放优化原则 你对Flex内存泄露的概念是否了解,这里和大家分享一下Flex内存释放优化原则和Flex内存泄露解决方法,希望本文的介绍能让你有所收获. Flex内存释放优 ...

  7. WebRTC 源码分析(四):VideoCRE 与内存抖动优化

    WebRTC 是个宝,初窥这部分代码时就被它的 Capturer 类的设计惊艳到了,仔细品鉴后越发佩服起来,里面简直填了太多坑了,如此宝贝,如不能为我所用,岂非一大憾事!而前三篇的解读,正是为了今天能 ...

  8. Chrome V8系列--浅析Chrome V8引擎中的垃圾回收机制和内存泄露优化策略

    V8 实现了准确式 GC,GC 算法采用了分代式垃圾回收机制.因此,V8 将内存(堆)分为新生代和老生代两部分. 一.前言 V8的垃圾回收机制:JavaScript使用垃圾回收机制来自动管理内存.垃圾 ...

  9. [转帖]美团在Redis上踩过的一些坑-4.redis内存使用优化

    美团在Redis上踩过的一些坑-4.redis内存使用优化 博客分类: 运维 redis redisstringhash优化segment-hash  转载请注明出处哈:http://carlosfu ...

随机推荐

  1. C10K问题及解决方案

    转载自:http://blog.csdn.net/wangtaomtk/article/details/51811011 1 C10K问题 大家都知道互联网的基础就是网络通信,早期的互联网可以说是一个 ...

  2. iOS导航栏背景,标题和返回按钮文字颜色

    在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更改导航栏的背景和文字Col ...

  3. Maven学习之(二)Maven插件创建项目

    现在这里是已经在eclipse上成功的安装了Maven的插件后的操作,简单的创建一个项目, 同时实现Maven功能. 前提条件: 1.JDK 2.maven安装好 3.eclipse上maven插件安 ...

  4. tmpx75 I2C 温度传感器驱动程序添加

    在kernel 内 make menuconfig 加入相关选项 Device Drivers ---> <*> Hardware Monitoring support ---> ...

  5. inux内存映射和共享内存理解和区别

    可以看到内存映射中需要的一个参数是int fd(文件的标识符),可见函数是通过fd将文件内容映射到一个内存空间, 我需要创建另一个映射来得到文件内容并统计或修改,这时我创建这另一个映射用的仍是mmap ...

  6. HTML文档的经常使用标记

    一.HTML文档中经常使用的标记有文字标记.段落标记.列表标记.超链接标记.图像标记.表格标记.框架标记和多媒体标记,以下对这些经常使用标记进行介绍: 1.文字标记:文字是网页重要的组成部分之中的一个 ...

  7. MongoDB自动删除过期数据--TTL索引

      前序: 由于公司业务需求,对于3个月前的过期数据需要进行删除动作,以释放空间和方便维护 本来想的是使用crontab写个脚本定时执行,但是看到Mongo本身就有自动删除过期数据的功能,所以还是用一 ...

  8. EXTJS入门教程及其框架搭建

    EXTJS是一个兼容AJAX的前台WEB UI的框架,在普通的HTML文件的 BODY 元素中无须写任何HTML代码,就能产生相应的表格等元素. 首先是为每一个页面定义一个类,再以EXTJS的规范格式 ...

  9. 【转】 web 测试使用的chrome插件

    1.二维码插件 https://chrome.google.com/webstore/detail/%E4%BA%8C%E7%BB%B4%E7%A0%81qr%E7%A0%81%E7%94%9F%E6 ...

  10. 关于Unity中UI中的RawImage节点以及制作地图滚动效果

    一.贴图的Texture Type属性类型 Texture:会把贴图的大小转换为最相近的2的n次方,比如400X1369会转换为512X1024. Sprite 2D:是贴图的原始大小. 二.RawI ...