返回顶部
首页 > 资讯 > 精选 >如何进行Oracle 11g AMM与ASMM切换
  • 829
分享到

如何进行Oracle 11g AMM与ASMM切换

2023-06-06 02:06:11 829人浏览 独家记忆
摘要

这篇文章给大家介绍如何进行oracle 11g AMM与ASMM切换,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 现在的Oracle正在往智能化方向发展。如果我们现在找一些8i/9i时代的Oracle书籍,

这篇文章给大家介绍如何进行oracle 11g AMM与ASMM切换,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

 

现在的Oracle正在往智能化方向发展。如果我们现在找一些8i/9i时代的Oracle书籍,怎么样配置合适的数据库各内存池大小是非常重要的话题。但是进入10g之后,自动内存池调节成为一个重要Oracle特性。

 

在10g时,Oracle推出了ASMM(Automatic Shared Memory Management),实现了Oracle SGA和PGA内部结构的自调节。进入11g之后,AMM(Automatic Memory Management)实现了参数MEMORY_TARGET,将SGA和PGA的规划全部统筹起来对待。

 

默认情况下,Oracle 11g是使用AMM的。我们在安装过程中,指定Oracle使用内存的百分比,这个取值就作为MEMORY_TARGET和MEMORY_MAX_TARGET的初始取值使用。如果这两个参数设置为非零取值,那么Oracle就是采用AMM管理策略的。

 

同时,如果我们设置这两个参数为0,则AMM自动关闭。对应的SGA_TARGET、PGA_AGGREGATE_TARGET参数取值非零之后,Oracle自动退化使用ASMM特性。

 

本篇简单介绍一下AMM和ASMM的相互切换。

 

1、实验环境介绍

 

我们选择11.2.0.3进行试验,当前状态为ASMM。

 

 

sql> select * from v$version;

BANNER

--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production

PL/SQL Release 11.2.0.3.0 - Production

CORE        11.2.0.3.0         Production

 

 

当前MEMORY_TARGET设置为零,AMM没有启用。

 

 

SQL> show parameter target

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

arcHive_lag_target                   integer     0

db_flashback_retention_target        integer     1440

fast_start_io_target                 integer     0

fast_start_mttr_target               integer     0

memory_max_target                    big integer 0

memory_target                        big integer 0

parallel_servers_target              integer     16

pga_aggregate_target                 big integer 108M

sga_target                           big integer 252M

 

 

2、从ASMM到AMM

 

在11g中,如果使用ASMM,对应的内存共享段是真实的共享段。

 

 

[oracle@Simplelinux ~]$ ipcs -m

 

------ Shared Memory Segments --------

key        shmid      owner      perms      bytes      nattch     status     

0x00000000 32768      oracle    640        4194304    32                     

0x00000000 65537      oracle    640        260046848  32                     

0x01606d30 98306      oracle    640        4194304    32  

 

 

下面进行参数的调整,这里笔者有一个建议,很多时候启动umount阶段故障都是由于不当的参数修改造成的。在进行参数修改之前,可以使用create pfile进行一下参数备份,可以加快故障出现时候的系统修复速度。

 

 

SQL> show parameter spfile

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

spfile                               string      /u01/app/oracle/dbs/spfileora11g.ora

 

SQL> create pfile from spfile;

Done

 

 

修改系统参数,将sga和pga的target值设置为0,memory的target设置非0。注意,这个过程很多参数是静态的参数,可以都在spfile可见性中进行修改,之后重启服务器生效。

 

 

SQL> alter system set memory_max_target=360m scope=spfile;

System altered

 

SQL> alter system set memory_target=360m scope=spfile;

System altered

 

SQL> alter system set sga_target=0m scope=spfile;

System altered

 

SQL> alter system set sga_max_size=0 scope=spfile;

System altered

 

SQL> alter system set pga_aggregate_target=0 scope=spfile;

System altered

 

 

重新启动数据库服务器,查看参数配置。

 

 

SQL> conn / as sysdba

Connected.

SQL> startup force

ORACLE instance started.

 

Total System Global Area  263651328 bytes

Fixed Size                  1344284 bytes

Variable Size             176164068 bytes

Database Buffers           83886080 bytes

Redo Buffers                2256896 bytes

Database mounted.

Database opened.

 

SQL> show parameter target

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

archive_lag_target                   integer     0

db_flashback_retention_target        integer     1440

fast_start_io_target                 integer     0

fast_start_mttr_target               integer     0

memory_max_target                    big integer 360M

memory_target                        big integer 360M

parallel_servers_target              integer     16

pga_aggregate_target                 big integer 0

sga_target                           big integer 0

 

 

AMM启动之后,系统共享段变为“虚拟”共享段。

 

[oracle@SimpleLinux dbs]$ ipcs -m

 

------ Shared Memory Segments --------

