客户生产系统,AIX oracle 11.2.0.4 数据库版本,2节点RAC。

操作系统内存,均为125G,调整前,使用oracle memory_target自动调整分配方式,memory_max_target大小80G大小,但是shared pool大小为21G。

客户之前存在内存不够用(由于客户应用问题,导致几乎所有的SQL都需要重新硬解析,最终导致oracle shared pool大小不断变大、异常增长),导致数据库shutdown的情况,因此客户想调整oracle内存的分配方式。

本次采用治标方法:将oracle内存限制,从memory_target自动管理分配方式,进行降级使用oracle automatic shared memory management,及sga/pga分别自动管理。

一、从AMM调整为ASMM

1)查询操作系统内存大小
# svmon -G -O unit=GB
Unit: GB
-------------------------------------------------------------------------------
size inuse free pin virtual available
memory 125.22 18.2 107.06 5.74 17.4 107.05
pg space 16.0 0.05 work pers clnt other
pin 2.04 0.13 3.57
in use 17.4 0.73 # svmon -G -O unit=GB
Unit: GB
-------------------------------------------------------------------------------
size inuse free pin virtual available
memory 125.00 102.58 22.4 19.7 77.9 43.0
pg space 16.0 0.21 work pers clnt other
pin 16.0 0.13 3.57
in use 77.9 24.7
根据操作系统内存大小,进行比例分配。本次采用sga=64 /pga=24G不变大小,操作系统预留37G
2)关闭memory_target,使用oracle sga/pga分别自动管理
alter system set memory_max_target= scope=spfile;
alter system set memory_target= scope=spfile;
alter system set sga_max_size=64G scope=spfile;
alter system set sga_target=64G scope=spfile; pga_aggregate_target big integer 24G

3)发现一个问题,关闭节点2所在数据库,重启节点1所在数据库报错
ORA-00843: Parameter not taking MEMORY_MAX_TARGET into account
ORA-00849: SGA_TARGET 10737418240 cannot be set to more than MEMORY_MAX_TARGET 0.
本次采用的方式是一种较危险的操作,如果不熟悉oracle 参数文件管理方式,
建议使用文档后续学习的mos建议,blog链接方法

4)创建pfile参数文件,手工注释memory这两个oracle内存参数
#备份
create pfile='/tmp/20190125_node2.ora' from memory;
create pfile='/tmp/20190125_spfile_node2.ora' from spfile;
#拷贝编辑
cp /tmp/20190125_spfile_node2.ora /tmp/new_pfile.ora
注释new_pfile文件中的两个memory_target内存参数
SQL> show parameter pfile
NAME VALUE
------------------------------------ ----------- ------------------------------
spfile +DATANEWDG/dbcnr/parameterfile/spfile.ora
5)根据之前查询到的内容,重新覆盖生成最新的pfile文件,启动数据库即可(rac环境,使用所有的参数需要指明路径,以免出错)
create spfile='+DATANEWDG/dbcnr/parameterfile/spfile.ora' from pfile='/tmp/new_pfile.ora';

二、学习mos/blog搜索学习

MOS

ORA-, ORA- When Trying To Change SGA_TARGET With MEMORY_MAX_TARGET= Being Active (文档 ID 1397761.1)
Oracle Database - Enterprise Edition - Version 11.1.0.6 and later SYMPTOMS
When trying to set SGA_TARGET using an ALTER SYSTEM command, the following errors are raised: ORA-: Parameter not taking MEMORY_MAX_TARGET into account
ORA-: SGA_TARGET cannot be set to more than MEMORY_MAX_TARGET . CHANGES
MEMORY_MAX_TARGET was set to . CAUSE
The problem is caused by the MEMORY_MAX_TARGET parameter explicitly being set to . In case AMM should not be used, MEMORY_MAX_TARGET should not be set at all. SOLUTION
The solutions to the problem are:
1.0 本次使用的是方法1
create a PFILE from the SPFILE being used and remove the MEMORY_MAX_TARGET= and MEMORY_TARGET= lines.
After that, use the modified PFILE to create a new SPFILE and start the instance with this new setup.

2.0 另一种方式是通过参数rest重置清空参数(如果是隐含参数,使用reset将恢复默认值(待验证))
should the instance be running, then use the following commands to remove the explicit setting of MEMORY_TARGET= and MEMORY_MAX_TARGET=: alter system reset memory_target;
alter system reset memory_max_target;

BLOG

http://www.dbsnake.net/how-to-disable-asm-instance-amm.html
--参考
特别注意的是——如果要禁掉ASM实例的AMM,就一定不要同时reset memory_target和memory_max_target,
而是应该将memory_target设为0并只reset memory_max_target,但很恶心的是基本上所有的MOS文档都在说要同时reset memory_target和memory_max_target,
所以如果你没有注意到这一点,你会发现你怎么也禁不掉ASM实例的AMM。
未验证(如果是我下一次操作,可能会进行测试,这种影响较小,操作简便)

