一、oracle术语:
Oracle服务器:oracle server。由oracle实例和oracle数据库组成。
Oracle实例:oracle instance,是在oracle启动的第一个阶段根据参数文件,生成的一系列后台进程和一块共享内存SGA共同组成。
Oracle数据库:oracle database,是由oracle所有的物理文件所组成。其中最关键的有:控制文件、数据文件、redo log文件。
Oracle实例与oracle数据库进行交互,oracle实例对数据库进行各种操作,从而对外提供数据库的存储和检索服务。数据库就像一个仓库,存储了各类货物,而实例就像出入仓库的搬运工,负 责将货物搬出、搬入仓库。
二、oracle总体结构
由oracle实例、oracle数据库组成。Oracle实例由后台进程和共享内存组成,所以oracle的结构又包含了进程结构和内存结构。Oracle数据库由物理文件组成,所以oracle结构又包含了存储结构。
三、oracle进程结构
Oracle的进程主要有后台进程和server process。后台进程主要对oracle数据库进程进行维护和操作,而server process主要用来处理用户的请求。
后台进程一般有:DBWn、LGWR、CKPT、SMON、PMON等。
1)DBWn(database writer数据库写):主要作用是将被修改过的buffer cache按照一定的条件写入物理磁盘。
2)LGWR(logo writer日志写):主要作用是把logo buffer的中的redo log记录按照一定条件写入联机的redo log文件。
3)CKPT(cheakpoint检查点进程):主要作用是将检查点位置写入控制文件和数据文件的头部。
4)SMON(system monitor系统监控进程):主要作用是在数据库启动时,判断实例上次是否正常关闭,如果是非正常关闭,则进程实例恢复。另外,还会合并相连的空间。
5)PMON(process monitor进程监控):监控server process,如果server process非正常关闭,则PMON负责清理它所占用的各种资源。
四、oracle的内存结构
由两大部分组成:SGA、PGA。
PGA:program global area程序全局区;专门作为当前用户会话的内存区。(私有的,只能被一个进程使用)
SGA:System global area系统全局区;SGA包括6部分:
1)共享池shared pool:主要作用是提高SQL语句及PL/SQL语句的执行效率,缓存执行过的SQL语句,执行计划。
2)数据库缓冲区database buffer cache:主要作用是缓存曾经读取过的数据块,oracl数据库中对数据的所有修改都是在buffer cache中进行的。因为所有的操作都必须先将物理上的数据块读取到buffer cache中,然后才能进行各种操作。Buffer cache是SGA中最大的内存区域。
3)重做日志缓冲区redo log buffer:缓存生成的redo log记录,日志写后后台进程会将log buffer中的记录写到磁盘中。
4)大池large pool:可选的内存池,主要作用是分担shared pool的压力。某些情况,比如备份恢复,如果没有分配large pool则会从shared pool中分配内存,这会增加shared pool的负担。
5)java池java pool:供java程序使用。
6)流池stream pool:数据库在流工作时使用的内存区域。
五、oracle的存储结构
存储结构即物理文件的组成结构。其中控制文件、数据文件、重做日志文件是不可或缺的关键文件。
1)控制文件control files:包含了数据库物理结构的信息,比如各种文件的存放位置、当前数据库的运行状态等。十分重要,丢失则数据库实例无法启动。
2)数据文件datafile: 存放数据的文件。
3)联机重做日志文件online redo log file:存放redo log的文件,维护数据库的一致性,用于数据恢复。
其他文件:Parameter Files,Password Files等