- Oracle体系结构主要包括:数据库实例和数据库文件。如下图:
- 数据库实例包括:内存(SGA)和后台一堆进程
- 数据库文件包括:参数文件、日志文件、控制文件、数据文件、密码文件
- SGA则包括:
- 共享池:主要的作用是让相同的SQL语句不需要在做编译、语法的校验,执行计划的判断的。提升SQL的运行效率。
- 数据缓冲区:缓存从磁盘读取的数据,提升了查询速度。常见的场景是同一个SQL语句执行,第一次查询很慢,第二次就很快的原因。
- 日志缓冲区:提升了数据增、删、改的速度,减少磁盘的读写从而加快速度。
- 后台进程包括:
- 数据库写进程【DBWn】:将数据缓冲区的内容写入到数据文件中。DBWn进程负责将在buffer cache中那些被修改的的数据,也就是脏数据写入磁盘。什么时候开始写入了?
a、当内存不够时,DBWn就会进行写入。
b、每三秒自动进行一次写入
c、检查点CKPT。设置:DW_WRITER_PROCESS用来定义DBWn进程数,commit命令是把记录修改写入日志文件,不是把修改后的数据写入数据文件。
- 日志写进程[LGWR]:将日志缓冲区的内容写入到联机的日志文件中。(劳模,很重要很忙碌的一个进程)。什么时候开始写入了? a、三秒定时唤醒 b、日志缓冲区超过1/3,或日志文件量超过1M c、联机日志切换也会出发LGWR d、用户提交事务时,Commit e、 DBWR执行写入之前
- 系统监控进程【SMON】:
1、负责实例恢复,前滚(Roll Forward)恢复到实例关闭的状态,使用最后一次检查点后的日志进程重做。这时包括提交和未提交的事务。打开数据库,进行回滚(Roll Back):回滚未提交的事务。(oracle承诺commit之后数据不会丢失,现在我们可以大致的了解是如何实现这个承诺,以及在数据的安全性和数据库性能之间的平衡选择。)
2、负责清理临时段,以释放空间
- 检查点进程【CKPT】:维护数据的一致性。检查数据文件和SGA内容的一致性。触发条件是:1联机日志文件切换时2关闭实例(shutdown abort除外)3手工检查点操作(alter system checkpoint)
- 进程监控进程【PMON】:发现用户进程异常终止,并进行清理。释放占用资源。(清理异常终止用户使用的锁)
- 归档进程【ARCn】:当联机日志切换时,把写满的联机日志数据拷贝到归档文件里。(LGWR写日志写到需要覆盖重写的时候,触发ARCH进程去转移日志文件,复制出去形成归档日志文件,以免日志丢失)用于事后数据的恢复
- 数据库文件:
- 日志文件:“先记后写”,重做日志用于记录数据库的变化,当进行例程恢复或介质恢复时需要使用重做日志
- 数据文件:永远存储数据库的数据,包括字典、用户数据(表、索引)、undo数据等。
- 参数文件:定义启动实例所需要的初始化参数,包括文本参数文件(pfile)和服务器参数文件(spfile)
- 控制文件:控制文件用于记录和维护数据库的物理结构,并且每个Oracle数据库至少要包含一个控制文件。
- 口令文件:用于验证特权用户(具有SYSDBA、SYSOPER权限的特殊数据库用户)
- 归档日志(Archive log):是非活动(Inactive)重做日志的备份。