ORACLE内存结构解析
时间:2010-06-07 来源:origda
一、ORACLE的3大内存结构
(1)系统全局区(System Global Area,SGA)
(2)进程全局区(Process Global Area,PGA)
(3)用户全局区(User Global Area,UGA)
二、SGA
1、SGA是指系统全局区(System Global Area),是一块用具加载数据、对象并保存运行状态和数据库控制信息的一块内存区域,在数据库实例启动时分配,当实例关闭时释放,每个实例都拥有自己的SGA。
2、在UNIX操作系统上,SGA是一个物理实体,在OS里物理实现为一个共享内存段。如在RHEL 5上可以查看:
[oracle@node1 ~]$ ipcs -m|grep ora 0x3f744704 2686982 oracle 640 272633856 20 |
这里表示一个属于oracle 用户的SGA,大小为260MB。
注意,SGA的分配受操作系统参数kernel.shmmax大小的影响,如果SGA>kernel.shmmax,则SGA被分割成多个物理内存段,每个内存段为kernel.shmmax的大小。在操作系统上查看kernel.shmmax:
[root@node1 ~]# sysctl -p|grep shmmax kernel.shmmax = 2147483648 |
可以看出操作系统设置的最大内存段大小为2GB,所以上面查询出的SGA共享内存段只有一行。
同样,我们在oracle里也可以查看:
SQL> show sga Total System Global Area 272629760 bytes Fixed Size 1218892 bytes Variable Size 104859316 bytes Database Buffers 159383552 bytes Redo Buffers 7168000 bytes |