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一样

posted @ 2023-12-10 22:17  赵钱富贵  阅读(17)  评论(0编辑  收藏  举报