设置数据库为自动内存管理

设置数据库自动内存管理主要是设置两个参数:

memory_max_target

memory_target

如果这两个参数设置为0说明数据库内存采用手动管理,反之则为自动管理。

关闭数据库。

SQL> startup nomount

ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 6384M

--这里之所以报错是我之前alter system set MEMORY_TARGET=‘1536M‘ scope=‘spfile‘;

因为之前系统分配给SGA的内存就这么大,我设置的参数绝对不能超过SGA,这也就是导致修改完参数重启数据库出错的原因。

SQL> create pfile =‘/home/oracle/initora11g.ora‘ from spfile;

File created.

创建pfile文件,然后修改pfile文件设置这两个参数大小为7G。

[[email protected] dbhome_1]$ vi /home/oracle/initora11g.ora

atsdb.__db_cache_size=16777216

atsdb.__java_pool_size=16777216

atsdb.__large_pool_size=16777216

atsdb.__oracle_base=‘/opt/app/oracle‘#ORACLE_BASE set from environment

atsdb.__pga_aggregate_target=5083496448

atsdb.__sga_target=1610612736

atsdb.__shared_io_pool_size=0

atsdb.__shared_pool_size=1526726656

atsdb.__streams_pool_size=16777216

*.audit_file_dest=‘/opt/app/oracle/admin/atsdb/adump‘

*.audit_trail=‘db‘

*.compatible=‘11.2.0.0.0‘

*.control_files=‘/opt/app/oracle/oradata/atsdb/control01.ctl‘,‘/opt/app/oracle/flash_recovery_area/atsdb/control02.ctl‘

*.db_block_size=8192

*.db_domain=‘‘

*.db_name=‘atsdb‘

*.db_recovery_file_dest=‘/opt/app/oracle/flash_recovery_area‘

*.db_recovery_file_dest_size=4070572032

*.diagnostic_dest=‘/opt/app/oracle‘

*.dispatchers=‘(PROTOCOL=TCP) (SERVICE=atsdbXDB)‘

*.global_names=FALSE

*.memory_max_target=7610612736

*.memory_target=7610612736

*.open_cursors=300

*.pga_aggregate_target=5078253568

*.processes=3000

*.remote_login_passwordfile=‘EXCLUSIVE‘

*.sessions=3555

*.sga_target=1610612736

*.undo_tablespace=‘UNDOTBS1‘

修改完成之后从pfile启动数据库:

SQL>=‘/home/oracle startup pfile/initora11g.ora‘

ORACLE instance started.

Total System Global Area 7616245760 bytes

Fixed Size                  2214496 bytes

Variable Size            6979323296 bytes

Database Buffers          603979776 bytes

Redo Buffers               30728192 bytes

Database mounted.

Database opened.

可以看到数据库已经重新启动,因为刚才是在pfile中修改的参数,现在同步到spfile中:

SQL> create spfile from pfile=‘/home/oracle/initora11g.ora‘;

File created.

SQL> show parameter memory

NAME                                 TYPE

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

VALUE

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

hi_shared_memory_address             integer

0

memory_max_target                    big integer

7296M

memory_target                        big integer

7296M

shared_memory_address                integer

0

SQL>

这里也可以看到现在数据库是采用自动内存管理的。

成功。

时间: 2024-08-22 20:41:09

设置数据库为自动内存管理的相关文章

设置ORACLE自动内存管理

文章参考:ORACLE 11g官方文档[Managing Memory] 前言:之前搭建数据库集群环境后,现场的维护人员不知何时改为了手动内存管理,且参数设置存在不合理,导致客户plsql执行报错,如下所示: 查看数据库日志,有如下提示: Wed Mar 15 00:15:08 2017 Errors in file /app/oracle/diag/rdbms/resdb/resdb1/trace/resdb1_ora_12320832.trc  (incident=441054): ORA-

垃圾回收GC:.Net自动内存管理 上(一)内存分配

垃圾回收GC:.Net自动内存管理 上(一)内存分配 前言 .Net下的GC完全解决了开发者跟踪内存使用以及控制释放内存的窘态.然而,你或许想要理解GC是怎么工作的.此系列文章中将会解释内存资源是怎么被合理分配及管理的,并包含非常详细的内在算法描述.同时,还将讨论GC的内存清理流程及什么时清理,怎么样强制清理. 引子 为你的应用程序实现合理的资源管理是一件困难的,乏味的工作.这可能会把你的注意力从你当前正在解决的实际问题中转移到它身上.那么,如果有一个现有的机制为开发者管理令人厌恶的内存管理,会

