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