--==================================
--Oracle实例和数据库(Oracle体系结构)
--==================================
一、Oracle实例
Oracle Server:
一个Oracle Server由一个Oracle实例和一个Oracle数据库组成。
即:Oracle Server = Oracle Instance + Oracle Database
Oracle实例:
包括了内存结构(SGA)和一系列后台进程(Background Process),两者合起来称为一个Oracle实例
即:Oracle Instance = SGA + Background Process
二、Oracle内存结构
包含系统全局区(SGA)和程序全局区(PGA)
即Oracle Memory Structures = SGA + PGA
SGA由服务器和后台进程共享
PGA包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA正相反。PGA是只被一个进程使用的区域,PGA 在创建进程时分配在终止进程时回收,即由服务器进程产生。
1.SGA
系统全局区SGA,SGA = 数据缓冲区+ 重做日志缓冲区+ 共享池+ 大池+ Java 池+ 流池
ORACLE 10G 引入了ASMM(自动共享内存管理),DBA只需设置SGA_TARGET,ORACLE就会自动的对共享池、JAVA池、大池、数据缓冲区、流池进行自动调配。取消自动调配就是sga_target设为。
数据缓冲区(Database buffer cache):存储从数据文件中获得的数据块的镜像
重做日志缓冲区(Redo log buffer):对数据库的任何修改都按顺序被记录在该缓冲,然后由LGWR进程将它写入磁盘,大小由LOG_BUFFER决定
共享池(Shared pool):是SGA中最关键的内存片段,共享池主要由库缓存(共享SQL区和PL/SQL区)和数据
字典缓存组成,它的作用是存放频繁使用的sql,在有限的容量下,数据库系统根据一定的算法决
定何时释放共享池中的sql。
数据字典缓存:
存储数据库中数据文件、表、索引、列、用户和其它数据对象的定义和权限信息
大小由shared_pool_size 决定,不能单独指定
大池(Large pool):是一个可选的区域,用于一些大型的进程如Oracle的备份恢复操作、IO服务器进程等
Java 池:该程序缓冲区就是为Java 程序保留的。如果不用Java程序没有必要改变该缓冲区的默认大小
<