key        shmid      owner      perms      bytes      nattch     status     

0x00000000 163840     oracle    640        4096       0                      

0x00000000 196609     oracle    640        4096       0                      

0x01606d30 229378     oracle    640        4096       0  

 

 

3、从AMM到ASMM

 

下面是如何从AMM到ASMM。要完全关闭AMM,一定将MEMORY_TARGET和MEMORY_MAX_TARGET都设置为0才行。

 

 

SQL> alter system set memory_max_target=0 scope=spfile;

System altered

 

SQL> alter system set memory_target=0 scope=spfile;

System altered

 

SQL> alter system set pga_aggregate_target=100m scope=spfile;

System altered

 

SQL> alter system set sga_target=260m scope=spfile;

System altered

 

SQL> alter system set sga_max_size=260m scope=spfile;

System altered

 

 

注意,此时如果重新启动系统,会报错。

 

 

SQL> startup force

ORA-00843: Parameter not taking MEMORY_MAX_TARGET into account

ORA-00849: SGA_TARGET 272629760 cannot be set to more than MEMORY_MAX_TARGET 0.

SQL>

 

 

这个问题的原因是Oracle启动过程中对于参数的内部检查。因为MEMORY_MAX_TARGET被“显示”的赋值,与SGA_TARGET赋值相冲突。

 

解决的方法就是使用参数默认值。创建出pfile之后,将显示赋值为0的MEMORY_TARGET和MEMORY_MAX_TARGET记录行删除掉。再利用pfile启动数据库,重建spfile。

 

 

SQL> create pfile from spfile

  2  ;

 

File created.

 

--修改前

*.db_recovery_file_dest='/u01/app/fast_recovery_area'

*.db_recovery_file_dest_size=10737418240

*.diagnostic_dest='/u01/app'

*.dispatchers='(PROTOCOL=tcp) (SERVICE=ora11gXDB)'

*.log_checkpoints_to_alert=TRUE

*.memory_max_target=0

*.memory_target=0

*.open_cursors=300

*.pga_aggregate_target=104857600

*.processes=150

 

--修改后

*.db_recovery_file_dest='/u01/app/fast_recovery_area'

*.db_recovery_file_dest_size=10737418240

*.diagnostic_dest='/u01/app'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=ora11gXDB)'

*.log_checkpoints_to_alert=TRUE

*.open_cursors=300

*.pga_aggregate_target=104857600

*.processes=150

*.remote_login_passWordfile='EXCLUSIVE'

 

 

使用pfile启动数据库,重建spfile。

 

 

SQL> conn / as sysdba

Connected to an idle instance.

SQL> startup pfile=/u01/app/oracle/dbs/initora11g.ora

ORACLE instance started.

 

Total System Global Area  272011264 bytes

Fixed Size                  1344372 bytes

Variable Size             176163980 bytes

Database Buffers           88080384 bytes

Redo Buffers                6422528 bytes

Database mounted.

Database opened.

SQL> show parameter target

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

archive_lag_target                   integer     0

db_flashback_retention_target        integer     1440

fast_start_io_target                 integer     0

fast_start_mttr_target               integer     0

memory_max_target                    big integer 0

memory_target                        big integer 0

parallel_servers_target              integer     16

pga_aggregate_target                 big integer 100M

sga_target                           big integer 260M

 

SQL> create spfile from pfile

  2  ;

 

File created.

 

 

重新启动之后,ASMM切换完成。

 

 

SQL> startup force

ORACLE instance started.

 

Total System Global Area  272011264 bytes

Fixed Size                  1344372 bytes

Variable Size             176163980 bytes

Database Buffers           88080384 bytes

Redo Buffers                6422528 bytes

Database mounted.

Database opened.

 

--真实的共享内存段结构

[oracle@SimpleLinux dbs]$ ipcs -m

 

------ Shared Memory Segments --------

key        shmid      owner      perms      bytes      nattch     status     

0x00000000 425984     oracle    640        8388608    25                     

0x00000000 458753     oracle    640        264241152  25                     

0x01606d30 491522     oracle    640        4194304    25 

 

--HugePage使用情况

[oracle@SimpleLinux dbs]$ grep Huge /proc/meminfo

HugePages_Total:    67

HugePages_Free:      1

HugePages_Rsvd:      0

Hugepagesize:     4096 kB

[oracle@SimpleLinux dbs]$


AMM和ASMM是我们管理数据库非常重要的工具,借助自我调节的机制,我们可以做到数据库自我管理。11g的AMM应该说是很方便的,但是在一些情况下,如HugePage,我们可能需要切换回ASMM。权当记录,留需要的朋友待查。

关于如何进行Oracle 11g AMM与ASMM切换就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 如何进行Oracle 11g AMM与ASMM切换

