一、ORACLE数据库的 物理结构:三种文件
数据文件、控制文件、重做日志文件
 
二、ORACLE数据库的 内存结构:两个内存区
1、系统全局区(SGA):在ORACLE例程启动时分配,是例程的基本组件;包括:共享池、数据库缓冲区高速缓存、重做日志缓冲区、(大型共享池、JAVA池)
SGA是动态的,大小由SGA_MAX_SIZE参数决定,是连续的虚拟内存分配,以粒组为单位进行分配和跟踪;
1) 共享池:用于存储最近执行的SQL语句和最近使用的数据定义,包括以下两个与性能相关的关键内存结构: 库高速缓存数据字典高速缓存
其大小由 SHARED_POOL_SIZE参数确定,可以使用下面的命令修改:
ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;
库高速缓存包括共享的SQL区(存储最近使用的SQL语句)和共享的PL/SQL区(存储最近使用的PL/SQL语句),大小由共享池大小决定;
数据字典高速缓存用来存储最近使用的数据定义
2) 数据库缓冲区高速缓存:存储已从数据文件中检索到的数据块的副本,能够大幅提高获取和更新数据时的性能;主块的大小由DB_BLOCK_SIZE大小决定;
数据库缓冲区高速缓存由独立的子高速缓存组成:DB_CACHE_SIZE\DB_KEEP_CACHE_SIZE\DB_RECYCLE_CACHE_SIZE;其大小可以动态调整;
ORACLE数据库运行期间向数据库高速缓存进行读写操作,如果高速缓存命中则表示数据已在内存中;如果高速缓存读取失败,则数据库要进行磁盘I/O;
3) 重做日志缓冲区:记录对数据库数据块进行的所有更改,用于恢复,其中的记录更改称为 重做条目;
4) 大型池:是SGA中的可选内存区。分担了共享池的一部分工作,包括共享服务器的会话内存(UGA)、I/O服务器进程、备份和恢复操作或RMAN、并行执行消息缓冲区
将PARALEL_AUTOMATIC_TUNING设置为TRUE,大型池不使用LRU列表;
5) JAVA池:分析JAVA程序的服务分析要求;在安装和使用JAVA程序时是必须的,大小由JAVA_POOL_SIZE决定;
2、程序全局区(PGA):PGA为每个连接到ORACLE数据库的用户进程保留内存,进程启动时分配,进程终止时收回,每次仅供一个进程使用;
对于PGA_AGGREGATE_TARGET参数的设置,Oracle提供这样一个建议方案
对于OLTP系统
PGA_AGGREGATE_TARGET = (<Total Physical Memory > * 80%) * 20%
对于DSS系统
PGA_AGGREGATE_TARGET = (<Total Physical Memory > * 80%) * 50%