首页 > 数据库 >oracle内存调整

oracle内存调整

时间:2023-12-10 22:23:05浏览次数:38  
标签:target pga -- sga 内存 memory oracle 调整

sql查看oralce内存大小

SELECT sum(bytes)/1024/1024/1024 GBytes FROM dba_segments

备份和恢复

冷备份

-- 关闭数据库
sqlplus /nolog
connect /as sysdba
shutdown immediate;
-- 查询文件位置
-- 控制文件
select name from v$controlfile;
'''
/home/oracle/app/oracle/oradata/helowin/control01.ctl
/home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl
'''
-- 数据文件,查看表空间DBF物理文件位置也可以查看v$datafile
select v$tablespace.name,v$datafile.name from v$tablespace,v$datafile where v$tablespace.ts#= v$datafile.ts#;


'''
NAME
--------------------------------------------------------------------------------
SYSTEM
/home/oracle/app/oracle/oradata/helowin/system01.dbf

SYSAUX
/home/oracle/app/oracle/oradata/helowin/sysaux01.dbf

UNDOTBS1
/home/oracle/app/oracle/oradata/helowin/undotbs01.dbf

USERS
/home/oracle/app/oracle/oradata/helowin/users01.dbf

EXAMPLE
/home/oracle/app/oracle/oradata/helowin/example01.dbf

BLOBS
/home/oracle/app/oracle/oradata/helowin/blobs.dbf


INDX
/home/oracle/app/oracle/oradata/helowin/indx.dbf

WCAUDIT
/home/oracle/app/oracle/oradata/helowin/wcaudit.dbf

'''
-- 日志文件
select member from v$logfile;
'''
/home/oracle/app/oracle/oradata/helowin/redo03.log
/home/oracle/app/oracle/oradata/helowin/redo02.log
/home/oracle/app/oracle/oradata/helowin/redo01.log

'''

-- 初始化参数文件,这个文件夹下的ora文件(可不备份)
SELECT NAME,VALUE,DISPLAY_VALUE FROM V$PARAMETER WHERE NAME ='spfile';

'''
/home/oracle/app/oracle/product/11.2.0/dbhome_2/dbs/spfilehelowin.ora
'''

恢复DBF文件

sqlplus /nolog
connect /as sysdba
#若数据库未关闭-则关闭ORACLE数据库
shutdown immediate;
#把控制文件、数据文件、日志文件覆盖到oracle位置。

#启动ORACLE数据库
startup;

调整内存

  • oracle11g 及以上

    show parameters memory; -- 若为0 直接调整SGA&PGA -- 否则调整 Memory
    show parameters sga;--952
    show parameters pga;--952
    
    
    -- memory 
    alter system set memory_target = 3096M scope=spfile;
    alter system set memory_max_target =3096M scope=spfile;
    -- sga
    alter system set sga_max_size = 2048M scope=spfile;
    alter system set sga_target=2048M scope=spfile;
    -- pga
    alter system set pga_aggregate_target=512M scope=both;
    
    -- 调整完后需重启示例
    
  • oracle11g以下需调整SGA&PGA

MEMORY &SGA &PGA

memory_max_target:决定着SGA和PGA总和的最大值

memory_target:缺省值是0,当设置非0值时候,表示对SGA和PGA的自动管理,也是SGA和PGA总和的目标值,该值不能大于memory_max_target的值

sga_target:缺省值是0,当设置非0值时候,表示oracle自动管理sga中的各个内存区(database buffer cache,share pool,large pool,java pool,streams pool)
是sga自动管理的目标值

sga_max_size:sga大小的最大值

pga_aggregate_target:此参数用来指定所有session总计可以使用最大PGA内存


对于oracle11g而言,设置了memory_target参数为非零值时候,便表示开启了sga和pga的自动管理,即使sga_target和pga_aggregate_target都设置为0,
oracle依然可以自动管理sga中各个内存区的调整(buffer cache,shared pool,large pool,java pool,streams pool)

1、当memory_target设置成非0值时候

1.1 sga_target和pga_aggregate_target都已经设置了非0值

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

1.2 sga_target设置大小,pga_aggregate_target没有设置大小

那么pga_aggregate_target初始化值=memory_target-sga_target

1.3 sga_target没有设置大小,pga_aggregate_target设置大小

