oracle内存结构

oracle内存结构

实例instance:启动的数据库,运行在内存中的数据库,是内存中数据库的映射,管理数据库正常运行

在os中以oracle_sid标识,在db中以instance_name标识;

组成(System global area + background process);

查看实例名:

host set | grep ORACLE_SID

show parameter instance name;


数据库

show parameter db_name;

实例所存取的一个数据库文件的集合

在db中以db_name标识

组成: (初参文件,控制文件,数据文件,日志文件等)

show parameter spfile;这是参数文件

select * from v$controlfile;这是控制文件

select file_name,tablespace_name from dba_data_files;这是数据文件

select * from v$log;这是日志文件


数据库服务器

ibm特别稳定

包括存储,磁盘设备,等


实例与数据库的关系:

*一个实例对应一个数据库

 单点数据库:单个实例存取一组数据库文件(通常情况)

*多个实例对应一个数据库

 多点数据库:多个实例存取一组数据库文件,(OPS&RAC)


SGA(System Global Area)

SGA是一组包含着一个oracle实例的数据和控制信息的共享内存结构

是为oracle系统分配的共享内存;

是实例的主要组成部分;

是影响数据库性能的最重要因素;

随实例的启动关闭而被分配和回收

SGA自动对所包含的各种缓存自动进行动态管理


SGA主要包含6类缓存:

db_buffer_cache 数据高速缓冲

shared_pool 共享池

large_pool 大池

java_pool java池

streams_pool 流池

redo_log_buffer 重写日志缓冲(不参与动态管理)


show sga;

可以看到很多缓存信息

也可以通过select * from v$sga;查看sga这个动态表也是可以查看的


查看sga重要参数:

show parameter sga;

可以看到有

lock_sga运行过程中是否也将全部sga区都绑定到物理内存中,而不使用交换空间(linux、win平台不适用)

show parameter lock_sga;

alter system set pre_page_sga=true scope=spfile;重启生效

然后会发现数据库起不来了

pre_page_sga 启动时是否将全部sga区都绑定到物理内存中,而不使用交换分区

=============

//scope=spfile就是说设置这个参数重启生效,而且永久生效

alter system set pre_page_sga=true scope=spfile(非动态生效)

shutdown immediate;重启生效

startup open;

show parameter pre_page_sga;查看生效

//=============

sga_max_size    sga区总大小的上限

//===

alter system set sga_max_size=552M scope=spfile(非动态生效)

shutdown immediate; 重启生效

startup open;

show parameter sga_max_size;查看生效

#sysctl -a|grep shmmax规定了最大大小为512M

而sga_max_size可以超越这个值,sga_max_size可以改大,改小受sga_target的限制

sga内存按照颗粒度大小granule_size分配内存,若手工分配内存大小非整数倍于granule_size,则自动凑为granule_size的整数倍大小,常见granule_size如下:

若sga<1G, granule_size=4M

若sga>1G,granule_size=8M(for win), granule_size=16M(for Other)

select bytes from v$sgainfo where name='Granule Size'

查询sga颗粒度大小


sga_target(10g新参)

启动自动共享内存管理ASMM(Automatic Shared Memory Management)机制,由mman(Memory Manager)后台进程来动态管理SGA中的各项缓存(redo_log_buffer为非动态管理),若值为0表示为启动ASMM,其值应尽量接近sga_max_size,当sga_target小于sga_max_size时,sga中各缓存合计值为以sga_target为实际上限。。

show parameter db_cache_size;

show parameter shared_pool_size;

show parameter java_pool_size;

show parameter large_pool_size;

调整sga_target前,应先查看四项缓冲的默认设置值,默认为0,表示可由ASMM在0到sga_target值所规定的区间内任意自动调整各缓冲大小,若某项缓冲设置不为0而为一具体值,代表ASMM在动态调整各缓冲区时,该缓冲区不能分配到低于该指定值的大小。


//scope=both修改后就生效,而且永久生效

//alter system set sga_target=0;关闭我们的动态管理机制








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值