Oracle初始化参数之memory_target

一、引言:

    Oracle 9i引入pga_aggregate_target,可以自动对PGA进行调整;

    Oracle 10g引入sga_target,可以自动对SGA进行调整;

    Oracle 11g则对这两部分进行综合,引入memory_target,可以自动调整所有的内存,这就是新引入的自动内存管理特性。

二、本文说明:

      操作系统:rhel 5.4 x32

      数据库:oracle 11g r2

三、memory_target的介绍:

    3.1、下面通过示例了解一下memory_target的设置与PGA和SGA关系:

SQL> show parameter memory_target;NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
memory_target                 big integer 316M
SQL> show sga;Total System Global Area  330600448 bytes
Fixed Size            1336344 bytes
Variable Size          247466984 bytes
Database Buffers       75497472 bytes
Redo Buffers            6299648 bytes
SQL> alter system set memory_target=200m scope=spfile;System altered.SQL> alter system set sga_target=0 scope=spfile;System altered.SQL> alter system set pga_aggregate_target=0 scope=spfile;System altered.SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.Total System Global Area  209235968 bytes
Fixed Size            1335528 bytes
Variable Size          201330456 bytes
Database Buffers        4194304 bytes
Redo Buffers            2375680 bytes
Database mounted.
Database opened.

    设置memory_target参数后,实际上Oracle会自动设置并调整一下两个参数来分配SGA和PGA的内存,这和Oracle 10g自动设置sga_target后分配db_cache_size和shared_pool_size的机制是一样的。

SQL> col ksppinm for a20;
SQL> col ksppstvl for a20;
SQL> select a.ksppinm name,b.ksppstvl value2     from x$ksppi a,x$ksppcv b3   where a.indx = b.indx4      and (a.ksppinm like '%sga_target%'5  or a.ksppinm like '%pga_aggregate_target%');NAME                                VALUE
-----------------------     -------------------
sga_target                           0
__sga_target                     142606336
pga_aggregate_target                 0
__pga_aggregate_target            67108864

    3.2、讨论一下11g中memory_target设置和不设置对SGA/PGA的影响:

    3.2.1、如果memory_target设置为非0值

      (下面有四种情况来对SGA和PGA的大小进行分配)

      3.2.1.1、sga_target和pga_aggregate_target已经设置大小

        如果Oracle中已经设置了参数sga_target和pga_aggregate_target,则这两个参数将各自被分配为最小值为他们的目标值。

        memory_target = sga_target + pga_aggregate_target,大小和memory_max_size一致。

      3.2.1.2、sga_target设置大小,pga_aggregate_target没有设置大小

        那么pga_aggregate_target初始化值=memory_target-sga_target

      3.2.1.3、sga_target没有设置大小,pga_aggregate_target设置大小

        那么sga_target初始化值=memory_target-pga_aggregate_target

      3.2.1.4、sga_target和pga_aggregate_target都没有设置大小

        Oracle 11g中对这种sga_target和pag_aggregate_target都没有设定大小的情况下,Oracle将对这两个值没有最小值和默认值。Oracle将根据数据库运行状况进行分配大小。但在数据库启动是会有一个固定比例来分配:

        sga_target = memory_target*60%

        pga_aggregate_target = memory_target*40%

    3.2.2、如果memory_target没有设置或 = 0(在11g中默认为0)

      11g中默认为0则初始状态下取消了memory_target的作用,完全和10g在内存管理上一致,完全向下兼容。(也有三种情况来对SGA和PGA的大小进行分配)

      3.2.2.1、sga_target设置值,则自动调节SGA中的shared pool,buffer cache,redo log buffer,java pool,larger pool等内存空间的大小。PGA则依赖pga_aggregate_target的大小。sga和pga不能自动增长和自动缩小。

      3.2.2.2、sga_target和pga_aggregate_target都没有设置

        SGA中的各组件大小都要明确设定,不能自动调整各组件大小。PGA不能自动增长和收缩。

      3.2.2.3、memory_max_target设置而memory_target = 0这种情况先和10g一样,不做说明。 

三、ORA-00845

    最后谈一下ORA-00845的由来和解决方案:

    如果memory_max_target/memory_target设置过大,可能导致instance无法启动,报ORA-00845错误。