那么sga_target初始化值=memory_target-pga_aggregate_target

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%


  1. 当memory_target设置为0时,(11g的默认值)

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

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

2.2 sga_target和pga_aggregate_target都没有设置

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

2.3 memory_max_target设置而memory_target = 0这种情况和10g一样

标签:target,pga,--,sga,内存,memory,oracle,调整
From: https://www.cnblogs.com/mznsndy/p/17893361.html

相关文章

  • 让微信不再不断占用内存的小妙招
    不知道从什么时候开始,我们买新手机要开始考虑128GB是否够用的问题,而往往大多数人最后选择了256GB甚至更高的存储容量,而这一切与64GB够用的时代仅仅相隔了寥寥几年。手机存储空间越来越大与应用程序占用空间的增大密切相关,据相关数据显示,在国内,平均每个手机安装的App数量达50个以......
  • Netty源码学习8——从ThreadLocal到FastThreadLocal(如何让FastThreadLocal内存泄漏do
    系列文章目录和关于我一丶引入在前面的netty源码学习中经常看到FastThreadLocal的身影,这一篇我们将从ThreadLocal说起,来学习FastThreadLocal的设计(《ThreadLocal源码学习笔记》)二丶从ThreadLocal说起ThreadLocal是JDK中实现线程隔离的一个工具类。实现线程隔离maybe你第一反应......
  • ORACLE数据库高水位线
    文档课题:ORACLE数据库高水位线(highwatermark).数据库:oracle11.2.0.41、实验测试1.1、建测试表SQL>createuserleoidentifiedbyleo;Usercreated.SQL>grantdbatoleo;Grantsucceeded.SQL>connleo/leo;Connected.SQL>createtablehswasselect*fr......
  • Oracle查看和终止正在执行的SQL语句
    Oracle查看和终止正在执行的SQL语句--查询当前用户正在执行的SQL语句selecta.sid,a.serial#,a.paddr,a.machine,nvl(a.sql_id,a.prev_sql_id)sql_id,b.sql_text,b.sql_fulltext,b.executions,b.first_load_time,b.last_load_time,b.last_active_time,b.disk_reads,b.direct_wr......
  • oracle日志模式
    oracle日志模式一、oracle日志模式分为(logging,forcelogging,nologging)默认情况是logging,就是会记录到redo日志中,forcelogging是强制记录日志,nologging是尽量减少日志。FORCELOGGING可以在数据库级别、表空间级别进行设定、而LOGGING与NOLOGGING可以在表级别设定。注:FORCELOGGIN......
  • 内存资源控制器实现备忘 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/admin-guide/cgroup-v1/memcg_test.htmlMemoryResourceController(Memcg)ImplementationMemo最后更新时间:2010/2基础内核版本:基于2.6.33-rc7-mm(34版本的候选版本)。由于虚拟内存变得复杂(其中一个原因是memcg...),memcg的行为也变得......
  • 内存泄漏
    一般指堆的内存泄漏,简单来说就是已申请的内存空间没有被正确释放。避免内存泄露的几种方式计数法:使用new或者malloc时,让该数+1,delete或free时,该数-1,程序执行完打印这个计数,如果不为0则表示存在内存泄露一定要将基类的析构函数声明为虚函数对象数组的释放一定要用delete[]有......
  • flinkcdc连接oracle的报错汇总
    报错一:原因分析:字面原因,找不到 org.apache.flink.table.api.ValidationException类。解决办法:根据类名可知,应该 org.apache.flink.table.api包下面的,然后去阿里云maven仓库搜索,添加如下依赖即可 报错二:原因分析:ORA-16331:容器"ORCLPDB1"未打开。解决办法:使用命令打......
  • 内存热插拔 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/core-api/memory-hotplug.html内存热插拔内存热插拔事件通知热插拔事件被发送到一个通知队列中。在include/linux/memory.h中定义了六种通知类型:MEM_GOING_ONLINE在新内存可用之前生成,以便准备子系统处理内存。页分配器仍然无法......
  • 引导时内存管理 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/core-api/boot-time-mm.html#c.memblock_flags"Boottimememorymanagement"(引导时间内存管理)早期系统初始化不能简单地使用“正常”的内存管理,因为它还没有设置。但是仍然需要为各种数据结构分配内存,例如物理页面分配器。一种名为mem......