Oracle在简化内存管理方面过去几年做了巨大的努力,从Oracle 9i通过PGA_AGGREGATE_TARGET参数实现PGA自动管理开始,Oracle 10g通过SGA_TARGET参数实现了SGA的自动管理,Oracle 11g更是惊人地实现了数据库所有内存块的全自动化管理,它使得动态管理SGA和PGA成为现实。
写本文时,自动内存管理(AMM)已经在主流平台上得到支持,包括Linux,Windows,Solaris,HP-UX,AIX。
AMM参数
自动内存管理是用两个初始化参数进行配置的:
MEMORY_TARGET:动态控制SGA和PGA时,Oracle总共可以使用的共享内存大小,这个参数是动态的,因此提供给Oracle的内存总量是可以动态增大,也可以动态减小的。它不能超过MEMORY_MAX_TARGET参数设置的大小。默认值是0。
MEMORY_MAX_TARGET:这个参数定义了MEMORY_TARGET最大可以达到而不用重启实例的值,如果没有设置MEMORY_MAX_TARGET值,默认等于MEMORY_TARGET的值。
使用动态内存管理时,SGA_TARGET和PGA_AGGREGATE_TARGET代表它们各自内存区域的最小设置,要让Oracle完全控制内存管理,这两个参数应该设置为0。
AMM配置
在数据库创建过程中,数据库配置助手(DBCA)允许你配置自动内存管理。
在手动创建数据库时,只需要在创建数据库之前设置合适的MEMORY_TARGET和MEMORY_MAX_TARGET初始化参数。
在一个系统上启用自动内存管理其实很简单,不需要事先做太多的事情,可以使用下面的计算公式来计算:
MEMORY_TARGET=SGA_TARGET+GREATEST(PGA_AGGREGATE_TARGET,"maximumPGAallocated")
|
下面的查询语句向你展示有关的信息,以及如何计算出需要的值:
-- Individual values.
COLUMN name FORMAT A30
COLUMN value FORMAT A10
SELECT name, value
FROM v$parameter
WHERE name IN ('pga_aggregate_target', 'sga_target')
UNION
SELECT 'maximum PGA allocated' AS name, TO_CHAR(value) AS value
FROM v$pgastat
WHERE name = 'maximum PGA allocated';
-- Calculate MEMORY_TARGET
SELECT sga.value + GREATEST(pga.value, max_pga.value) AS memory_target
FROM (SELECT TO_NUMBER(value) AS value FROM v$parameter WHERE name = 'sga_target') sga,
(SELECT TO_NUMBER(value) AS value FROM v$parameter WHERE name = 'pga_aggregate_target') pga,
(SELECT value FROM v$pgastat WHERE name = 'maximum PGA allocated') max_pga;
|
假设我们需要的设置是5G,那么我们可以执行下面的语句:
CONN / AS SYSDBA
-- Set the static parameter. Leave some room for possible future growth without restart.
ALTER SYSTEM SET MEMORY_MAX_TARGET=13G SCOPE=SPFILE;
-- Set the dynamic parameters. Assuming Oracle has full control.
ALTER SYSTEM SET MEMORY_TARGET=20G SCOPE=SPFILE;
ALTER SYSTEM SET PGA_AGGREGATE_TARGET=0 SCOPE=SPFILE;
ALTER SYSTEM SET SGA_TARGET=0 SCOPE=SPFILE;
-- Restart instance.
SHUTDOWN IMMEDIATE;
STARTUP;
|
当数据库重启后,MEMORY_TARGET参数就可以在不重启实例的情况下随意改变大小了。如:
ALTER SYSTEM SET MEMORY_TARGET=4G SCOPE=SPFILE;
|
AMM调整
除现有的用于内存管理的V$视图外,Oracle 11g还新增加了下面4个视图用于自动内存管理:
◆V$MEMORY_CURRENT_RESIZE_OPS
◆V$MEMORY_DYNAMIC_COMPONENTS
◆V$MEMORY_RESIZE_OPS
◆V$MEMORY_TARGET_ADVICE
为每个动态组件分配的内存大小使用视图V$MEMORY_DYNAMIC_COMPONENTS显示:
COLUMN component FORMAT A30
SELECT component, current_size, min_size, max_size
FROM v$memory_dynamic_components
WHERE current_size != 0;
COMPONENT CURRENT_SIZE MIN_SIZE MAX_SIZE
------------------------------ ------------ ---------- ----------
shared pool 197132288 192937984 197132288
large pool 4194304 4194304 4194304
java pool 41943040 41943040 41943040
SGA Target 318767104 285212672 318767104
DEFAULT buffer cache 71303168 41943040 75497472
PGA Target 104857600 104857600 138412032
6 rows selected.
SQL>
|
V$MEMORY_CURRENT_RESIZE_OPS和V$MEMORY_RESIZE_OPS分别显示了组件当前改变大小操作的信息和上一次改变大小操作的信息。
V$MEMORY_TARGET_ADVICE提供了帮助调整MEMORY_TARGET参数的信息,它显示了一段MEMORY_TARGET设置可用的范围,根据当前的设置,估算完成当前负载所需要的DB Time值。
SELECT * FROM v$memory_target_advice ORDER BY memory_size;
MEMORY_SIZE MEMORY_SIZE_FACTOR ESTD_DB_TIME ESTD_DB_TIME_FACTOR VERSION
----------- ------------------ ------------ ------------------- ----------
303 .75 3068 1.0038 2
404 1 3056 1 2
505 1.25 3056 1 2
606 1.5 3056 1 2
707 1.75 3056 1 2
808 2 3056 1 2
6 rows selected.
SQL>
|
企业管理器中也包括了内存管理配置和顾问功能,位于“内存顾问”页面(顾问中心内存顾问)
点击“建议(Advice)”按钮显示“内存大小建议”屏幕,它包括了一个来自视图V$MEMORY_TARGET_ADVICE的图形显示界面。
分享到:
相关推荐
ORACLE 自动内存管理和存储调整 ORACLE 自动内存管理和存储调整是 ORACLE 数据库中的一种重要配置,它可以根据系统的实际情况自动调整内存和存储的使用,以提高数据库的性能和效率。本文将详细介绍 ORACLE 自动内存...
3. 新特性:Oracle 11G引入了许多新特性,比如Automatic Memory Management(自动内存管理),简化了数据库管理员对内存设置的工作;另外,Real Application Clusters (RAC) 在11G中也得到了加强,提供了更高的可用...
本教材详细介绍了Oracle 11g的关键特性和核心概念,从数据库的基础架构到高级管理功能,为学习者提供了全面的指导。通过深入理解这些知识点,不仅可以提升对Oracle 11g数据库管理的能力,还能更好地应对实际工作中...
Oracle 11g是一款功能强大的数据库管理系统,它为企业级应用提供了稳定、高效的数据存储和管理服务。 ### Oracle 11g简介 Oracle 11g是Oracle公司推出的一款企业级数据库系统,版本号为11g(Generation 11)。该...
Oracle 11g是Oracle公司推出的数据库管理系统的一个重要版本,其官方中文文档为开发者和管理员提供了详尽的技术指导。这份文档集合包含了多个关键的主题,帮助用户深入理解和掌握Oracle 11g的各项功能。 首先,...
通过上述自动化的安装脚本和数据库dmp文件的还原功能,这个安装包为在龙蜥Anolis系统上部署和恢复Oracle 11g数据库提供了极大的便利,减少了手动操作的复杂性和出错概率,使得数据库的管理和维护更加高效。...
11g引入了许多新特性,包括自动内存管理、高级压缩、实时应用集群、增强的安全性和性能优化等。 2. **64位支持**:64位版本的Oracle客户端能够充分利用64位系统的内存资源,处理大数据量时效率更高,支持更大的数据...
Oracle 11g Express Edition(XE)是Oracle公司推出的一款轻量级数据库管理系统,专为开发者和小型团队设计。它是Oracle数据库家族中的免费版本,适用于学习、开发和部署低流量的Web应用程序。在这个官方的Linux 64...
Oracle11g引入了自动存储管理(ASM)和数据泵(Data Pump)等工具,简化了存储管理和数据迁移的过程。此外,你还会接触到性能优化,包括分析与调整SQL语句、使用Explain Plan分析执行计划、优化表和索引设计等。 在...
Oracle Database 11g(简称Oracle11g)是甲骨文公司(Oracle Corporation)推出的一款关系型数据库管理系统。Oracle11g继承了Oracle10g的优秀特性,并在此基础上进行了大量的优化与改进,提供了更强大的数据处理能力...
Oracle 数据库 11g 企业版提供了多种可管理性功能,包括企业管理器、自动内存管理、自动存储管理和自动撤消管理等。 数据仓库 Oracle 数据库 11g 企业版提供了数据仓库功能,包括 OLAP、可选分区、可选数据挖掘和...
这份PDF高清完整版的文档涵盖了Oracle 11g的各个核心组件和技术,是学习和工作中的宝贵资源。 一、Oracle数据库体系结构 Oracle 11g的体系结构主要包括进程结构、内存结构和存储结构。进程结构包括用户进程、服务器...
Oracle 11g是Oracle公司推出的一个重要数据库管理系统版本,具有丰富的特性和强大的功能。本教程旨在引导初学者深入理解...Oracle 11g的深入学习和实践对于任何想在数据库管理和应用领域发展的专业人士都是不可或缺的。
Oracle 11g是甲骨文公司发布的一款企业级数据库管理系统,它提供了广泛的功能和优化,以满足大型企业和组织的数据管理需求。这份“Oracle 11g官方中文帮助文档”是一个高清完整版的资源,旨在为中文用户提供详尽的...
这本书的原版来自于Apress出版社,对于学习和掌握Oracle 11g数据库管理具有极高的价值。 Oracle 11g的核心特性包括: 1. 高可用性:Oracle 11g引入了实时应用集群(Real Application Clusters, RAC),它允许多个...
本文将详细介绍Oracle11g的内存和存储概览,包括内存的总体架构、存储结构以及管理方式,从而为数据库管理员提供相应的管理建议和技术支持。 内存概述: Oracle11g的系统全局区(SGA)是数据库实例的一个重要组件,...
Oracle数据库作为企业级应用的主流数据库管理系统,其11g版本是相当知名并且广泛使用的一个版本。Oracle 11g体系架构涉及许多核心组件和概念,下面将根据文档提供的内容详细解释这些知识点。 首先,Oracle 11g体系...