[oracle@yft bin]$ oerr ora 00845
00845, 00000, "MEMORY_TARGET not supported on this system"
// *Cause: The MEMORY_TARGET parameter was not supported on this operating system or /dev/shm was not sized 
// *Action: Refer to documentation for a list of supported operating systems. Or, size /dev/shm to be at leacle instance running on the system.SQL> alter system set memory_max_target=400m scope=spfile;System altered.SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system

 这个错误有点误导,实际上这并不是说该平台版本上不支持AMM特性,只是设置的memory_max_target超过了系统中设置的share memory(/dev/shm)而已。

[oracle@yft bin]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
tmpfs                 395M     0  395M   0% /dev/shm

在Oracle 11g for linux中似乎是用了一种新的机制来管理共享内存段,而不是传统的sys /dev/shm了。在alert.ora中可以找到更准确的错误描述:

Mon Feb 25 12:13:21 2013
Starting ORACLE instance (normal)
WARNING: You are trying to use the MEMORY_TARGET feature. This feature requires the /dev/shm file system to be mounted for at least 419430400 bytes. /dev/shm is either not mounted or is mounted with available space less than this size. Please fix this so that MEMORY_TARGET can work as expected. Current available is 413466624 and used is 0 bytes. Ensure that the mount point is /dev/shm for this directory.
memory_target needs larger /dev/shm

 

 解决的办法之一是增加tmpfs文件系统的容量:

      修改/etc/fstab中tmpfs对应的行;将原来的tmpfs   /dev/shm  tmpfs defaults 0 0 改成tmpfs /dev/shm tmpfs default,size=1024M 0 0,这样tmpfs增大为1G,重新mount /dev/shm使之生效。