关于oracle11G的自动内存管理MEMORY_TARGET和MEMORY_MAX_TARGET

自动内存管理是用两个初始化参数进行配置的: MEMORY_TARGET:动态控制SGA和PGA时,Oracle总共可以使用的共享内存大小,这个参数是动态的,因此提供给Oracle的内存总量是可以动态增大,也可以动态减小的.它不能超过MEMORY_MAX_TARGET参数设置的大小.默认值是0. MEMORY_MAX_TARGET:这个参数定义了MEMORY_TARGET最大可以达到而不用重启实例的值,如果没有设置MEMORY_MAX_TARGET值,默认等于MEMORY_TARGET的值. 使用

Oracle 自动内存管理 SGA、PGA 详解

ASMM自动共享内存管理: 自动根据工作量变化调整 最大程度地提高内存利用率 有助于消除内存不足的错误 [email protected]>show parameter sga NAME                                 TYPE        VALUE ------------------------------------ ----------- ------------------------------ lock_sga                  

垃圾回收算法手册:自动内存管理的艺术 BOOK

垃圾回收算法手册:自动内存管理的艺术 2016-03-18 华章计算机 内容简介 PROSPECTUS 本书是自动内存管理领域的里程碑作品,汇集了这个领域里经过50多年的研究沉积下来的最佳实践,包含当代最重要的垃圾回收策略与技术,著译双馨. 几乎所有的现代编程语言都采用了垃圾回收机制,因此深入了解此方面内容对于所有开发者而言都大有裨益.对于不同垃圾回收器的工作方式,以及当前垃圾回收器所面临的各种问题,这本权威手册都提供了专业的解答.掌握这方面的知识之后,在面对多种不同的垃圾回收器以及各种调节选项

cocos2d-x学习之自动内存管理

一.自动内存管理 1)概述 C++语言默认是没有提供自动内存管理的.使用者需要自己分配,自己释放.在cocos2d-x里提供了一个自动内存管理的方案.主要是通过CCObject来提供的,用户只要继承了CCObject,就可以通过调用autorelease()来告诉系统进行自动内存管理. 一般用法就是:    CCLayer* pLayer = CreateLayer(s_nActionIdx);    pLayer->autorelease(); 2)自动内存管理的实现 自动内存管理的实现原理大

JVM自动内存管理机制——Java内存区域

一.JVM运行时数据区域概述 Java相比较于C/C++的一个特点就是,在虚拟机自动内存管理机制的帮助下,我们不需要为每一个操作都写像C/C++一样的delete/free代码,所以也不容易出现内存泄漏和内存溢出的问题.显然,这里的不容易只是相对而言的,如果我们想要降低这种代码隐患的发生,就需要对Java虚拟机怎样使用内存有了解,这样的话就算产生错误,排查起来也会相对容易.下面我们来说一说JVM运行时数据区域 1.程序计数器(PC寄存器): 被看作是当前线程所执行的字节码的行号指示器,字节码解析

JVM自动内存管理机制——Java内存区域(下)

一.虚拟机参数配置 在上一篇<Java自动内存管理机制--Java内存区域(上)>中介绍了有关的基础知识,这一篇主要是通过一些示例来了解有关虚拟机参数的配置. 1.Java堆参数设置 a)下面是一些简单的使用参数 其中最后一个是一个运行时参数设置的简单实例.一般-XX是系统级别的配置(日志信息,或者是配置使用什么样的垃圾回收器等等),后面跟上+表示启用.不是-XX基本上是对于应用层面的配置信息 下面是一个简单的实例:表示设置初始堆大小为5M,最大堆大小为20M,并将虚拟机的参数设置打印出来,后

2.1 自动内存管理机制--Java内存区域与内存溢出异常

自动内存管理机制 第二章.Java内存区域与内存溢出异常 [虚拟机中内存如何划分,以及哪部分区域.什么样代码和操作会导致内存溢出.各区域内存溢出的原因] 一.运行时数据区域 Java虚拟机所管理的内存包括以下几个运行时数据区域[虚拟机内存模型]: 1.程序计数器: 可以看作是当前线程所执行的字节码的行号指示器.在虚拟机中,字节码解释器工作时就是通过程序计数器的值来选择下一条需要执行的字节码指令.Java虚拟机中多线程是通过线程轮流切换并分配处理机执行时间的方式实现的,在任何一个确定的时刻,一个处