AMM调整为ASMM命令(关闭memory_target自动管理方式)的更多相关文章

  1. win10彻底禁用自动更新,win10怎样彻底关闭自动更新,永久关闭win10自动更新,win10更新助手

    首先,请广大win10受害者原谅小菜用一个如此长的标题来吸引你们,为了尽最大努力帮助那些饱受win10自动更新折磨的朋友们,小菜不得已出此下策,望见谅! windows 10是一个神奇的操作系统,当你 ...

  2. 如何关闭WIN7自动配置 IPV4 地址 169.254

    如何关闭WIN7自动配置 IPV4 地址 169.254 以管理员身份运行cmd.exe 输入:netsh winsock reset catalog 回车 输入:netsh int ip reset ...

  3. 关闭centos自动升级内核

    八.关闭Centos自动更新chkconfig --list yum-updatesd  #显示当前系统状态yum-updatesd    0:关闭  1:关闭  2:启用  3:启用  4:启用  ...

  4. kvm虚拟机不能使用virsh shutdownw命令关闭虚拟机的解决方法

    今天笔者在对kvm虚拟机进行管理时,使用virsh shutdown命令关闭指定的虚拟机时,发现虽然有如下的提示,但其实虚拟机却一直不会真正的关闭. 经过查看virsh命令帮助和上网查询,才得知vir ...

  5. word中几个好用的宏代码(立方米上标、关闭样式自动更新、删除无效样式、表格加粗边框、宋体引号)

    Sub 替换立方米() With Selection.Find .Text = "m3" .Replacement.Text = "mm3" .Forward ...

  6. 彻底关闭windows10自动更新解决方案

    window10的自动更新其实和window7和window8都有所不同,有些人认为只要停止了windows updates 就可以了,不会再开始了! 但是往往不是这样的,因为微软在window up ...

  7. ubuntu18关闭系统自动更新

    ubuntu18.04关闭系统自动更新有两个方法:1.修改配置文件 修改配置文件/etc/apt/apt.conf.d/10periodic#0是关闭,1是开启,将所有值改为0vi etc/apt/a ...

  8. 在IDEA中停止和关闭SonarLint自动检查,手动运行SonarLint检查代码

    关闭SonarLint自动检查代码 有时敲一行代码SonarLint插件就会自动检查,让人感觉很不舒服,还会使电脑卡顿: 依次点击:File -> Settings 或直接Ctrl+Alt+S ...

  9. 关闭 iTunes 自动同步

    关闭 iTunes 自动同步 iTunes>Edit>perererset>device>Prevent iPods,iPhone, and iPads from syncin ...

随机推荐

  1. hdu多校1002 Balanced Sequence

    Balanced Sequence Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s) ...

  2. Oracle 12c启动时PDBs的自动打开

    Pluggable Database(PDB)为Oracle 12c中的一个重要的新特性, 但启动12c实例时并不会自动打开PDB数据库,这样,在启动实例后必须手动打开PDBs. 1. 实例启动后,手 ...

  3. 01二维矩阵中最大全为1的正方形maxSquare——经典DP问题(二维)

    在一个二维01矩阵中找到全为1的最大正方形 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 以矩阵中每一个点作为正方形右下角点来处理,而以该点为右下角点的最大边长最多比 ...

  4. openssl修改版本号

    1.查看当前openssl版本号 openssl version 2.查看openssl所在位置 which openssl 3.查看保存版本号的libcrypto.so所在位置 ldd /usr/b ...

  5. servlet/和/*匹配的区别

    两者真正的区别是,两者的长度不同,根据最长路径匹配的优先级,/*比/更容易被选中,而/的真正含义是,缺省匹配.既所有的URL都无法被选中的时候,就一定会选中/,可见它的优先级是最低的,这就两者的区别.

  6. :工厂模式2:抽象工厂模式--Pizza

    #ifndef __INGREDIENT_H__ #define __INGREDIENT_H__ #include <iostream> using namespace std; cla ...

  7. html页面技巧

    Query获取Select选择的Text和Value: 语法解释: 1. $("#select_id").change(function(){//code...});   //为S ...

  8. Ubuntu16.04 安装Teamviewer

    有时需要远程控制ubuntu系统的电脑,Teamviewer在linux下也可以进行安装,大致看了下向日葵在linux下配置好像比较麻烦,而且Teamviewer远程控制的流畅性一直不错,就选择安装T ...

  9. 卷积神经网络-Dropout

    dropout 是神经网络用来防止过拟合的一种方法,很简单,但是很实用. 基本思想是以一定概率放弃被激活的神经元,使得模型更健壮,相当于放弃一些特征,这使得模型不过分依赖于某些特征,即使这些特征是真实 ...

  10. Android:如何获取屏幕的宽高

    WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE); DisplayMet ...