本文链接: https://lsjlt.com/news/245679.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何进行Oracle 11g AMM与ASMM切换
    这篇文章给大家介绍如何进行Oracle 11g AMM与ASMM切换,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 现在的Oracle正在往智能化方向发展。如果我们现在找一些8i/9i时代的Oracle书籍,...
    99+
    2023-06-06
  • oracle 11g如何进行手工建库
    这篇文章给大家介绍oracle 11g如何进行手工建库,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。工作环境: ORE 6.5手工建库是作为dba必须掌握的一个基本技能,它使清楚的认识oracle的目录结构、oracl...
    99+
    2023-06-06
  • 11G 新增 Physical standby 并通过 DGBroker 进行主备切换
    1.PRIMARY    原来的主库,新增新备库的配置信息。SQL> alter system set log_archive_dest_state_3=defer;SQL> alter sys...
    99+
    2024-04-02
  • Oracle 11g R2如何进行用户管理
    这篇文章给大家分享的是有关Oracle 11g R2如何进行用户管理的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。如果想查看oracle系统中存在用户可以查看dba_users视...
    99+
    2024-04-02
  • Win10如何进行多桌面切换
    本篇内容介绍了“Win10如何进行多桌面切换”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在电脑桌面任务栏左侧,点击“task view”。...
    99+
    2023-06-27
  • MySQL如何在存储过程进行切换表
    MySQL如何在存储过程进行切换表,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。DELIMITER $$ DROP&nb...
    99+
    2024-04-02
  • oracle如何切换用户
    切换 oracle 数据库用户有两种方法:alter session:使用 alter session 语法,例如:alter session set current_user = 'h...
    99+
    2024-06-12
    oracle
  • Linux 进程管理中如何进行调度和进程切换
    这篇文章将为大家详细讲解有关Linux 进程管理中如何进行调度和进程切换,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。什么是调度按照某种调度算法,从进程的ready队列中选择进程给CPU。为...
    99+
    2023-06-15
  • Linux命令行与图形界面如何切换
    小编给大家分享一下Linux命令行与图形界面如何切换,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!实时切换1.1 命令行->图形startx1.2 图形-&...
    99+
    2023-06-13
  • 如何进行Oracle中pivot与unpivot之间的相互转换
    如何进行Oracle中pivot与unpivot之间的相互转换,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 今天解答问题的总结 tabl...
    99+
    2024-04-02
  • matlab如何进行换行
    这篇文章将为大家详细讲解有关matlab如何进行换行,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。matlab换行的方法有:1、直接按下键盘的回车键;2、直接输入三个黑点,然后按一次键盘的回车键;3、直接...
    99+
    2023-06-20
  • 如何进行UNDO表空间空间回收及切换
    这期内容当中小编将会给大家带来有关如何进行UNDO表空间空间回收及切换,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 1. 查看 undo 相...
    99+
    2024-04-02
  • Python代码里面如何进行设置IP切换头
    这篇文章给大家分享的是有关Python代码里面如何进行设置IP切换头的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Pythonrequests      ...
    99+
    2023-06-02
  • 如何进行Flutter仿头条顶部tab切换实现
    这期内容当中小编将会给大家带来有关如何进行Flutter仿头条顶部tab切换实现,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。概述今天主要实现一个仿头条顶部tab切换实现,这种效果在项目中同样经常用到, ...
    99+
    2023-06-04
  • Win10 9926如何手动开启平板模式与桌面模式进行切换
      Win10新增功能之一就是可以在PC端上使用平板模式。在新版本号9926中,桌面模式与平板模式无法自动切换,需要手动切换。Win10 9926如何手动开启平板模式开启平板模式后有何变化   可能有朋友会说,直接点击开...
    99+
    2023-06-11
    Win10 平板 模式 桌面 切换
  • 如何进行python str与json类型转换
    这篇文章给大家介绍如何进行python str与json类型转换,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在写接口测试框架时。避免不了数据类型的转换,比如强制转换string类型,比如转json类型str转json...
    99+
    2023-06-04
  • 如何使用HTML5进行单页面手势滑屏切换
    今天就跟大家聊聊有关如何使用HTML5进行单页面手势滑屏切换,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。H5单页面手势滑屏切换是采用HTML5 触...
    99+
    2024-04-02
  • 如何进行C#回车切换焦点实现的探讨
    今天就跟大家聊聊有关如何进行C#回车切换焦点实现的探讨,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C#回车切换焦点实现的探讨,我们在学习 Windows程序中Tab键是默认的切换输...
    99+
    2023-06-17
  • Vue如何实现点击按钮进行上下页切换
    这篇文章给大家介绍Vue如何实现点击按钮进行上下页切换,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。案例效果:完整代码如下: <template>  <div ...
    99+
    2023-06-29
  • mysql如何进行进制转换
    小编给大家分享一下mysql如何进行进制转换,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! mysql进制转换方法:1、利用“bin(值)”,可将十进...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作