[root@yft ~]# vi /etc/fstab
tmpfs                   /dev/shm                tmpfs   defaults,size=420m        0 0[root@yft ~]# mount -o remount /dev/shm
[root@yft ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
tmpfs                 420M     0  420M   0% /dev/shmSQL> startup
ORACLE instance started.Total System Global Area  418484224 bytes
Fixed Size            1336932 bytes
Variable Size          406849948 bytes
Database Buffers        4194304 bytes
Redo Buffers            6103040 bytes
Database mounted.

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460538.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

充实你的素材库!10款免费的 PSD 素材下载

由于网页设计师没有时间来自己从零开始设计,所以在设计项目中使用网络上已有的设计素材是常见的方式。这就是为什么我们经常会到网上搜索可以免费下载的素材。 今天,我们这里有几套不同的免费的 PSD 素材分享给你,从 iPhone 样机到用户界面等…

Linux系统下的硬盘分区、格式化与挂载

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 参考内容 分区是什么意思_360问答 磁盘分区_360百科 挂载_360百科 fdisk对一个块设备进行分区_XZY028的博客-CSDN博客_块设备分区 怎么创建一个ramdisk块设备_XZY028的博客-CSDN博客 linux磁盘分区和挂载_苍…

position:fixed和scroll实现div浮动【示例】

前言 在自己建站的过程中,要实现一个div随滚动条浮动的效果,网上找了些示例不太好用,还是自己动手,丰衣足食,写的不好请大家谅解,毕竟我不是搞前端的,因为自己建站毕竟每一步都必须自己来&#…

HashMap vs ConcurrentHashMap — 示例及Iterator探秘

2019独角兽企业重金招聘Python工程师标准>>> 如果你是一名Java开发人员,我能够确定你肯定知道ConcurrentModificationException,它是在使用迭代器遍历集合对象时修改集合对象造成的(并发修改)异常。实际上,…

VMware虚拟机连不上移动硬盘或USB

解决方法: (1)打开虚拟机设置。 (2)选择USB控制器。 (3)USB兼容性选择USB3.0。 (4)重启。

拾遗----javascript一些实用方法

1、 join&#xff08;&#xff09; join() 方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。 var ids []; for(var i 0 ;i <array.length ; i){ ids.push(array[i].id); // 将多个id 加入…

谷歌浏览器跨域报错解决办法

谷歌浏览器跨域报错&#xff1a; 在浏览器属性设置一下就可以了。 最后&#xff0c;先打开浏览器&#xff0c;就可以了。 转载于:https://www.cnblogs.com/fanyun/p/4263363.html

如何对iNand进行分区?(fdisk命令的源码分析)

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 参考内容 硬盘分区、寻址和系统启动过程 - 走看看 x210&#xff1a;iNand分区情况_毛裤先生_2的博客-CSDN博客 Linux系统是如何识别硬盘设备和硬盘分区的&#xff1f; uboot之uboot中环境变量_雨于鱼的博客…

Unable to find the ncurses libraries or the required header files解决

问题&#xff1a; 解决方法: sudo apt-get install ncurses-dev 参考&#xff1a;Unable to find the ncurses libraries or the required header files解决 转载于:https://www.cnblogs.com/amanlikethis/p/3591353.html

iOS自动布局进阶用法

本文主要介绍几个我遇到并总结的相对高级的用法&#xff08;当然啦牛人会觉得这也不算什么&#xff09;。 简单的storyboard中上下左右约束&#xff0c;固定宽高啥的用法在这里就不做赘述了。 autolayout自动布局是iOS6以后出现的&#xff0c;但是在开始的一段时间里大家并不怎…

Windows系统与Linux系统下的硬盘分区操作

以下内容源于网络资源的学习与整理&#xff0c;如有其侵权请告知删除。 之前在uboot中利用fdisk命令对X210开发板的iNand进行分区时&#xff0c; 因为不小心在uboot中利用“fdisk -c 1”&#xff08;1对应着sd卡&#xff0c;0对应着iNand&#xff09;对sd卡也分区了&#xff…

您应该了解的 Windows Azure 网站在线工具

&#xfeff;&#xfeff;编辑人员注释&#xff1a;本文章由Windows Azure 网站团队的软件开发者 Amit Apple 撰写。 如果想要了解并亲身参与计算资源管理&#xff0c;那么您一定会很高兴得知这一消息&#xff1a;Windows Azure 网站现在提供一些非常有用的在线工具&#xff0c…

【自己给自己题目做】:如何在Canvas上实现魔方效果

最终demo -> 3d魔方 体验方法&#xff1a; 浮动鼠标找到合适的位置&#xff0c;按空格键暂停选择要翻转的3*3模块&#xff0c;找到相邻两个正方体&#xff0c;鼠标点击第一个正方体&#xff0c;并且一直保持鼠标按下的状态直到移到第二个正方体后放开&#xff0c;比如下图&…

彻底搞懂硬盘相关的概念

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 参考博客 硬盘结构&#xff08;机械硬盘和固态硬盘&#xff09;详解 简单理解磁盘结构_Guanngxu的博客-CSDN博客_磁盘的结构 硬盘基础知识_Forskamse的博客-CSDN博客 硬盘知识笔记整理_落子摘星的博客-CSDN…

windows修改远程桌面RDP连接数

windows 2003在默认情况下最多只允许两个用户进行远程终端连接&#xff0c;当达到两个远程桌面连接的到时候&#xff0c;再有人尝试连接&#xff0c;就会提示已经达到最大终端数&#xff0c;无法连上了。 一、windows2003终端连接数修改 1.1终端服务安装和连接数设置 导读&…

ubuntu下数据库的导入导出

2019独角兽企业重金招聘Python工程师标准>>> 一.导出远程数据库 例如 sudo mysqldump -h 172.16.1.211 -u haha -p123 -P3307 app>app.sql 二.导入.sql文件的 到数据库 1.create database xxx(创建一个名称是xxx的数据库) 2. use xxx(切换到该数据库下) 3. sou…

烧录文件、复制文件有什么区别?

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 参考内容 镜像数据烧录和复制粘贴有什么区别&#xff1f;用 rufus 将镜像烧录到 U 盘和直接复制粘贴 把程序烧入设备和把程序复制到设备的linux系统中有什么区别&#xff1f; - 知乎 前言 之前思考过&#…

php中preg_match用户名正则实例

例子,字母、数字和汉字 代码如下复制代码 if(preg_match("/[ .,:;*?~!#$%^&)(<>{}]|]|[|/|\|"||/",$user)){ echo 不要在名字里面整些特殊符号&#xff0c;请只使用字母、数字和汉字&#xff0c;当然要你的浏览器要选简体中文GB2312哟&#xff0c;千…

MBR分区表的简介

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 参考内容 &#xff08;1&#xff09;S5PV210 Uboot开发与移植01&#xff1a;Uboot概述_麦兜的学习笔记的博客-CSDN博客 &#xff08;2&#xff09;Linux系统下的硬盘分区、格式化与挂载_天糊土的博客-CSD…

Heartbeat

Heartbeat心跳信息传递&#xff1a;UDP UnicastUDP MulticastUDP broadcastSerial Cable组播地址用于标识一个IP组播域。IANA(internet assigned number authority)把D类地址空间分配给IP组播&#xff1b;其范围是从224.0.0.0至239.255.255.255。永久组播地址&#xff1a;224.0…